]> git.cryptolib.org Git - avr-crypto-lib.git/blob - gmsl-tests
[keccak-asm] keccak_ctx2hash in asm
[avr-crypto-lib.git] / gmsl-tests
1 # ----------------------------------------------------------------------------
2 #
3 # GNU Make Standard Library (GMSL) Test Suite
4 #
5 # Test suite for the GMSL
6 #
7 # Copyright (c) 2005-2007 John Graham-Cumming
8 #
9 # This file is part of GMSL
10 #
11 # Redistribution and use in source and binary forms, with or without
12 # modification, are permitted provided that the following conditions
13 # are met:
14 #
15 # Redistributions of source code must retain the above copyright
16 # notice, this list of conditions and the following disclaimer.
17
18 # Redistributions in binary form must reproduce the above copyright
19 # notice, this list of conditions and the following disclaimer in the
20 # documentation and/or other materials provided with the distribution.
21 #
22 # Neither the name of the John Graham-Cumming nor the names of its
23 # contributors may be used to endorse or promote products derived from
24 # this software without specific prior written permission.
25 #
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
30 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
32 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 # POSSIBILITY OF SUCH DAMAGE.
38 #
39 # ----------------------------------------------------------------------------
40
41 .PHONY: all
42 all:
43         @echo
44         @echo Test Summary
45         @echo ------------
46         @echo "$(call int_decode,$(passed)) tests passed; $(call int_decode,$(failed)) tests failed"
47
48 include gmsl
49
50 passed :=
51 failed :=
52
53 ECHO := /bin/echo
54
55 start_test = $(shell $(ECHO) -n "Testing '$1': " >&2)$(eval current_test := OK)
56 stop_test  = $(shell $(ECHO) " $(current_test)" >&2)
57 test_pass = .$(eval passed := $(call int_inc,$(passed)))
58 test_fail = X$(eval failed := $(call int_inc,$(failed)))$(eval current_test := ERROR '$1' != '$2')
59 test_assert = $(if $(filter undefined,$(origin 2)),$(eval 2 :=))$(shell $(ECHO) -n $(if $(call seq,$1,$2),$(call test_pass,$1,$2),$(call test_fail,$1,$2)) >&2)
60
61 $(call start_test,not)
62 $(call test_assert,$(call not,$(true)),$(false))
63 $(call test_assert,$(call not,$(false)),$(true))
64 $(call stop_test)
65
66 $(call start_test,or)
67 $(call test_assert,$(call or,$(true),$(true)),$(true))
68 $(call test_assert,$(call or,$(true),$(false)),$(true))
69 $(call test_assert,$(call or,$(false),$(true)),$(true))
70 $(call test_assert,$(call or,$(false),$(false)),$(false))
71 $(call stop_test)
72
73 $(call start_test,and)
74 $(call test_assert,$(call and,$(true),$(true)),$(true))
75 $(call test_assert,$(call and,$(true),$(false)),$(false))
76 $(call test_assert,$(call and,$(false),$(true)),$(false))
77 $(call test_assert,$(call and,$(false),$(false)),$(false))
78 $(call stop_test)
79
80 $(call start_test,xor)
81 $(call test_assert,$(call xor,$(true),$(true)),$(false))
82 $(call test_assert,$(call xor,$(true),$(false)),$(true))
83 $(call test_assert,$(call xor,$(false),$(true)),$(true))
84 $(call test_assert,$(call xor,$(false),$(false)),$(false))
85 $(call stop_test)
86
87 $(call start_test,nand)
88 $(call test_assert,$(call nand,$(true),$(true)),$(false))
89 $(call test_assert,$(call nand,$(true),$(false)),$(true))
90 $(call test_assert,$(call nand,$(false),$(true)),$(true))
91 $(call test_assert,$(call nand,$(false),$(false)),$(true))
92 $(call stop_test)
93
94 $(call start_test,nor)
95 $(call test_assert,$(call nor,$(true),$(true)),$(false))
96 $(call test_assert,$(call nor,$(true),$(false)),$(false))
97 $(call test_assert,$(call nor,$(false),$(true)),$(false))
98 $(call test_assert,$(call nor,$(false),$(false)),$(true))
99 $(call stop_test)
100
101 $(call start_test,xnor)
102 $(call test_assert,$(call xnor,$(true),$(true)),$(true))
103 $(call test_assert,$(call xnor,$(true),$(false)),$(false))
104 $(call test_assert,$(call xnor,$(false),$(true)),$(false))
105 $(call test_assert,$(call xnor,$(false),$(false)),$(true))
106 $(call stop_test)
107
108 $(call start_test,first)
109 $(call test_assert,$(call first,1 2 3),1)
110 $(call test_assert,$(call first,1),1)
111 $(call test_assert,$(call first,),)
112 $(call stop_test)
113
114 $(call start_test,last)
115 $(call test_assert,$(call last,1 2 3),3)
116 $(call test_assert,$(call last,1),1)
117 $(call test_assert,$(call last,),)
118 $(call stop_test)
119
120 $(call start_test,rest)
121 $(call test_assert,$(call rest,1 2 3),2 3)
122 $(call test_assert,$(call rest,1),)
123 $(call test_assert,$(call rest,),)
124 $(call stop_test)
125
126 $(call start_test,chop)
127 $(call test_assert,$(call chop,1 2 3),1 2)
128 $(call test_assert,$(call chop,1 2 3 4),1 2 3)
129 $(call test_assert,$(call chop,1),)
130 $(call test_assert,$(call chop,),)
131 $(call stop_test)
132
133 $(call start_test,length)
134 $(call test_assert,$(call length,1 2 3),3)
135 $(call test_assert,$(call length,1 2 3 4),4)
136 $(call test_assert,$(call length,1),1)
137 $(call test_assert,$(call length,),0)
138 $(call stop_test)
139
140 $(call start_test,map)
141 $(call test_assert,$(call map,origin,__undefined map MAKE),undefined file default)
142 $(call test_assert,$(call map,origin,),)
143 $(call stop_test)
144
145 joinem = $1$2
146 $(call start_test,pairmap)
147 $(call test_assert,$(call pairmap,addsuffix,2 1 3,a b c),a2 b1 c3)
148 $(call test_assert,$(call pairmap,addprefix,2 1 3,a b c d),2a 1b 3c d)
149 $(call test_assert,$(call pairmap,addprefix,2 1 3 4,a b c),2a 1b 3c)
150 $(call test_assert,$(call pairmap,joinem,2 1 3 4,a b c),2a 1b 3c 4)
151 $(call stop_test)
152
153 $(call start_test,seq)
154 $(call test_assert,$(call seq,abc,abc),T)
155 $(call test_assert,$(call seq,x,),)
156 $(call test_assert,$(call seq,,x),)
157 $(call test_assert,$(call seq,x,x),T)
158 $(call test_assert,$(call seq,a%c,abc),)
159 $(call test_assert,$(call seq,abc,a%c),)
160 $(call test_assert,$(call seq,abc,ABC),)
161 $(call test_assert,$(call seq,abc,),)
162 $(call test_assert,$(call seq,,),T)
163 $(call test_assert,$(call seq,a b c,a b c),T)
164 $(call test_assert,$(call seq,aa% bb% cc,aa% bb% cc),T)
165 $(call test_assert,$(call seq,aa% bb% cc,aa% bb cc),)
166 $(call test_assert,$(call seq,aa% bb% cc,xx yy zz),)
167 $(call stop_test)
168
169 $(call start_test,sne)
170 $(call test_assert,$(call sne,abc,abc),)
171 $(call test_assert,$(call sne,x,),T)
172 $(call test_assert,$(call sne,,x),T)
173 $(call test_assert,$(call sne,x,x),)
174 $(call test_assert,$(call sne,abc,ABC),T)
175 $(call test_assert,$(call sne,abc,),T)
176 $(call test_assert,$(call sne,,),)
177 $(call test_assert,$(call sne,a b c,a b c),)
178 $(call test_assert,$(call sne,aa% bb% cc,aa% bb% cc),)
179 $(call test_assert,$(call sne,aa% bb% cc,aa% bb cc),T)
180 $(call stop_test)
181
182 $(call start_test,strlen)
183 $(call test_assert,$(call strlen,),0)
184 $(call test_assert,$(call strlen,a),1)
185 $(call test_assert,$(call strlen,a b),3)
186 $(call test_assert,$(call strlen,a ),2)
187 $(call test_assert,$(call strlen, a),2)
188 $(call test_assert,$(call strlen,  ),2)
189 $(call test_assert,$(call strlen,   ),3)
190 $(call test_assert,$(call strlen,    ),4)
191 $(call stop_test)
192
193 $(call start_test,substr)
194 $(call test_assert,$(call substr,some string,1,1),s)
195 $(call test_assert,$(call substr,some string,1,2),so)
196 $(call test_assert,$(call substr,some string,1,3),som)
197 $(call test_assert,$(call substr,some string,1,4),some)
198 $(call test_assert,$(call substr,some string,1,5),some )
199 $(call test_assert,$(call substr,some string,1,6),some s)
200 $(call test_assert,$(call substr,some string,5,5), )
201 $(call test_assert,$(call substr,some string,5,6), s)
202 $(call test_assert,$(call substr,some string,5,7), st)
203 $(call test_assert,$(call substr,some string,5,8), str)
204 $(call test_assert,$(call substr,some string,1,100),some string)
205 $(call stop_test)
206
207 $(call start_test,lc)
208 $(call test_assert,$(call lc,The Quick Brown Fox),the quick brown fox)
209 $(call test_assert,$(call lc,the1 quick2 brown3 fox4),the1 quick2 brown3 fox4)
210 $(call test_assert,$(call lc,The_),the_)
211 $(call test_assert,$(call lc,),)
212 $(call stop_test)
213
214 $(call start_test,uc)
215 $(call test_assert,$(call uc,The Quick Brown Fox),THE QUICK BROWN FOX)
216 $(call test_assert,$(call uc,the1 quick2 brown3 fox4),THE1 QUICK2 BROWN3 FOX4)
217 $(call test_assert,$(call uc,The_),THE_)
218 $(call test_assert,$(call uc,),)
219 $(call stop_test)
220
221 $(call start_test,tr)
222 $(call test_assert,$(call tr,A B C,1 2 3,CAPITAL),31PIT1L)
223 $(call test_assert,$(call tr,a b c,1 2 3,CAPITAL),CAPITAL)
224 $(call test_assert,$(call tr,E L I,3 1 1,I AM ELITE),1 AM 311T3)
225 $(call stop_test)
226
227 $(call start_test,leq)
228 $(call test_assert,$(call leq,1 2 3,1 2 3),T)
229 $(call test_assert,$(call leq,1 2 3,1 2 3 4),)
230 $(call test_assert,$(call leq,1 2 3 4,1 2 3),)
231 $(call test_assert,$(call leq,1,1),T)
232 $(call test_assert,$(call leq,,),T)
233 $(call stop_test)
234
235 $(call start_test,lne)
236 $(call test_assert,$(call lne,1 2 3,1 2 3),)
237 $(call test_assert,$(call lne,1 2 3,1 2 3 4),T)
238 $(call test_assert,$(call lne,1 2 3 4,1 2 3),T)
239 $(call test_assert,$(call lne,1,1),)
240 $(call test_assert,$(call lne,,),)
241 $(call stop_test)
242
243 $(call start_test,empty_set)
244 $(call test_assert,$(empty_set),)
245 $(call test_assert,$(empty_set),$(call set_create,))
246 $(call stop_test)
247
248 $(call start_test,set_create)
249 $(call test_assert,$(call set_create,),)
250 $(call test_assert,$(call set_create,1 2 2 3),1 2 3)
251 $(call test_assert,$(call set_create,2 1 1 2 2 3),1 2 3)
252 $(call test_assert,$(call set_create,1),1)
253 $(call stop_test)
254
255 $(call start_test,set_insert)
256 $(call test_assert,$(call set_insert,1,$(empty_set)),1)
257 $(call test_assert,$(call set_insert,1,$(call set_create,1)),1)
258 $(call test_assert,$(call set_insert,1,$(call set_create,1 2)),1 2)
259 $(call test_assert,$(call set_insert,0,$(call set_create,1 2)),0 1 2)
260 $(call stop_test)
261
262 $(call start_test,set_remove)
263 $(call test_assert,$(call set_remove,1,$(empty_set)),$(empty_set))
264 $(call test_assert,$(call set_remove,1,$(call set_create,1 2)),2)
265 $(call test_assert,$(call set_remove,1,$(call set_create,1 11 2)),11 2)
266 $(call test_assert,$(call set_remove,0,$(call set_create,1 2)),1 2)
267 $(call stop_test)
268
269 $(call start_test,set_is_member)
270 $(call test_assert,$(call set_is_member,1,$(empty_set)),)
271 $(call test_assert,$(call set_is_member,1,$(call set_create,2 3)),)
272 $(call test_assert,$(call set_is_member,1,$(call set_create,1 2 3)),T)
273 $(call test_assert,$(call set_is_member,1,$(call set_create,1)),T)
274 $(call stop_test)
275
276 $(call start_test,set_union)
277 $(call test_assert,$(call set_union,,),)
278 $(call test_assert,$(call set_union,1 2,),1 2)
279 $(call test_assert,$(call set_union,,3 4),3 4)
280 $(call test_assert,$(call set_union,1 2,3 4),1 2 3 4)
281 $(call test_assert,$(call set_union,1 2 3,3 4 5),1 2 3 4 5)
282 $(call stop_test)
283
284 $(call start_test,set_intersection)
285 $(call test_assert,$(call set_intersection,,),)
286 $(call test_assert,$(call set_intersection,1 2,),)
287 $(call test_assert,$(call set_intersection,,3 4),)
288 $(call test_assert,$(call set_intersection,1 2,3 4),)
289 $(call test_assert,$(call set_intersection,1 2 3 4,3 4 5),3 4)
290 $(call stop_test)
291
292 $(call start_test,set_is_subset)
293 $(call test_assert,$(call set_is_subset,,),T)
294 $(call test_assert,$(call set_is_subset,1 2,),)
295 $(call test_assert,$(call set_is_subset,,3 4),T)
296 $(call test_assert,$(call set_is_subset,1 2,3 4),)
297 $(call test_assert,$(call set_is_subset,1 2,1 2 3 4 5),T)
298 $(call test_assert,$(call set_is_subset,1 2,1 2),T)
299 $(call test_assert,$(call set_is_subset,1 2,1 3 4 5),)
300 $(call stop_test)
301
302 $(call start_test,set_equal)
303 $(call test_assert,$(call set_equal,,),T)
304 $(call test_assert,$(call set_equal,1,),)
305 $(call test_assert,$(call set_equal,,1),)
306 $(call test_assert,$(call set_equal,1,1),T)
307 $(call test_assert,$(call set_equal,1 2,),)
308 $(call test_assert,$(call set_equal,,1 2),)
309 $(call test_assert,$(call set_equal,1 2,1 2 3),)
310 $(call stop_test)
311
312 $(call start_test,int_encode)
313 $(call test_assert,$(call int_encode,0),)
314 $(call test_assert,$(call int_encode,1),x)
315 $(call test_assert,$(call int_encode,2),x x)
316 $(call test_assert,$(call int_encode,10),x x x x x x x x x x)
317 $(call stop_test)
318
319 $(call start_test,int_decode)
320 $(call test_assert,$(call int_decode,),0)
321 $(call test_assert,$(call int_decode,x),1)
322 $(call test_assert,$(call int_decode,x x),2)
323 $(call test_assert,$(call int_decode,x x x x x x x x x x),10)
324 $(call stop_test)
325
326 $(call start_test,int_plus)
327 $(call test_assert,$(call int_plus,$(call int_encode,3),$(call int_encode,4)),$(call int_encode,7))
328 $(call test_assert,$(call int_plus,$(call int_encode,0),$(call int_encode,4)),$(call int_encode,4))
329 $(call test_assert,$(call int_plus,$(call int_encode,3),$(call int_encode,0)),$(call int_encode,3))
330 $(call test_assert,$(call int_plus,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0))
331 $(call test_assert,$(call int_plus,$(call int_encode,1),$(call int_encode,0)),$(call int_encode,1))
332 $(call stop_test)
333
334 $(call start_test,plus)
335 $(call test_assert,$(call plus,3,4),7)
336 $(call test_assert,$(call plus,4,3),7)
337 $(call test_assert,$(call plus,0,4),4)
338 $(call test_assert,$(call plus,3,0),3)
339 $(call test_assert,$(call plus,0,0),0)
340 $(call stop_test)
341
342 __gmsl_warning = $1
343 $(call start_test,int_subtract)
344 $(call test_assert,$(call int_subtract,$(call int_encode,3),$(call int_encode,4)),Subtraction underflow)
345 $(call test_assert,$(call int_subtract,$(call int_encode,4),$(call int_encode,3)),$(call int_encode,1))
346 $(call test_assert,$(call int_subtract,$(call int_encode,3),$(call int_encode,0)),$(call int_encode,3))
347 $(call test_assert,$(call int_subtract,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0))
348 $(call test_assert,$(call int_subtract,$(call int_encode,1),$(call int_encode,0)),$(call int_encode,1))
349 $(call stop_test)
350
351 __gmsl_warning = x x x x x x x x x x
352 $(call start_test,subtract)
353 $(call test_assert,$(call subtract,3,4),10)
354 $(call test_assert,$(call subtract,4,3),1)
355 $(call test_assert,$(call subtract,3,0),3)
356 $(call test_assert,$(call subtract,0,0),0)
357 $(call stop_test)
358
359 $(call start_test,int_multiply)
360 $(call test_assert,$(call int_multiply,$(call int_encode,3),$(call int_encode,4)),$(call int_encode,12))
361 $(call test_assert,$(call int_multiply,$(call int_encode,4),$(call int_encode,3)),$(call int_encode,12))
362 $(call test_assert,$(call int_multiply,$(call int_encode,3),$(call int_encode,0)),$(call int_encode,0))
363 $(call test_assert,$(call int_multiply,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0))
364 $(call test_assert,$(call int_multiply,$(call int_encode,1),$(call int_encode,0)),$(call int_encode,0))
365 $(call stop_test)
366
367 $(call start_test,multiply)
368 $(call test_assert,$(call multiply,3,4),12)
369 $(call test_assert,$(call multiply,4,3),12)
370 $(call test_assert,$(call multiply,3,0),0)
371 $(call test_assert,$(call multiply,0,3),0)
372 $(call test_assert,$(call multiply,0,0),0)
373 $(call stop_test)
374
375 __gmsl_error = $1
376 $(call start_test,int_divide)
377 $(call test_assert,$(call int_divide,$(call int_encode,3),$(call int_encode,4)),$(call int_encode,0))
378 $(call test_assert,$(call int_divide,$(call int_encode,4),$(call int_encode,3)),$(call int_encode,1))
379 $(call test_assert,$(call int_divide,$(call int_encode,31),$(call int_encode,3)),$(call int_encode,10))
380 $(call test_assert,$(call int_divide,$(call int_encode,30),$(call int_encode,3)),$(call int_encode,10))
381 $(call test_assert,$(call int_divide,$(call int_encode,29),$(call int_encode,3)),$(call int_encode,9))
382 $(call test_assert,$(call int_divide,$(call int_encode,0),$(call int_encode,1)),$(call int_encode,0))
383 $(call test_assert,$(call int_divide,$(call int_encode,1),$(call int_encode,0)),Division by zero)
384 $(call stop_test)
385
386 __gmsl_error = x x x x x x x x x x
387 $(call start_test,divide)
388 $(call test_assert,$(call divide,3,4),0)
389 $(call test_assert,$(call divide,4,3),1)
390 $(call test_assert,$(call divide,21,2),10)
391 $(call test_assert,$(call divide,20,2),10)
392 $(call test_assert,$(call divide,19,2),9)
393 $(call test_assert,$(call divide,1,0),10)
394 $(call stop_test)
395
396 $(call start_test,associative array)
397 $(call test_assert,$(call get,myarray,key1),)
398 $(call set,myarray,key1,value1)
399 $(call test_assert,$(call get,myarray,key1),value1)
400 $(call test_assert,$(call get,myarray,key2),)
401 $(call test_assert,$(call get,myarray1,key1),)
402 $(call test_assert,$(call defined,myarray,key1),T)
403 $(call test_assert,$(call defined,myarray,key2),)
404 $(call test_assert,$(call defined,myarray1,key1),)
405 $(call set,myarray,key2,value2)
406 $(call test_assert,$(call keys,myarray),key1 key2)
407 $(call test_assert,$(call keys,myarray1),)
408 $(call stop_test)
409
410 $(call start_test,named stack)
411 $(call test_assert,$(call pop,mystack),)
412 $(call test_assert,$(call push,mystack,e2))
413 $(call push,mystack,e1)
414 $(call test_assert,$(call pop,mystack),e1)
415 $(call test_assert,$(call pop,mystack),e2)
416 $(call push,mystack,f3)
417 $(call push,mystack,f1)
418 $(call test_assert,$(call pop,mystack),f1)
419 $(call push,mystack,f2)
420 $(call test_assert,$(call peek,mystack),f2)
421 $(call test_assert,$(call depth,mystack),2)
422 $(call test_assert,$(call pop,mystack),f2)
423 $(call test_assert,$(call depth,mystack),1)
424 $(call test_assert,$(call pop,myotherstack),)
425 $(call stop_test)
426
427 $(call start_test,reverse)
428 $(call test_assert,$(call reverse,),)
429 $(call test_assert,$(call reverse,1),1)
430 $(call test_assert,$(call reverse,1 2),2 1)
431 $(call test_assert,$(call reverse,1 2 3),3 2 1)
432 $(call stop_test)
433
434 $(call start_test,uniq)
435 $(call test_assert,$(call uniq,),)
436 $(call test_assert,$(call uniq,a),a)
437 $(call test_assert,$(call uniq,a a),a)
438 $(call test_assert,$(call uniq,a aa),a aa)
439 $(call test_assert,$(call uniq,a aa a),a aa)
440 $(call test_assert,$(call uniq,a b ba ab b a a ba a),a b ba ab)
441 $(call stop_test)
442
443 c:=,
444 $(call start_test,split)
445 $(call test_assert,$(call split,$c,comma$cseparated$cstring),comma separated string)
446 $(call test_assert,$(call split,*,star*field*record),star field record)
447 $(call test_assert,$(call split,*,star*),star)
448 $(call test_assert,$(call split,*,star*field),star field)
449 $(call test_assert,$(call split,*,star****field),star field)
450 $(call test_assert,$(call split,*,),)
451 $(call stop_test)
452
453 $(call start_test,merge)
454 $(call test_assert,$(call merge,$c,list of things),list$cof$cthings)
455 $(call test_assert,$(call merge,*,list of things),list*of*things)
456 $(call test_assert,$(call merge,*,list),list)
457 $(call test_assert,$(call merge,*,),)
458 $(call stop_test)
459
460 $(call start_test,int_max)
461 $(call test_assert,$(call int_max,$(call int_encode,2),$(call int_encode,1)),$(call int_encode,2))
462 $(call test_assert,$(call int_max,$(call int_encode,1),$(call int_encode,2)),$(call int_encode,2))
463 $(call test_assert,$(call int_max,$(call int_encode,2),$(call int_encode,0)),$(call int_encode,2))
464 $(call test_assert,$(call int_max,$(call int_encode,0),$(call int_encode,2)),$(call int_encode,2))
465 $(call test_assert,$(call int_max,$(call int_encode,2),$(call int_encode,2)),$(call int_encode,2))
466 $(call test_assert,$(call int_max,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0))
467 $(call stop_test)
468
469 $(call start_test,max)
470 $(call test_assert,$(call max,2,1),2)
471 $(call test_assert,$(call max,1,2),2)
472 $(call test_assert,$(call max,2,0),2)
473 $(call test_assert,$(call max,0,2),2)
474 $(call test_assert,$(call max,2,2),2)
475 $(call test_assert,$(call max,0,0),0)
476 $(call stop_test)
477
478 $(call start_test,int_min)
479 $(call test_assert,$(call int_min,$(call int_encode,2),$(call int_encode,1)),$(call int_encode,1))
480 $(call test_assert,$(call int_min,$(call int_encode,1),$(call int_encode,2)),$(call int_encode,1))
481 $(call test_assert,$(call int_min,$(call int_encode,2),$(call int_encode,0)),$(call int_encode,0))
482 $(call test_assert,$(call int_min,$(call int_encode,0),$(call int_encode,2)),$(call int_encode,0))
483 $(call test_assert,$(call int_min,$(call int_encode,2),$(call int_encode,2)),$(call int_encode,2))
484 $(call test_assert,$(call int_min,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0))
485 $(call stop_test)
486
487 $(call start_test,min)
488 $(call test_assert,$(call min,2,1),1)
489 $(call test_assert,$(call min,1,2),1)
490 $(call test_assert,$(call min,2,0),0)
491 $(call test_assert,$(call min,0,2),0)
492 $(call test_assert,$(call min,2,2),2)
493 $(call test_assert,$(call min,0,0),0)
494 $(call stop_test)
495
496 __gmsl_error = $1
497 $(call start_test,assert functions)
498 $(call test_assert,$(call assert,$(true),ignore),)
499 $(call test_assert,$(call assert,$(false),failed),Assertion failure: failed)
500 $(call test_assert,$(call assert_exists,gmsl-tests),)
501 $(call test_assert,$(call assert_exists,MISSING-gmsl-tests),Assertion failure: file 'MISSING-gmsl-tests' missing)
502 $(call stop_test)
503
504 $(call start_test,int_inc)
505 $(call test_assert,$(call int_inc,$(call int_encode,0)),$(call int_encode,1))
506 $(call test_assert,$(call int_inc,$(call int_encode,1)),$(call int_encode,2))
507 $(call test_assert,$(call int_inc,$(call int_encode,4)),$(call int_encode,5))
508 $(call test_assert,$(call int_inc,$(call int_encode,10)),$(call int_encode,11))
509 $(call stop_test)
510
511 $(call start_test,inc)
512 $(call test_assert,$(call inc,0),1)
513 $(call test_assert,$(call inc,1),2)
514 $(call test_assert,$(call inc,4),5)
515 $(call test_assert,$(call inc,10),11)
516 $(call stop_test)
517
518 __gmsl_warning = $1
519 $(call start_test,int_dec)
520 $(call test_assert,$(call int_dec,$(call int_encode,0)),Decrement underflow)
521 $(call test_assert,$(call int_dec,$(call int_encode,1)),$(call int_encode,0))
522 $(call test_assert,$(call int_dec,$(call int_encode,4)),$(call int_encode,3))
523 $(call test_assert,$(call int_dec,$(call int_encode,10)),$(call int_encode,9))
524 $(call stop_test)
525
526 __gmsl_warning = x x x x x x x x x x
527 $(call start_test,dec)
528 $(call test_assert,$(call dec,0),10)
529 $(call test_assert,$(call dec,1),0)
530 $(call test_assert,$(call dec,4),3)
531 $(call test_assert,$(call dec,10),9)
532 $(call stop_test)
533
534 $(call start_test,int_double)
535 $(call test_assert,$(call int_double,$(call int_encode,0)),$(call int_encode,0))
536 $(call test_assert,$(call int_double,$(call int_encode,1)),$(call int_encode,2))
537 $(call test_assert,$(call int_double,$(call int_encode,4)),$(call int_encode,8))
538 $(call stop_test)
539
540 $(call start_test,double)
541 $(call test_assert,$(call double,0),0)
542 $(call test_assert,$(call double,1),2)
543 $(call test_assert,$(call double,4),8)
544 $(call stop_test)
545
546 $(call start_test,int_halve)
547 $(call test_assert,$(call int_halve,$(call int_encode,0)),$(call int_encode,0))
548 $(call test_assert,$(call int_halve,$(call int_encode,2)),$(call int_encode,1))
549 $(call test_assert,$(call int_halve,$(call int_encode,8)),$(call int_encode,4))
550 $(call test_assert,$(call int_halve,$(call int_encode,7)),$(call int_encode,3))
551 $(call stop_test)
552
553 $(call start_test,halve)
554 $(call test_assert,$(call halve,0),0)
555 $(call test_assert,$(call halve,2),1)
556 $(call test_assert,$(call halve,8),4)
557 $(call test_assert,$(call halve,7),3)
558 $(call stop_test) 
559
560 $(call start_test,gt)
561 $(call test_assert,$(call gt,2,3),)
562 $(call test_assert,$(call gt,3,2),$(true))
563 $(call test_assert,$(call gt,2,2),)
564 $(call stop_test)
565
566 $(call start_test,gte)
567 $(call test_assert,$(call gte,2,3),)
568 $(call test_assert,$(call gte,3,2),$(true))
569 $(call test_assert,$(call gte,2,2),$(true))
570 $(call stop_test)
571
572 $(call start_test,lt)
573 $(call test_assert,$(call lt,2,3),$(true))
574 $(call test_assert,$(call lt,3,2),)
575 $(call test_assert,$(call lt,2,2),)
576 $(call stop_test)
577
578 $(call start_test,lte)
579 $(call test_assert,$(call lte,2,3),$(true))
580 $(call test_assert,$(call lte,3,2),)
581 $(call test_assert,$(call lte,2,2),$(true))
582 $(call stop_test)
583
584 $(call start_test,eq)
585 $(call test_assert,$(call eq,2,3),)
586 $(call test_assert,$(call eq,3,2),)
587 $(call test_assert,$(call eq,2,2),$(true))
588 $(call stop_test)
589
590 $(call start_test,ne)
591 $(call test_assert,$(call ne,2,3),$(true))
592 $(call test_assert,$(call ne,3,2),$(true))
593 $(call test_assert,$(call ne,2,2),)
594 $(call stop_test)
595
596 $(call start_test,int_gt)
597 $(call test_assert,$(call int_gt,$(call int_encode,2),$(call int_encode,3)),)
598 $(call test_assert,$(call int_gt,$(call int_encode,3),$(call int_encode,2)),$(true))
599 $(call test_assert,$(call int_gt,$(call int_encode,2),$(call int_encode,2)),)
600 $(call stop_test)
601
602 $(call start_test,int_gte)
603 $(call test_assert,$(call int_gte,$(call int_encode,2),$(call int_encode,3)),)
604 $(call test_assert,$(call int_gte,$(call int_encode,3),$(call int_encode,2)),$(true))
605 $(call test_assert,$(call int_gte,$(call int_encode,2),$(call int_encode,2)),$(true))
606 $(call stop_test)
607
608 $(call start_test,int_lt)
609 $(call test_assert,$(call int_lt,$(call int_encode,2),$(call int_encode,3)),$(true))
610 $(call test_assert,$(call int_lt,$(call int_encode,3),$(call int_encode,2)),)
611 $(call test_assert,$(call int_lt,$(call int_encode,2),$(call int_encode,2)),)
612 $(call stop_test)
613
614 $(call start_test,int_lte)
615 $(call test_assert,$(call int_lte,$(call int_encode,2),$(call int_encode,3)),$(true))
616 $(call test_assert,$(call int_lte,$(call int_encode,3),$(call int_encode,2)),)
617 $(call test_assert,$(call int_lte,$(call int_encode,2),$(call int_encode,2)),$(true))
618 $(call stop_test)
619
620 $(call start_test,int_eq)
621 $(call test_assert,$(call int_eq,$(call int_encode,2),$(call int_encode,3)),)
622 $(call test_assert,$(call int_eq,$(call int_encode,3),$(call int_encode,2)),)
623 $(call test_assert,$(call int_eq,$(call int_encode,2),$(call int_encode,2)),$(true))
624 $(call stop_test)
625
626 $(call start_test,int_ne)
627 $(call test_assert,$(call int_ne,$(call int_encode,2),$(call int_encode,3)),$(true))
628 $(call test_assert,$(call int_ne,$(call int_encode,3),$(call int_encode,2)),$(true))
629 $(call test_assert,$(call int_ne,$(call int_encode,2),$(call int_encode,2)),)
630 $(call stop_test)
631
632 $(call start_test,gmsl_compatible)
633 $(call test_assert,$(call gmsl_compatible,$(gmsl_version)),$(true))
634 $(call test_assert,$(call gmsl_compatible,0 9 0),$(true))
635 $(call test_assert,$(call gmsl_compatible,0 0 1),$(true))
636 $(call test_assert,$(call gmsl_compatible,0 0 0),$(true))
637 $(call test_assert,$(call gmsl_compatible,2 0 0),)
638 $(call test_assert,$(call gmsl_compatible,1 1 0),)
639 $(call test_assert,$(call gmsl_compatible,1 0 8),$(true))
640 $(call test_assert,$(call gmsl_compatible,1 0 10),)
641 $(call stop_test)