Use WRBUF for addinfo member of cql_transform_t
[yaz-moved-to-github.git] / test / test_options.c
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) Index Data
3  * See the file LICENSE for details.
4  */
5 #if HAVE_CONFIG_H
6 #include <config.h>
7 #endif
8
9 #include <string.h>
10 #include <yaz/options.h>
11 #include <yaz/log.h>
12 #include <yaz/test.h>
13
14 static void tst(void)
15 {
16     char *argv[16] = {
17         "program",
18         "-a",
19         "-b",
20         "-",
21         "-cd",
22         "--longa",
23         "-n11",
24         "-n", "12",
25         "--marmelade", "13",
26         "file",
27         "--",
28         "-a",
29         "--b",
30         "other"};
31     int argc = sizeof(argv) / sizeof(*argv);
32     char *arg = 0;
33     const char *desc = "a{longa}b{longb}cdn:m{marmelade}:";
34
35     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 'a');
36     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 'b');
37     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 0);
38     YAZ_CHECK(arg && !strcmp(arg, "-"));
39     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 'c');
40     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 'd');
41     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 'a');
42     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 'n');
43     YAZ_CHECK(arg && !strcmp(arg, "11"));
44     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 'n');
45     YAZ_CHECK(arg && !strcmp(arg, "12"));
46     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 'm');
47     YAZ_CHECK(arg && !strcmp(arg, "13"));
48     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 0);
49     YAZ_CHECK(arg && !strcmp(arg, "file"));
50     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 0);
51     YAZ_CHECK(arg && !strcmp(arg, "-a"));
52     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 0);
53     YAZ_CHECK(arg && !strcmp(arg, "--b"));
54     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), 0);
55     YAZ_CHECK(arg && !strcmp(arg, "other"));
56     YAZ_CHECK_EQ(options(desc, argv, argc, &arg), YAZ_OPTIONS_EOF);
57 }
58
59 int main(int argc, char **argv)
60 {
61     YAZ_CHECK_INIT(argc, argv);
62     YAZ_CHECK_LOG();
63     tst();
64     YAZ_CHECK_TERM;
65 }
66 /*
67  * Local variables:
68  * c-basic-offset: 4
69  * c-file-style: "Stroustrup"
70  * indent-tabs-mode: nil
71  * End:
72  * vim: shiftwidth=4 tabstop=8 expandtab
73  */
74