Annotation of embedaddon/confuse/tests/section_getopt.c, revision 1.1
1.1 ! misho 1: #include "check_confuse.h"
! 2: #include <string.h>
! 3:
! 4: int main(void)
! 5: {
! 6: static cfg_opt_t sub_opts[] = {
! 7: CFG_INT("int", 1, CFGF_NONE),
! 8: CFG_END()
! 9: };
! 10:
! 11: cfg_opt_t opts[] = {
! 12: CFG_SEC("single", sub_opts, CFGF_NONE),
! 13: CFG_SEC("multi", sub_opts, CFGF_MULTI),
! 14: CFG_SEC("multi-title", sub_opts, CFGF_TITLE | CFGF_MULTI),
! 15: CFG_SEC("multi-title-no-dupes", sub_opts,
! 16: CFGF_TITLE | CFGF_MULTI | CFGF_NO_TITLE_DUPES),
! 17: CFG_END()
! 18: };
! 19:
! 20: const char *config_data =
! 21: "single { int = 11 }\n"
! 22: "multi { int = 21 }\n"
! 23: "multi { int = 22 }\n"
! 24: "multi { int = 23 }\n"
! 25: "multi-title name { int = 30 }\n"
! 26: "multi-title name { int = 31 }\n"
! 27: "multi-title odd { int = 32 }\n"
! 28: "multi-title-no-dupes name1 { int = 41 }\n"
! 29: "multi-title-no-dupes name2 { int = 42 }\n"
! 30: "multi-title-no-dupes name3 { int = 43 }\n";
! 31:
! 32: int rc;
! 33: cfg_t *cfg = cfg_init(opts, CFGF_NONE);
! 34: cfg_t *sec;
! 35:
! 36: fail_unless(cfg);
! 37:
! 38: rc = cfg_parse_buf(cfg, config_data);
! 39: fail_unless(rc == CFG_SUCCESS);
! 40:
! 41: fail_unless(cfg_addtsec(cfg, "multi-title", "'a-very'silly|option\\title") != NULL);
! 42:
! 43: fail_unless(cfg_getint(cfg, "single|int") == 11);
! 44: fail_unless(cfg_getint(cfg, "multi=0|int") == 21);
! 45: fail_unless(cfg_getint(cfg, "multi=1|int") == 22);
! 46: fail_unless(cfg_getint(cfg, "multi=2|int") == 23);
! 47: fail_unless(cfg_getint(cfg, "multi-title=name|int") == 31);
! 48: fail_unless(cfg_getint(cfg, "multi-title=odd|int") == 32);
! 49: fail_unless(cfg_getint(cfg, "multi-title='\\'a-very\\'silly|option\\\\title'|int") == 1);
! 50: fail_unless(cfg_getint(cfg, "multi-title-no-dupes=name1|int") == 41);
! 51: fail_unless(cfg_getint(cfg, "multi-title-no-dupes=name2|int") == 42);
! 52: fail_unless(cfg_getint(cfg, "multi-title-no-dupes=name3|int") == 43);
! 53: sec = cfg_getsec(cfg, "single");
! 54: fail_unless(cfg_getint(sec, "int") == 11);
! 55: sec = cfg_getsec(cfg, "multi=0");
! 56: fail_unless(cfg_getint(sec, "int") == 21);
! 57: sec = cfg_getsec(cfg, "multi=1");
! 58: fail_unless(cfg_getint(sec, "int") == 22);
! 59: sec = cfg_getsec(cfg, "multi=2");
! 60: fail_unless(cfg_getint(sec, "int") == 23);
! 61: sec = cfg_getsec(cfg, "multi-title=name");
! 62: fail_unless(cfg_getint(sec, "int") == 31);
! 63: sec = cfg_getsec(cfg, "multi-title=odd");
! 64: fail_unless(cfg_getint(sec, "int") == 32);
! 65: sec = cfg_getsec(cfg, "multi-title='\\'a-very\\'silly|option\\\\title'");
! 66: fail_unless(cfg_getint(sec, "int") == 1);
! 67: sec = cfg_getsec(cfg, "multi-title-no-dupes=name1");
! 68: fail_unless(cfg_getint(sec, "int") == 41);
! 69: sec = cfg_getsec(cfg, "multi-title-no-dupes=name2");
! 70: fail_unless(cfg_getint(sec, "int") == 42);
! 71: sec = cfg_getsec(cfg, "multi-title-no-dupes=name3");
! 72: fail_unless(cfg_getint(sec, "int") == 43);
! 73:
! 74: /* for backwards compat */
! 75: fail_unless(cfg_getint(cfg, "multi|int") == 21);
! 76: fail_unless(cfg_getint(cfg, "multi-title|int") == 31);
! 77: fail_unless(cfg_getint(cfg, "multi-title-no-dupes|int") == 41);
! 78: sec = cfg_getsec(cfg, "multi");
! 79: fail_unless(cfg_getint(sec, "int") == 21);
! 80: sec = cfg_getsec(cfg, "multi-title");
! 81: fail_unless(cfg_getint(sec, "int") == 31);
! 82: sec = cfg_getsec(cfg, "multi-title-no-dupes");
! 83: fail_unless(cfg_getint(sec, "int") == 41);
! 84:
! 85: /* expected failures */
! 86: fail_unless(cfg_getopt(cfg, "single=0|int") == NULL);
! 87: fail_unless(cfg_getopt(cfg, "multi=4|int") == NULL);
! 88: fail_unless(cfg_getopt(cfg, "multi-title=0|int") == NULL);
! 89: fail_unless(cfg_getopt(cfg, "multi-title=bad|int") == NULL);
! 90: fail_unless(cfg_getopt(cfg, "multi-title-no-dupes=0|int") == NULL);
! 91: fail_unless(cfg_getopt(cfg, "multi-title-no-dupes=bad|int") == NULL);
! 92: fail_unless(cfg_getsec(cfg, "single=0") == NULL);
! 93: fail_unless(cfg_getsec(cfg, "multi=4") == NULL);
! 94: fail_unless(cfg_getsec(cfg, "multi-title=0") == NULL);
! 95: fail_unless(cfg_getsec(cfg, "multi-title=bad") == NULL);
! 96: fail_unless(cfg_getsec(cfg, "multi-title-no-dupes=0") == NULL);
! 97: fail_unless(cfg_getsec(cfg, "multi-title-no-dupes=bad") == NULL);
! 98:
! 99: cfg_free(cfg);
! 100:
! 101: return 0;
! 102: }
! 103:
! 104: /**
! 105: * Local Variables:
! 106: * indent-tabs-mode: t
! 107: * c-file-style: "linux"
! 108: * End:
! 109: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>