Add more complex query to test
[yaz-moved-to-github.git] / test / test_matchstr.c
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) 1995-2013 Index Data
3  * See the file LICENSE for details.
4  */
5 #if HAVE_CONFIG_H
6 #include <config.h>
7 #endif
8
9 #include <stdio.h>
10 #include <stdlib.h>
11
12 #include <yaz/matchstr.h>
13 #include <yaz/test.h>
14
15 int main (int argc, char **argv)
16 {
17     YAZ_CHECK_INIT(argc, argv);
18
19     YAZ_CHECK(yaz_matchstr("x", "x") == 0);
20     YAZ_CHECK(yaz_matchstr("x", "X") == 0);
21     YAZ_CHECK(yaz_matchstr("a", "b") > 0);
22     YAZ_CHECK(yaz_matchstr("b", "a") > 0);
23     YAZ_CHECK(yaz_matchstr("aa","a") > 0);
24     YAZ_CHECK(yaz_matchstr("a-", "a") > 0);
25     YAZ_CHECK(yaz_matchstr("A-b", "ab") == 0);
26     YAZ_CHECK(yaz_matchstr("A--b", "ab") > 0);
27     YAZ_CHECK(yaz_matchstr("A--b", "a-b") > 0);
28     YAZ_CHECK(yaz_matchstr("A--b", "a--b") == 0);
29     YAZ_CHECK(yaz_matchstr("a123",  "a?") == 0);
30     YAZ_CHECK(yaz_matchstr("a123",   "a1.3") == 0);
31     YAZ_CHECK(yaz_matchstr("a123",   "..?") == 0);
32     YAZ_CHECK(yaz_matchstr("a123",   "a1.") > 0);
33     YAZ_CHECK(yaz_matchstr("a123",   "a...") == 0);
34
35     YAZ_CHECK_EQ(yaz_strncasecmp("a",  "b", 0), 0);
36     YAZ_CHECK_EQ(yaz_strncasecmp("a",  "a", 1),  0);
37     YAZ_CHECK_EQ(yaz_strncasecmp("a",  "a", 2), 0);
38     YAZ_CHECK_EQ(yaz_strncasecmp("a",  "b", 1), -1);
39     YAZ_CHECK_EQ(yaz_strncasecmp("a",  "b", 2), -1);
40     YAZ_CHECK_EQ(yaz_strncasecmp("b",  "a", 1), 1);
41     YAZ_CHECK_EQ(yaz_strncasecmp("b",  "a", 2), 1);
42
43     YAZ_CHECK_EQ(yaz_strncasecmp("bb",  "ba", 1), 0);
44     YAZ_CHECK_EQ(yaz_strncasecmp("bb",  "ba", 2), 1);
45     YAZ_CHECK_EQ(yaz_strncasecmp("ba",  "bb", 2), -1);
46     YAZ_CHECK_EQ(yaz_strncasecmp("ba",  "b", 2), 'a');
47     YAZ_CHECK_EQ(yaz_strncasecmp("b",  "ba", 2), -'a');
48
49     YAZ_CHECK_EQ(yaz_strcasecmp("",  ""), 0);
50     YAZ_CHECK_EQ(yaz_strcasecmp("a",  "a"),  0);
51     YAZ_CHECK_EQ(yaz_strcasecmp("a",  "b"), -1);
52     YAZ_CHECK_EQ(yaz_strcasecmp("b",  "a"), 1);
53
54     YAZ_CHECK_EQ(yaz_strcasecmp("bb",  "ba"), 1);
55     YAZ_CHECK_EQ(yaz_strcasecmp("ba",  "bb"), -1);
56     YAZ_CHECK_EQ(yaz_strcasecmp("ba",  "b"), 'a');
57     YAZ_CHECK_EQ(yaz_strcasecmp("b",  "ba"), -'a');
58
59     YAZ_CHECK_TERM;
60 }
61
62 /*
63  * Local variables:
64  * c-basic-offset: 4
65  * c-file-style: "Stroustrup"
66  * indent-tabs-mode: nil
67  * End:
68  * vim: shiftwidth=4 tabstop=8 expandtab
69  */
70