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>