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,xyz,1,1),x) 195 $(call test_assert,$(call substr,xyz,1,2),xy) 196 $(call test_assert,$(call substr,xyz,2,3),yz) 197 $(call test_assert,$(call substr,some string,1,1),s) 198 $(call test_assert,$(call substr,some string,1,2),so) 199 $(call test_assert,$(call substr,some string,1,3),som) 200 $(call test_assert,$(call substr,some string,1,4),some) 201 $(call test_assert,$(call substr,some string,1,5),some ) 202 $(call test_assert,$(call substr,some string,1,6),some s) 203 $(call test_assert,$(call substr,some string,5,5), ) 204 $(call test_assert,$(call substr,some string,5,6), s) 205 $(call test_assert,$(call substr,some string,5,7), st) 206 $(call test_assert,$(call substr,some string,5,8), str) 207 $(call test_assert,$(call substr,some string,1,100),some string) 208 $(call stop_test) 209 210 $(call start_test,lc) 211 $(call test_assert,$(call lc,The Quick Brown Fox),the quick brown fox) 212 $(call test_assert,$(call lc,the1 quick2 brown3 fox4),the1 quick2 brown3 fox4) 213 $(call test_assert,$(call lc,The_),the_) 214 $(call test_assert,$(call lc,),) 215 $(call stop_test) 216 217 $(call start_test,uc) 218 $(call test_assert,$(call uc,The Quick Brown Fox),THE QUICK BROWN FOX) 219 $(call test_assert,$(call uc,the1 quick2 brown3 fox4),THE1 QUICK2 BROWN3 FOX4) 220 $(call test_assert,$(call uc,The_),THE_) 221 $(call test_assert,$(call uc,),) 222 $(call stop_test) 223 224 $(call start_test,tr) 225 $(call test_assert,$(call tr,A B C,1 2 3,CAPITAL),31PIT1L) 226 $(call test_assert,$(call tr,a b c,1 2 3,CAPITAL),CAPITAL) 227 $(call test_assert,$(call tr,E L I,3 1 1,I AM ELITE),1 AM 311T3) 228 $(call stop_test) 229 230 $(call start_test,leq) 231 $(call test_assert,$(call leq,1 2 3,1 2 3),T) 232 $(call test_assert,$(call leq,1 2 3,1 2 3 4),) 233 $(call test_assert,$(call leq,1 2 3 4,1 2 3),) 234 $(call test_assert,$(call leq,1,1),T) 235 $(call test_assert,$(call leq,,),T) 236 $(call stop_test) 237 238 $(call start_test,lne) 239 $(call test_assert,$(call lne,1 2 3,1 2 3),) 240 $(call test_assert,$(call lne,1 2 3,1 2 3 4),T) 241 $(call test_assert,$(call lne,1 2 3 4,1 2 3),T) 242 $(call test_assert,$(call lne,1,1),) 243 $(call test_assert,$(call lne,,),) 244 $(call stop_test) 245 246 $(call start_test,empty_set) 247 $(call test_assert,$(empty_set),) 248 $(call test_assert,$(empty_set),$(call set_create,)) 249 $(call stop_test) 250 251 $(call start_test,set_create) 252 $(call test_assert,$(call set_create,),) 253 $(call test_assert,$(call set_create,1 2 2 3),1 2 3) 254 $(call test_assert,$(call set_create,2 1 1 2 2 3),1 2 3) 255 $(call test_assert,$(call set_create,1),1) 256 $(call stop_test) 257 258 $(call start_test,set_insert) 259 $(call test_assert,$(call set_insert,1,$(empty_set)),1) 260 $(call test_assert,$(call set_insert,1,$(call set_create,1)),1) 261 $(call test_assert,$(call set_insert,1,$(call set_create,1 2)),1 2) 262 $(call test_assert,$(call set_insert,0,$(call set_create,1 2)),0 1 2) 263 $(call stop_test) 264 265 $(call start_test,set_remove) 266 $(call test_assert,$(call set_remove,1,$(empty_set)),$(empty_set)) 267 $(call test_assert,$(call set_remove,1,$(call set_create,1 2)),2) 268 $(call test_assert,$(call set_remove,1,$(call set_create,1 11 2)),11 2) 269 $(call test_assert,$(call set_remove,0,$(call set_create,1 2)),1 2) 270 $(call stop_test) 271 272 $(call start_test,set_is_member) 273 $(call test_assert,$(call set_is_member,1,$(empty_set)),) 274 $(call test_assert,$(call set_is_member,1,$(call set_create,2 3)),) 275 $(call test_assert,$(call set_is_member,1,$(call set_create,1 2 3)),T) 276 $(call test_assert,$(call set_is_member,1,$(call set_create,1)),T) 277 $(call stop_test) 278 279 $(call start_test,set_union) 280 $(call test_assert,$(call set_union,,),) 281 $(call test_assert,$(call set_union,1 2,),1 2) 282 $(call test_assert,$(call set_union,,3 4),3 4) 283 $(call test_assert,$(call set_union,1 2,3 4),1 2 3 4) 284 $(call test_assert,$(call set_union,1 2 3,3 4 5),1 2 3 4 5) 285 $(call stop_test) 286 287 $(call start_test,set_intersection) 288 $(call test_assert,$(call set_intersection,,),) 289 $(call test_assert,$(call set_intersection,1 2,),) 290 $(call test_assert,$(call set_intersection,,3 4),) 291 $(call test_assert,$(call set_intersection,1 2,3 4),) 292 $(call test_assert,$(call set_intersection,1 2 3 4,3 4 5),3 4) 293 $(call stop_test) 294 295 $(call start_test,set_is_subset) 296 $(call test_assert,$(call set_is_subset,,),T) 297 $(call test_assert,$(call set_is_subset,1 2,),) 298 $(call test_assert,$(call set_is_subset,,3 4),T) 299 $(call test_assert,$(call set_is_subset,1 2,3 4),) 300 $(call test_assert,$(call set_is_subset,1 2,1 2 3 4 5),T) 301 $(call test_assert,$(call set_is_subset,1 2,1 2),T) 302 $(call test_assert,$(call set_is_subset,1 2,1 3 4 5),) 303 $(call stop_test) 304 305 $(call start_test,set_equal) 306 $(call test_assert,$(call set_equal,,),T) 307 $(call test_assert,$(call set_equal,1,),) 308 $(call test_assert,$(call set_equal,,1),) 309 $(call test_assert,$(call set_equal,1,1),T) 310 $(call test_assert,$(call set_equal,1 2,),) 311 $(call test_assert,$(call set_equal,,1 2),) 312 $(call test_assert,$(call set_equal,1 2,1 2 3),) 313 $(call stop_test) 314 315 $(call start_test,int_encode) 316 $(call test_assert,$(call int_encode,0),) 317 $(call test_assert,$(call int_encode,1),x) 318 $(call test_assert,$(call int_encode,2),x x) 319 $(call test_assert,$(call int_encode,10),x x x x x x x x x x) 320 $(call stop_test) 321 322 $(call start_test,int_decode) 323 $(call test_assert,$(call int_decode,),0) 324 $(call test_assert,$(call int_decode,x),1) 325 $(call test_assert,$(call int_decode,x x),2) 326 $(call test_assert,$(call int_decode,x x x x x x x x x x),10) 327 $(call stop_test) 328 329 $(call start_test,int_plus) 330 $(call test_assert,$(call int_plus,$(call int_encode,3),$(call int_encode,4)),$(call int_encode,7)) 331 $(call test_assert,$(call int_plus,$(call int_encode,0),$(call int_encode,4)),$(call int_encode,4)) 332 $(call test_assert,$(call int_plus,$(call int_encode,3),$(call int_encode,0)),$(call int_encode,3)) 333 $(call test_assert,$(call int_plus,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0)) 334 $(call test_assert,$(call int_plus,$(call int_encode,1),$(call int_encode,0)),$(call int_encode,1)) 335 $(call stop_test) 336 337 $(call start_test,plus) 338 $(call test_assert,$(call plus,3,4),7) 339 $(call test_assert,$(call plus,4,3),7) 340 $(call test_assert,$(call plus,0,4),4) 341 $(call test_assert,$(call plus,3,0),3) 342 $(call test_assert,$(call plus,0,0),0) 343 $(call stop_test) 344 345 __gmsl_warning = $1 346 $(call start_test,int_subtract) 347 $(call test_assert,$(call int_subtract,$(call int_encode,3),$(call int_encode,4)),Subtraction underflow) 348 $(call test_assert,$(call int_subtract,$(call int_encode,4),$(call int_encode,3)),$(call int_encode,1)) 349 $(call test_assert,$(call int_subtract,$(call int_encode,3),$(call int_encode,0)),$(call int_encode,3)) 350 $(call test_assert,$(call int_subtract,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0)) 351 $(call test_assert,$(call int_subtract,$(call int_encode,1),$(call int_encode,0)),$(call int_encode,1)) 352 $(call stop_test) 353 354 __gmsl_warning = x x x x x x x x x x 355 $(call start_test,subtract) 356 $(call test_assert,$(call subtract,3,4),10) 357 $(call test_assert,$(call subtract,4,3),1) 358 $(call test_assert,$(call subtract,3,0),3) 359 $(call test_assert,$(call subtract,0,0),0) 360 $(call stop_test) 361 362 $(call start_test,int_multiply) 363 $(call test_assert,$(call int_multiply,$(call int_encode,3),$(call int_encode,4)),$(call int_encode,12)) 364 $(call test_assert,$(call int_multiply,$(call int_encode,4),$(call int_encode,3)),$(call int_encode,12)) 365 $(call test_assert,$(call int_multiply,$(call int_encode,3),$(call int_encode,0)),$(call int_encode,0)) 366 $(call test_assert,$(call int_multiply,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0)) 367 $(call test_assert,$(call int_multiply,$(call int_encode,1),$(call int_encode,0)),$(call int_encode,0)) 368 $(call stop_test) 369 370 $(call start_test,multiply) 371 $(call test_assert,$(call multiply,3,4),12) 372 $(call test_assert,$(call multiply,4,3),12) 373 $(call test_assert,$(call multiply,3,0),0) 374 $(call test_assert,$(call multiply,0,3),0) 375 $(call test_assert,$(call multiply,0,0),0) 376 $(call stop_test) 377 378 __gmsl_error = $1 379 $(call start_test,int_divide) 380 $(call test_assert,$(call int_divide,$(call int_encode,3),$(call int_encode,4)),$(call int_encode,0)) 381 $(call test_assert,$(call int_divide,$(call int_encode,4),$(call int_encode,3)),$(call int_encode,1)) 382 $(call test_assert,$(call int_divide,$(call int_encode,31),$(call int_encode,3)),$(call int_encode,10)) 383 $(call test_assert,$(call int_divide,$(call int_encode,30),$(call int_encode,3)),$(call int_encode,10)) 384 $(call test_assert,$(call int_divide,$(call int_encode,29),$(call int_encode,3)),$(call int_encode,9)) 385 $(call test_assert,$(call int_divide,$(call int_encode,0),$(call int_encode,1)),$(call int_encode,0)) 386 $(call test_assert,$(call int_divide,$(call int_encode,1),$(call int_encode,0)),Division by zero) 387 $(call stop_test) 388 389 __gmsl_error = x x x x x x x x x x 390 $(call start_test,divide) 391 $(call test_assert,$(call divide,3,4),0) 392 $(call test_assert,$(call divide,4,3),1) 393 $(call test_assert,$(call divide,21,2),10) 394 $(call test_assert,$(call divide,20,2),10) 395 $(call test_assert,$(call divide,19,2),9) 396 $(call test_assert,$(call divide,1,0),10) 397 $(call stop_test) 398 399 $(call start_test,associative array) 400 $(call test_assert,$(call get,myarray,key1),) 401 $(call set,myarray,key1,value1) 402 $(call test_assert,$(call get,myarray,key1),value1) 403 $(call test_assert,$(call get,myarray,key2),) 404 $(call test_assert,$(call get,myarray1,key1),) 405 $(call test_assert,$(call defined,myarray,key1),T) 406 $(call test_assert,$(call defined,myarray,key2),) 407 $(call test_assert,$(call defined,myarray1,key1),) 408 $(call set,myarray,key2,value2) 409 $(call test_assert,$(call keys,myarray),key1 key2) 410 $(call test_assert,$(call keys,myarray1),) 411 $(call stop_test) 412 413 $(call start_test,named stack) 414 $(call test_assert,$(call pop,mystack),) 415 $(call test_assert,$(call push,mystack,e2)) 416 $(call push,mystack,e1) 417 $(call test_assert,$(call pop,mystack),e1) 418 $(call test_assert,$(call pop,mystack),e2) 419 $(call push,mystack,f3) 420 $(call push,mystack,f1) 421 $(call test_assert,$(call pop,mystack),f1) 422 $(call push,mystack,f2) 423 $(call test_assert,$(call peek,mystack),f2) 424 $(call test_assert,$(call depth,mystack),2) 425 $(call test_assert,$(call pop,mystack),f2) 426 $(call test_assert,$(call depth,mystack),1) 427 $(call test_assert,$(call pop,myotherstack),) 428 $(call stop_test) 429 430 $(call start_test,reverse) 431 $(call test_assert,$(call reverse,),) 432 $(call test_assert,$(call reverse,1),1) 433 $(call test_assert,$(call reverse,1 2),2 1) 434 $(call test_assert,$(call reverse,1 2 3),3 2 1) 435 $(call stop_test) 436 437 $(call start_test,uniq) 438 $(call test_assert,$(call uniq,),) 439 $(call test_assert,$(call uniq,a),a) 440 $(call test_assert,$(call uniq,a a),a) 441 $(call test_assert,$(call uniq,a aa),a aa) 442 $(call test_assert,$(call uniq,a aa a),a aa) 443 $(call test_assert,$(call uniq,a b ba ab b a a ba a),a b ba ab) 444 $(call stop_test) 445 446 c:=, 447 $(call start_test,split) 448 $(call test_assert,$(call split,$c,comma$cseparated$cstring),comma separated string) 449 $(call test_assert,$(call split,*,star*field*record),star field record) 450 $(call test_assert,$(call split,*,star*),star) 451 $(call test_assert,$(call split,*,star*field),star field) 452 $(call test_assert,$(call split,*,star****field),star field) 453 $(call test_assert,$(call split,*,),) 454 $(call stop_test) 455 456 $(call start_test,merge) 457 $(call test_assert,$(call merge,$c,list of things),list$cof$cthings) 458 $(call test_assert,$(call merge,*,list of things),list*of*things) 459 $(call test_assert,$(call merge,*,list),list) 460 $(call test_assert,$(call merge,*,),) 461 $(call stop_test) 462 463 $(call start_test,int_max) 464 $(call test_assert,$(call int_max,$(call int_encode,2),$(call int_encode,1)),$(call int_encode,2)) 465 $(call test_assert,$(call int_max,$(call int_encode,1),$(call int_encode,2)),$(call int_encode,2)) 466 $(call test_assert,$(call int_max,$(call int_encode,2),$(call int_encode,0)),$(call int_encode,2)) 467 $(call test_assert,$(call int_max,$(call int_encode,0),$(call int_encode,2)),$(call int_encode,2)) 468 $(call test_assert,$(call int_max,$(call int_encode,2),$(call int_encode,2)),$(call int_encode,2)) 469 $(call test_assert,$(call int_max,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0)) 470 $(call stop_test) 471 472 $(call start_test,max) 473 $(call test_assert,$(call max,2,1),2) 474 $(call test_assert,$(call max,1,2),2) 475 $(call test_assert,$(call max,2,0),2) 476 $(call test_assert,$(call max,0,2),2) 477 $(call test_assert,$(call max,2,2),2) 478 $(call test_assert,$(call max,0,0),0) 479 $(call stop_test) 480 481 $(call start_test,int_min) 482 $(call test_assert,$(call int_min,$(call int_encode,2),$(call int_encode,1)),$(call int_encode,1)) 483 $(call test_assert,$(call int_min,$(call int_encode,1),$(call int_encode,2)),$(call int_encode,1)) 484 $(call test_assert,$(call int_min,$(call int_encode,2),$(call int_encode,0)),$(call int_encode,0)) 485 $(call test_assert,$(call int_min,$(call int_encode,0),$(call int_encode,2)),$(call int_encode,0)) 486 $(call test_assert,$(call int_min,$(call int_encode,2),$(call int_encode,2)),$(call int_encode,2)) 487 $(call test_assert,$(call int_min,$(call int_encode,0),$(call int_encode,0)),$(call int_encode,0)) 488 $(call stop_test) 489 490 $(call start_test,min) 491 $(call test_assert,$(call min,2,1),1) 492 $(call test_assert,$(call min,1,2),1) 493 $(call test_assert,$(call min,2,0),0) 494 $(call test_assert,$(call min,0,2),0) 495 $(call test_assert,$(call min,2,2),2) 496 $(call test_assert,$(call min,0,0),0) 497 $(call stop_test) 498 499 __gmsl_error = $1 500 $(call start_test,assert functions) 501 $(call test_assert,$(call assert,$(true),ignore),) 502 $(call test_assert,$(call assert,$(false),failed),Assertion failure: failed) 503 $(call test_assert,$(call assert_exists,gmsl-tests),) 504 $(call test_assert,$(call assert_exists,MISSING-gmsl-tests),Assertion failure: file 'MISSING-gmsl-tests' missing) 505 $(call stop_test) 506 507 $(call start_test,int_inc) 508 $(call test_assert,$(call int_inc,$(call int_encode,0)),$(call int_encode,1)) 509 $(call test_assert,$(call int_inc,$(call int_encode,1)),$(call int_encode,2)) 510 $(call test_assert,$(call int_inc,$(call int_encode,4)),$(call int_encode,5)) 511 $(call test_assert,$(call int_inc,$(call int_encode,10)),$(call int_encode,11)) 512 $(call stop_test) 513 514 $(call start_test,inc) 515 $(call test_assert,$(call inc,0),1) 516 $(call test_assert,$(call inc,1),2) 517 $(call test_assert,$(call inc,4),5) 518 $(call test_assert,$(call inc,10),11) 519 $(call stop_test) 520 521 __gmsl_warning = $1 522 $(call start_test,int_dec) 523 $(call test_assert,$(call int_dec,$(call int_encode,0)),Decrement underflow) 524 $(call test_assert,$(call int_dec,$(call int_encode,1)),$(call int_encode,0)) 525 $(call test_assert,$(call int_dec,$(call int_encode,4)),$(call int_encode,3)) 526 $(call test_assert,$(call int_dec,$(call int_encode,10)),$(call int_encode,9)) 527 $(call stop_test) 528 529 __gmsl_warning = x x x x x x x x x x 530 $(call start_test,dec) 531 $(call test_assert,$(call dec,0),10) 532 $(call test_assert,$(call dec,1),0) 533 $(call test_assert,$(call dec,4),3) 534 $(call test_assert,$(call dec,10),9) 535 $(call stop_test) 536 537 $(call start_test,int_double) 538 $(call test_assert,$(call int_double,$(call int_encode,0)),$(call int_encode,0)) 539 $(call test_assert,$(call int_double,$(call int_encode,1)),$(call int_encode,2)) 540 $(call test_assert,$(call int_double,$(call int_encode,4)),$(call int_encode,8)) 541 $(call stop_test) 542 543 $(call start_test,double) 544 $(call test_assert,$(call double,0),0) 545 $(call test_assert,$(call double,1),2) 546 $(call test_assert,$(call double,4),8) 547 $(call stop_test) 548 549 $(call start_test,int_halve) 550 $(call test_assert,$(call int_halve,$(call int_encode,0)),$(call int_encode,0)) 551 $(call test_assert,$(call int_halve,$(call int_encode,2)),$(call int_encode,1)) 552 $(call test_assert,$(call int_halve,$(call int_encode,8)),$(call int_encode,4)) 553 $(call test_assert,$(call int_halve,$(call int_encode,7)),$(call int_encode,3)) 554 $(call stop_test) 555 556 $(call start_test,halve) 557 $(call test_assert,$(call halve,0),0) 558 $(call test_assert,$(call halve,2),1) 559 $(call test_assert,$(call halve,8),4) 560 $(call test_assert,$(call halve,7),3) 561 $(call stop_test) 562 563 $(call start_test,gt) 564 $(call test_assert,$(call gt,2,3),) 565 $(call test_assert,$(call gt,3,2),$(true)) 566 $(call test_assert,$(call gt,2,2),) 567 $(call stop_test) 568 569 $(call start_test,gte) 570 $(call test_assert,$(call gte,2,3),) 571 $(call test_assert,$(call gte,3,2),$(true)) 572 $(call test_assert,$(call gte,2,2),$(true)) 573 $(call stop_test) 574 575 $(call start_test,lt) 576 $(call test_assert,$(call lt,2,3),$(true)) 577 $(call test_assert,$(call lt,3,2),) 578 $(call test_assert,$(call lt,2,2),) 579 $(call stop_test) 580 581 $(call start_test,lte) 582 $(call test_assert,$(call lte,2,3),$(true)) 583 $(call test_assert,$(call lte,3,2),) 584 $(call test_assert,$(call lte,2,2),$(true)) 585 $(call stop_test) 586 587 $(call start_test,eq) 588 $(call test_assert,$(call eq,2,3),) 589 $(call test_assert,$(call eq,3,2),) 590 $(call test_assert,$(call eq,2,2),$(true)) 591 $(call stop_test) 592 593 $(call start_test,ne) 594 $(call test_assert,$(call ne,2,3),$(true)) 595 $(call test_assert,$(call ne,3,2),$(true)) 596 $(call test_assert,$(call ne,2,2),) 597 $(call stop_test) 598 599 $(call start_test,int_gt) 600 $(call test_assert,$(call int_gt,$(call int_encode,2),$(call int_encode,3)),) 601 $(call test_assert,$(call int_gt,$(call int_encode,3),$(call int_encode,2)),$(true)) 602 $(call test_assert,$(call int_gt,$(call int_encode,2),$(call int_encode,2)),) 603 $(call stop_test) 604 605 $(call start_test,int_gte) 606 $(call test_assert,$(call int_gte,$(call int_encode,2),$(call int_encode,3)),) 607 $(call test_assert,$(call int_gte,$(call int_encode,3),$(call int_encode,2)),$(true)) 608 $(call test_assert,$(call int_gte,$(call int_encode,2),$(call int_encode,2)),$(true)) 609 $(call stop_test) 610 611 $(call start_test,int_lt) 612 $(call test_assert,$(call int_lt,$(call int_encode,2),$(call int_encode,3)),$(true)) 613 $(call test_assert,$(call int_lt,$(call int_encode,3),$(call int_encode,2)),) 614 $(call test_assert,$(call int_lt,$(call int_encode,2),$(call int_encode,2)),) 615 $(call stop_test) 616 617 $(call start_test,int_lte) 618 $(call test_assert,$(call int_lte,$(call int_encode,2),$(call int_encode,3)),$(true)) 619 $(call test_assert,$(call int_lte,$(call int_encode,3),$(call int_encode,2)),) 620 $(call test_assert,$(call int_lte,$(call int_encode,2),$(call int_encode,2)),$(true)) 621 $(call stop_test) 622 623 $(call start_test,int_eq) 624 $(call test_assert,$(call int_eq,$(call int_encode,2),$(call int_encode,3)),) 625 $(call test_assert,$(call int_eq,$(call int_encode,3),$(call int_encode,2)),) 626 $(call test_assert,$(call int_eq,$(call int_encode,2),$(call int_encode,2)),$(true)) 627 $(call stop_test) 628 629 $(call start_test,int_ne) 630 $(call test_assert,$(call int_ne,$(call int_encode,2),$(call int_encode,3)),$(true)) 631 $(call test_assert,$(call int_ne,$(call int_encode,3),$(call int_encode,2)),$(true)) 632 $(call test_assert,$(call int_ne,$(call int_encode,2),$(call int_encode,2)),) 633 $(call stop_test) 634 635 $(call start_test,gmsl_compatible) 636 $(call test_assert,$(call gmsl_compatible,$(gmsl_version)),$(true)) 637 $(call test_assert,$(call gmsl_compatible,0 9 0),$(true)) 638 $(call test_assert,$(call gmsl_compatible,0 0 1),$(true)) 639 $(call test_assert,$(call gmsl_compatible,0 0 0),$(true)) 640 $(call test_assert,$(call gmsl_compatible,2 0 0),) 641 $(call test_assert,$(call gmsl_compatible,1 1 0),) 642 $(call test_assert,$(call gmsl_compatible,1 0 8),$(true)) 643 $(call test_assert,$(call gmsl_compatible,1 0 8),$(true)) 644 $(call test_assert,$(call gmsl_compatible,1 0 10),$(true)) 645 $(call test_assert,$(call gmsl_compatible,1 0 11),$(true)) 646 $(call test_assert,$(call gmsl_compatible,1 0 12),) 647 $(call stop_test) 648