summaryrefslogtreecommitdiff
path: root/auto_tests/tox_strncasecmp_test.c
diff options
context:
space:
mode:
authorMaxim Biro <nurupo.contributions@gmail.com>2017-02-26 12:56:55 -0500
committerMaxim Biro <nurupo.contributions@gmail.com>2017-03-01 20:43:30 -0500
commitdef92ab029c027af7d9c0f90699e39fff3b48794 (patch)
tree91379898176447a1fe47a341ca915f5166c6b9c6 /auto_tests/tox_strncasecmp_test.c
parent61c3b47bef5d1b3d86b2f948ffb17c5477733916 (diff)
Add test for tox_strncasecmp()
Diffstat (limited to 'auto_tests/tox_strncasecmp_test.c')
-rw-r--r--auto_tests/tox_strncasecmp_test.c193
1 files changed, 193 insertions, 0 deletions
diff --git a/auto_tests/tox_strncasecmp_test.c b/auto_tests/tox_strncasecmp_test.c
new file mode 100644
index 00000000..0acc85fe
--- /dev/null
+++ b/auto_tests/tox_strncasecmp_test.c
@@ -0,0 +1,193 @@
1#ifdef HAVE_CONFIG_H
2#include "config.h"
3#endif
4
5#include <check.h>
6#include <stdint.h>
7#include <stdlib.h>
8#include <string.h>
9#include <sys/types.h>
10#include <time.h>
11
12#include "helpers.h"
13
14#include "../testing/misc_tools.c"
15
16typedef enum {
17 NEGATIVE,
18 ZERO,
19 POSITIVE
20} Comparison;
21
22static const char *Comparison_Str[] = { "NEGATIVE", "ZERO", "POSITIVE" };
23
24void verify(const char *s1, const char *s2, size_t n, Comparison expected)
25{
26 int r = tox_strncasecmp(s1, s2, n);
27 Comparison actual = r < 0 ? NEGATIVE : r == 0 ? ZERO : POSITIVE;
28
29 ck_assert_msg(actual == expected,
30 "tox_strncasecmp(\"%s\", \"%s\", %u) == %s, but expected %s.",
31 s1, s2, n, Comparison_Str[actual], Comparison_Str[expected]);
32}
33
34START_TEST(test_general)
35{
36 // empty strings are equal
37 verify("", "", 100, ZERO);
38 verify("", "", -1, ZERO);
39
40 // ====== Same Case Test Cases ======
41
42 // equal strings with n=0 are equal
43 verify("", "", 0, ZERO);
44 verify("AAA", "AAA", 0, ZERO);
45
46 // unequal strings with n=0 are equal
47 verify("A", "B", 0, ZERO);
48 verify("AAA", "BBB", 0, ZERO);
49 verify("AAA", "BBBBBB", 0 , ZERO);
50 verify("AAAAAA", "BBB", 0, ZERO);
51
52 // equal strings are equal
53 verify("AAA", "AAA", 0, ZERO);
54 verify("AAA", "AAA", 1, ZERO);
55 verify("AAA", "AAA", 2, ZERO);
56 verify("AAA", "AAA", 3, ZERO);
57 verify("AAA", "AAA", 4, ZERO);
58 verify("AAA", "AAA", 5, ZERO);
59 verify("AAA", "AAA", -1, ZERO);
60
61 verify("AAA", "AAAAAA", 0, ZERO);
62 verify("AAA", "AAAAAA", 1, ZERO);
63 verify("AAA", "AAAAAA", 2, ZERO);
64 verify("AAA", "AAAAAA", 3, ZERO);
65 verify("AAA", "AAAAAA", 4, NEGATIVE);
66 verify("AAA", "AAAAAA", 5, NEGATIVE);
67 verify("AAA", "AAAAAA", -1, NEGATIVE);
68
69 verify("AAAAAA", "AAA", 0, ZERO);
70 verify("AAAAAA", "AAA", 1, ZERO);
71 verify("AAAAAA", "AAA", 2, ZERO);
72 verify("AAAAAA", "AAA", 3, ZERO);
73 verify("AAAAAA", "AAA", 4, POSITIVE);
74 verify("AAAAAA", "AAA", 5, POSITIVE);
75 verify("AAAAAA", "AAA", -1, POSITIVE);
76
77 verify("I'm eating wafers and drinking tea.", "I'm eating wafers and drinking tea.", -1, ZERO);
78
79 // unequal strings are equal only up to n
80 verify("AAAB", "AAAA", 0, ZERO);
81 verify("AAAB", "AAAA", 1, ZERO);
82 verify("AAAB", "AAAA", 2, ZERO);
83 verify("AAAB", "AAAA", 3, ZERO);
84 verify("AAAB", "AAAA", 4, POSITIVE);
85 verify("AAAB", "AAAA", 5, POSITIVE);
86 verify("AAAB", "AAAA", -1, POSITIVE);
87
88 verify("AAAA", "AAAB", 0, ZERO);
89 verify("AAAA", "AAAB", 1, ZERO);
90 verify("AAAA", "AAAB", 2, ZERO);
91 verify("AAAA", "AAAB", 3, ZERO);
92 verify("AAAA", "AAAB", 4, NEGATIVE);
93 verify("AAAA", "AAAB", 5, NEGATIVE);
94 verify("AAAA", "AAAB", -1, NEGATIVE);
95
96 verify("The wafers are salty.", "The wafers are sweet.", 16, ZERO);
97 verify("The wafers are salty.", "The wafers are sweet.", 17, NEGATIVE);
98 verify("The wafers are salty.", "The wafers are sweet.", -1, NEGATIVE);
99
100 // the comparison should stop at first mismatch
101 verify("AAABA", "AAAAB", -1, POSITIVE);
102 verify("AAAAB", "AAABA", -1, NEGATIVE);
103
104 // ====== Different Case Test Cases ======
105
106 // equal strings with n=0 are equal
107 verify("", "", 0, ZERO);
108 verify("aaa", "AAA", 0, ZERO);
109
110 // unequal strings with n=0 are equal
111 verify("a", "B", 0, ZERO);
112 verify("aaa", "BBB", 0, ZERO);
113 verify("aaa", "BBBBBB", 0 , ZERO);
114 verify("aaaaaa", "BBB", 0, ZERO);
115
116 // equal strings are equal
117 verify("aaa", "AAA", 0, ZERO);
118 verify("AAA", "aaa", 1, ZERO);
119 verify("aaa", "AAA", 2, ZERO);
120 verify("aaa", "AAA", 3, ZERO);
121 verify("AAA", "aaa", 4, ZERO);
122 verify("AAA", "aaa", 5, ZERO);
123 verify("AAA", "aaa", -1, ZERO);
124
125 verify("aaa", "AAAAAA", 0, ZERO);
126 verify("AAA", "AAAaaa", 1, ZERO);
127 verify("aaA", "aaaAAA", 2, ZERO);
128 verify("AaA", "aAAAAA", 3, ZERO);
129 verify("AAA", "AAAAAA", 4, NEGATIVE);
130 verify("Aaa", "AAaaAA", 5, NEGATIVE);
131 verify("AAA", "AAAAAa", -1, NEGATIVE);
132
133 verify("AAAAAA", "aaa", 0, ZERO);
134 verify("AAAaaa", "AAA", 1, ZERO);
135 verify("aaaAAA", "aaA", 2, ZERO);
136 verify("aAAAAA", "AaA", 3, ZERO);
137 verify("AAAAAA", "AAA", 4, POSITIVE);
138 verify("AAaaAA", "Aaa", 5, POSITIVE);
139 verify("AAAAAa", "AAA", -1, POSITIVE);
140
141 verify("I'm Eating Wafers And Drinking Tea.", "I'm eating wafers and drinking tea.", -1, ZERO);
142
143 // unequal strings are equal only up to n
144 verify("aaaB", "AAAA", 0, ZERO);
145 verify("AaAB", "aAAA", 1, ZERO);
146 verify("aAAB", "AaAA", 2, ZERO);
147 verify("AAAB", "AAaA", 3, ZERO);
148 verify("AAAB", "AAAA", 4, POSITIVE);
149 verify("AAAb", "AAAA", 5, POSITIVE);
150 verify("AAAB", "AAAa", -1, POSITIVE);
151
152 verify("AAAA", "aaaB", 0, ZERO);
153 verify("aAAA", "AaAB", 1, ZERO);
154 verify("AaAA", "aAAB", 2, ZERO);
155 verify("AAaA", "AAAB", 3, ZERO);
156 verify("AAAA", "AAAB", 4, NEGATIVE);
157 verify("AAAA", "AAAb", 5, NEGATIVE);
158 verify("AAAa", "AAAB", -1, NEGATIVE);
159
160 verify("The Wafers Are Salty.", "The wafers are sweet.", 16, ZERO);
161 verify("The Wafers Are Salty.", "The wafers are sweet.", 17, NEGATIVE);
162 verify("The Wafers Are Salty.", "The wafers are sweet.", -1, NEGATIVE);
163
164 // the comparison should stop at first mismatch
165 verify("aAaBA", "AAAAb", -1, POSITIVE);
166 verify("AAAAb", "aAaBA", -1, NEGATIVE);
167}
168END_TEST
169
170static Suite *tox_strncasecmp_suite(void)
171{
172 Suite *s = suite_create("tox_strncasecmp");
173
174 DEFTESTCASE(general);
175
176 return s;
177}
178
179int main(int argc, char *argv[])
180{
181 srand((unsigned int) time(NULL));
182
183 Suite *s = tox_strncasecmp_suite();
184 SRunner *test_runner = srunner_create(s);
185
186 int number_failed = 0;
187 srunner_run_all(test_runner, CK_NORMAL);
188 number_failed = srunner_ntests_failed(test_runner);
189
190 srunner_free(test_runner);
191
192 return number_failed;
193}