David 'Digit' Turner | b9a8479 | 2009-05-07 20:39:04 +0200 | [diff] [blame] | 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) |