ieee1275: split up grub_machine_get_bootlocation
[grub.git] / tests / cmp_unit_test.c
1 /*
2  *  GRUB  --  GRand Unified Bootloader
3  *  Copyright (C) 2012 Free Software Foundation, Inc.
4  *
5  *  GRUB is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  GRUB is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #include <stdio.h>
20 #include <string.h>
21 #include <grub/test.h>
22 #include <grub/misc.h>
23
24 GRUB_MOD_LICENSE ("GPLv3+");
25
26 #define MSG "cmp test failed"
27
28 /* Functional test main method.  */
29 static void
30 cmp_test (void)
31 {
32   const char *s1 = "a";
33   const char *s2 = "aa";
34   const char *s3 = "รข";
35
36   grub_test_assert (grub_strlen (s1) == 1, MSG);
37   grub_test_assert (grub_strlen (s2) == 2, MSG);
38   grub_test_assert (grub_strlen (s3) == 2, MSG);
39
40   grub_test_assert (grub_strcmp (s1, s1) == 0, MSG);
41   grub_test_assert (grub_strcmp (s1, s2) < 0, MSG);
42   grub_test_assert (grub_strcmp (s1, s3) < 0, MSG);
43
44   grub_test_assert (grub_strcmp (s2, s1) > 0, MSG);
45   grub_test_assert (grub_strcmp (s2, s2) == 0, MSG);
46   grub_test_assert (grub_strcmp (s2, s3) < 0, MSG);
47
48   grub_test_assert (grub_strcmp (s3, s1) > 0, MSG);
49   grub_test_assert (grub_strcmp (s3, s2) > 0, MSG);
50   grub_test_assert (grub_strcmp (s3, s3) == 0, MSG);
51
52   grub_test_assert (grub_strcasecmp (s1, s1) == 0, MSG);
53   grub_test_assert (grub_strcasecmp (s1, s2) < 0, MSG);
54   grub_test_assert (grub_strcasecmp (s1, s3) < 0, MSG);
55
56   grub_test_assert (grub_strcasecmp (s2, s1) > 0, MSG);
57   grub_test_assert (grub_strcasecmp (s2, s2) == 0, MSG);
58   grub_test_assert (grub_strcasecmp (s2, s3) < 0, MSG);
59
60   grub_test_assert (grub_strcasecmp (s3, s1) > 0, MSG);
61   grub_test_assert (grub_strcasecmp (s3, s2) > 0, MSG);
62   grub_test_assert (grub_strcasecmp (s3, s3) == 0, MSG);
63
64   grub_test_assert (grub_memcmp (s1, s1, 2) == 0, MSG);
65   grub_test_assert (grub_memcmp (s1, s2, 2) < 0, MSG);
66   grub_test_assert (grub_memcmp (s1, s3, 2) < 0, MSG);
67
68   grub_test_assert (grub_memcmp (s2, s1, 2) > 0, MSG);
69   grub_test_assert (grub_memcmp (s2, s2, 2) == 0, MSG);
70   grub_test_assert (grub_memcmp (s2, s3, 2) < 0, MSG);
71
72   grub_test_assert (grub_memcmp (s3, s1, 2) > 0, MSG);
73   grub_test_assert (grub_memcmp (s3, s2, 2) > 0, MSG);
74   grub_test_assert (grub_memcmp (s3, s3, 2) == 0, MSG);
75
76   grub_test_assert (grub_memcmp (s1, s1, 1) == 0, MSG);
77   grub_test_assert (grub_memcmp (s1, s2, 1) == 0, MSG);
78   grub_test_assert (grub_memcmp (s1, s3, 1) < 0, MSG);
79
80   grub_test_assert (grub_memcmp (s2, s1, 1) == 0, MSG);
81   grub_test_assert (grub_memcmp (s2, s2, 1) == 0, MSG);
82   grub_test_assert (grub_memcmp (s2, s3, 1) < 0, MSG);
83
84   grub_test_assert (grub_memcmp (s3, s1, 1) > 0, MSG);
85   grub_test_assert (grub_memcmp (s3, s2, 1) > 0, MSG);
86   grub_test_assert (grub_memcmp (s3, s3, 1) == 0, MSG);
87
88   grub_test_assert (grub_strncmp (s1, s1, 2) == 0, MSG);
89   grub_test_assert (grub_strncmp (s1, s2, 2) < 0, MSG);
90   grub_test_assert (grub_strncmp (s1, s3, 2) < 0, MSG);
91
92   grub_test_assert (grub_strncmp (s2, s1, 2) > 0, MSG);
93   grub_test_assert (grub_strncmp (s2, s2, 2) == 0, MSG);
94   grub_test_assert (grub_strncmp (s2, s3, 2) < 0, MSG);
95
96   grub_test_assert (grub_strncmp (s3, s1, 2) > 0, MSG);
97   grub_test_assert (grub_strncmp (s3, s2, 2) > 0, MSG);
98   grub_test_assert (grub_strncmp (s3, s3, 2) == 0, MSG);
99
100   grub_test_assert (grub_strncmp (s1, s1, 1) == 0, MSG);
101   grub_test_assert (grub_strncmp (s1, s2, 1) == 0, MSG);
102   grub_test_assert (grub_strncmp (s1, s3, 1) < 0, MSG);
103
104   grub_test_assert (grub_strncmp (s2, s1, 1) == 0, MSG);
105   grub_test_assert (grub_strncmp (s2, s2, 1) == 0, MSG);
106   grub_test_assert (grub_strncmp (s2, s3, 1) < 0, MSG);
107
108   grub_test_assert (grub_strncmp (s3, s1, 1) > 0, MSG);
109   grub_test_assert (grub_strncmp (s3, s2, 1) > 0, MSG);
110   grub_test_assert (grub_strncmp (s3, s3, 1) == 0, MSG);
111
112   grub_test_assert (grub_strncasecmp (s1, s1, 2) == 0, MSG);
113   grub_test_assert (grub_strncasecmp (s1, s2, 2) < 0, MSG);
114   grub_test_assert (grub_strncasecmp (s1, s3, 2) < 0, MSG);
115
116   grub_test_assert (grub_strncasecmp (s2, s1, 2) > 0, MSG);
117   grub_test_assert (grub_strncasecmp (s2, s2, 2) == 0, MSG);
118   grub_test_assert (grub_strncasecmp (s2, s3, 2) < 0, MSG);
119
120   grub_test_assert (grub_strncasecmp (s3, s1, 2) > 0, MSG);
121   grub_test_assert (grub_strncasecmp (s3, s2, 2) > 0, MSG);
122   grub_test_assert (grub_strncasecmp (s3, s3, 2) == 0, MSG);
123
124   grub_test_assert (grub_strncasecmp (s1, s1, 1) == 0, MSG);
125   grub_test_assert (grub_strncasecmp (s1, s2, 1) == 0, MSG);
126   grub_test_assert (grub_strncasecmp (s1, s3, 1) < 0, MSG);
127
128   grub_test_assert (grub_strncasecmp (s2, s1, 1) == 0, MSG);
129   grub_test_assert (grub_strncasecmp (s2, s2, 1) == 0, MSG);
130   grub_test_assert (grub_strncasecmp (s2, s3, 1) < 0, MSG);
131
132   grub_test_assert (grub_strncasecmp (s3, s1, 1) > 0, MSG);
133   grub_test_assert (grub_strncasecmp (s3, s2, 1) > 0, MSG);
134   grub_test_assert (grub_strncasecmp (s3, s3, 1) == 0, MSG);
135
136   grub_test_assert (strlen (s1) == 1, MSG);
137   grub_test_assert (strlen (s2) == 2, MSG);
138   grub_test_assert (strlen (s3) == 2, MSG);
139
140   grub_test_assert (strcmp (s1, s1) == 0, MSG);
141   grub_test_assert (strcmp (s1, s2) < 0, MSG);
142   grub_test_assert (strcmp (s1, s3) < 0, MSG);
143
144   grub_test_assert (strcmp (s2, s1) > 0, MSG);
145   grub_test_assert (strcmp (s2, s2) == 0, MSG);
146   grub_test_assert (strcmp (s2, s3) < 0, MSG);
147
148   grub_test_assert (strcmp (s3, s1) > 0, MSG);
149   grub_test_assert (strcmp (s3, s2) > 0, MSG);
150   grub_test_assert (strcmp (s3, s3) == 0, MSG);
151
152   grub_test_assert (memcmp (s1, s1, 2) == 0, MSG);
153   grub_test_assert (memcmp (s1, s2, 2) < 0, MSG);
154   grub_test_assert (memcmp (s1, s3, 2) < 0, MSG);
155
156   grub_test_assert (memcmp (s2, s1, 2) > 0, MSG);
157   grub_test_assert (memcmp (s2, s2, 2) == 0, MSG);
158   grub_test_assert (memcmp (s2, s3, 2) < 0, MSG);
159
160   grub_test_assert (memcmp (s3, s1, 2) > 0, MSG);
161   grub_test_assert (memcmp (s3, s2, 2) > 0, MSG);
162   grub_test_assert (memcmp (s3, s3, 2) == 0, MSG);
163
164   grub_test_assert (memcmp (s1, s1, 1) == 0, MSG);
165   grub_test_assert (memcmp (s1, s2, 1) == 0, MSG);
166   grub_test_assert (memcmp (s1, s3, 1) < 0, MSG);
167
168   grub_test_assert (memcmp (s2, s1, 1) == 0, MSG);
169   grub_test_assert (memcmp (s2, s2, 1) == 0, MSG);
170   grub_test_assert (memcmp (s2, s3, 1) < 0, MSG);
171
172   grub_test_assert (memcmp (s3, s1, 1) > 0, MSG);
173   grub_test_assert (memcmp (s3, s2, 1) > 0, MSG);
174   grub_test_assert (memcmp (s3, s3, 1) == 0, MSG);
175
176   grub_test_assert (strncmp (s1, s1, 2) == 0, MSG);
177   grub_test_assert (strncmp (s1, s2, 2) < 0, MSG);
178   grub_test_assert (strncmp (s1, s3, 2) < 0, MSG);
179
180   grub_test_assert (strncmp (s2, s1, 2) > 0, MSG);
181   grub_test_assert (strncmp (s2, s2, 2) == 0, MSG);
182   grub_test_assert (strncmp (s2, s3, 2) < 0, MSG);
183
184   grub_test_assert (strncmp (s3, s1, 2) > 0, MSG);
185   grub_test_assert (strncmp (s3, s2, 2) > 0, MSG);
186   grub_test_assert (strncmp (s3, s3, 2) == 0, MSG);
187
188   grub_test_assert (strncmp (s1, s1, 1) == 0, MSG);
189   grub_test_assert (strncmp (s1, s2, 1) == 0, MSG);
190   grub_test_assert (strncmp (s1, s3, 1) < 0, MSG);
191
192   grub_test_assert (strncmp (s2, s1, 1) == 0, MSG);
193   grub_test_assert (strncmp (s2, s2, 1) == 0, MSG);
194   grub_test_assert (strncmp (s2, s3, 1) < 0, MSG);
195
196   grub_test_assert (strncmp (s3, s1, 1) > 0, MSG);
197   grub_test_assert (strncmp (s3, s2, 1) > 0, MSG);
198   grub_test_assert (strncmp (s3, s3, 1) == 0, MSG);
199
200   grub_test_assert (strncasecmp (s1, s1, 2) == 0, MSG);
201   grub_test_assert (strncasecmp (s1, s2, 2) < 0, MSG);
202   grub_test_assert (strncasecmp (s1, s3, 2) < 0, MSG);
203
204   grub_test_assert (strncasecmp (s2, s1, 2) > 0, MSG);
205   grub_test_assert (strncasecmp (s2, s2, 2) == 0, MSG);
206   grub_test_assert (strncasecmp (s2, s3, 2) < 0, MSG);
207
208   grub_test_assert (strncasecmp (s3, s1, 2) > 0, MSG);
209   grub_test_assert (strncasecmp (s3, s2, 2) > 0, MSG);
210   grub_test_assert (strncasecmp (s3, s3, 2) == 0, MSG);
211
212   grub_test_assert (strncasecmp (s1, s1, 1) == 0, MSG);
213   grub_test_assert (strncasecmp (s1, s2, 1) == 0, MSG);
214   grub_test_assert (strncasecmp (s1, s3, 1) < 0, MSG);
215
216   grub_test_assert (strncasecmp (s2, s1, 1) == 0, MSG);
217   grub_test_assert (strncasecmp (s2, s2, 1) == 0, MSG);
218   grub_test_assert (strncasecmp (s2, s3, 1) < 0, MSG);
219
220   grub_test_assert (strncasecmp (s3, s1, 1) > 0, MSG);
221   grub_test_assert (strncasecmp (s3, s2, 1) > 0, MSG);
222   grub_test_assert (strncasecmp (s3, s3, 1) == 0, MSG);
223 }
224
225 /* Register example_test method as a functional test.  */
226 GRUB_UNIT_TEST ("cmp_test", cmp_test);