Changeset 1728 for trunk/src/kmk
- Timestamp:
- Sep 5, 2008, 5:27:06 AM (17 years ago)
- Location:
- trunk/src/kmk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/expreval.c
r1726 r1728 903 903 pFile = NULL; 904 904 } 905 if ( pFile)905 if (!pFile) 906 906 #endif 907 907 { … … 1828 1828 * push it onto the stack. 1829 1829 */ 1830 const char *pszStart = psz;1830 const char *pszStart; 1831 1831 1832 1832 rc = kExprRet_Ok; 1833 1833 if (*psz == '"') 1834 1834 { 1835 pszStart ++;1835 pszStart = ++psz; 1836 1836 while (*psz && *psz != '"') 1837 1837 psz++; 1838 1838 expr_var_init_substring(&pThis->aVars[++pThis->iVar], pszStart, psz - pszStart, kExprVar_QuotedString); 1839 if (*psz) 1840 psz++; 1839 1841 } 1840 1842 else if (*psz == '\'') 1841 1843 { 1842 pszStart ++;1844 pszStart = ++psz; 1843 1845 while (*psz && *psz != '\'') 1844 1846 psz++; 1845 1847 expr_var_init_substring(&pThis->aVars[++pThis->iVar], pszStart, psz - pszStart, kExprVar_QuotedSimpleString); 1848 if (*psz) 1849 psz++; 1846 1850 } 1847 1851 else … … 1852 1856 char ch; 1853 1857 1858 pszStart = psz; 1854 1859 while ((ch = *psz) != '\0') 1855 1860 { -
trunk/src/kmk/testcase-ifcond.kmk
r1727 r1728 29 29 include $(KBUILD_PATH)/header.kmk 30 30 31 ifeq (1,0) 32 # 33 # Some very basic tests. 34 # 31 # 32 # Note! The testcase are ordered by ascending operator precedence 33 # with the exception of equal and not-equal because these 34 # are kind of useful for performing tests on non-logical ops. 35 # 36 37 # 38 # Parenthesis 39 # 40 $(warning unary operators: ( and ) ) 41 if (1) 42 else 43 $(error ) 44 endif 45 46 if ((((1)))) 47 else 48 $(error ) 49 endif 50 51 52 # 53 # Equal and Not Equal w/ some fundamental bits thrown in. 54 # 55 $(warning binary operators: == and != ) 56 57 if 1 == 1 58 else 59 $(error ) 60 endif 61 62 if 2 == 3 63 $(error ) 64 else 65 endif 66 67 if 2 != 3 68 else 69 $(error ) 70 endif 71 72 if a != b 73 else 74 $(error ) 75 endif 76 77 if asdf == asdf 78 else 79 $(error ) 80 endif 81 82 if "asdf" == asdf 83 else 84 $(error ) 85 endif 86 87 if 'asdf' == asdf 88 else 89 $(error ) 90 endif 91 92 if 'asdf' == "asdf" 93 else 94 $(error ) 95 endif 96 97 if 'asdf' == 'asdf' 98 else 99 $(error ) 100 endif 101 102 if "asdf" == "asdf" 103 else 104 $(error ) 105 endif 106 107 if 0x1 == 1 108 else 109 $(error ) 110 endif 111 112 if 0xfff == 4095 113 else 114 $(error ) 115 endif 116 117 if 0xfff == 4095 118 else 119 $(error ) 120 endif 121 122 if 0d10 == 10 123 else 124 $(error ) 125 endif 126 127 if 0d10 == 10 128 else 129 $(error ) 130 endif 131 132 if 0xa == 012 133 else 134 $(error ) 135 endif 136 137 if 0b1110 == 016 138 else 139 $(error ) 140 endif 141 142 143 # 144 # Logical OR 145 # 146 $(warning binary operator: || ) 35 147 if 1 36 $(warning works)37 148 else 38 149 $(error busted) … … 40 151 41 152 if 1 || 1 42 $(warning works)43 153 else 44 154 $(error ) … … 48 158 $(error ) 49 159 else 50 $(warning works)51 160 endif 52 161 53 162 if 1 || 0 54 $(warning works)55 163 else 56 164 $(error ) … … 58 166 59 167 if 0 || 1 60 $(warning works)61 168 else 62 169 $(error ) … … 66 173 $(error ) 67 174 else 68 $(warning works)69 175 endif 70 176 71 177 if 0 || 0 || 0 || 1 || 0 || 0 || 0 72 $(warning works) 73 else 74 $(error ) 75 endif 76 77 if 0 && 1 78 $(error ) 79 else 80 $(warning works) 81 endif 82 83 if 0 || 1 && 1 84 $(warning works) 85 else 86 $(error ) 87 endif 88 endif # all 89 90 # 91 # Parenthesis 92 # 93 if (1) 94 $(warning works) 95 else 96 $(error ) 97 endif 98 99 if ((((1)))) 100 $(warning works) 101 else 102 $(error ) 103 endif 104 105 106 # 107 # Equal and Not Equal. 108 # 109 if 1 == 1 110 $(warning works) 111 else 112 $(error ) 113 endif 114 115 if 2 == 3 116 $(error ) 117 else 118 $(warning works) 119 endif 120 121 if 2 != 3 122 $(warning works) 123 else 124 $(error ) 125 endif 126 127 128 # 129 # XOR 130 # 178 else 179 $(error ) 180 endif 181 182 if "asdf" || 0 183 else 184 $(error ) 185 endif 186 187 if 0 || "asdf" 188 else 189 $(error ) 190 endif 191 192 if 'asdf' || 0 193 else 194 $(error ) 195 endif 196 197 if "" || 0 198 $(error ) 199 endif 200 if "" || 1 201 else 202 $(error ) 203 endif 204 if '' || 0 205 $(error ) 206 endif 207 if '' || 1 208 else 209 $(error ) 210 endif 211 212 if "" || '' 213 $(error ) 214 endif 215 if "1" || '' 216 else 217 $(error ) 218 endif 219 if "1" || '1' 220 else 221 $(error ) 222 endif 223 if "" || '1' 224 else 225 $(error ) 226 endif 227 228 229 # 230 # Logical AND 231 # 232 $(warning binary operator: && ) 233 if 1 && 1 234 else 235 $(error ) 236 endif 237 if 1 && 0 238 $(error ) 239 endif 240 if 1234 && 0 241 $(error ) 242 endif 243 if 123434 && 0 && 123435 && 1 244 $(error ) 245 endif 246 247 if "" && 1 248 $(error ) 249 endif 250 if ("asdf" && 1) != 1 251 $(error ) 252 endif 253 if "1" && 'asdf' 254 else 255 $(error ) 256 endif 257 if "1" && 'asdf' && 0 258 $(error ) 259 endif 260 261 if 0 || 1 && 0 262 $(error ) 263 endif 264 265 266 # 267 # Bitwise OR 268 # 269 $(warning binary operator: | ) 270 if 1 | 0 271 else 272 $(error ) 273 endif 274 if 1 | 1 275 else 276 $(error ) 277 endif 278 if 11234 | 343423 279 else 280 $(error ) 281 endif 282 if (1|2)!=3 283 $(error ) 284 endif 285 if 1|2 != 3 286 else 287 $(error ) 288 endif 289 if (1|2|4|8)!=0xf 290 $(error ) 291 endif 292 293 294 # 295 # Bitwise XOR 296 # 297 $(warning binary operator: ^ ) 131 298 if 1 ^ 1 132 299 $(error ) 133 else 134 $(warning works) 135 endif 136 137 if 2 ^ 1 == 3 138 $(warning works) 139 else 140 $(error ) 141 endif 142 143 if 7 == 2 ^ 1 ^ 4 144 $(warning works) 145 else 300 endif 301 302 if (2 ^ 1) != 3 303 $(error ) 304 endif 305 306 if 7 != (2 ^ 1 ^ 4) 307 $(error ) 308 endif 309 310 if (2 ^ 1 | 2) != 3 311 $(error ) 312 endif 313 314 315 # 316 # Bitwise AND 317 # 318 $(warning binary operator: & ) 319 if (4097 & 1) != 1 320 $(error ) 321 endif 322 if (0xfff & 0x0f0) != 0xf0 323 $(error ) 324 endif 325 if (0x1e3 & 0x100 | 3) != 0x103 326 $(error ) 327 endif 328 329 330 # 331 # Greater than 332 # 333 $(warning binary operator: > ) 334 if 1 > 0 335 else 336 $(error ) 337 endif 338 339 if 1024 > 1023 340 else 341 $(error ) 342 endif 343 344 if 999 > 1023 345 $(error ) 346 endif 347 348 if (5 > 4 | 2) != 3 349 $(error ) 350 endif 351 352 if (1 & 8 > 4) != 1 353 $(error ) 354 endif 355 356 if (8 > 4 ^ 16) != 17 357 $(error ) 358 endif 359 360 if "b" > 'a' 361 else 362 $(error ) 363 endif 364 if "abcdef" > 'ffdas' 365 $(error ) 366 endif 367 if abcdef > ffdas 368 $(error ) 369 endif 370 371 372 # 373 # Greater or equal than 374 # 375 $(warning binary operator: >= ) 376 if 20 > 0 377 else 378 $(error ) 379 endif 380 381 if 20 >= 20 382 else 383 $(error ) 384 endif 385 386 if 19 >= 20 387 $(error ) 388 endif 389 390 if (1 & 8 >= 4) != 1 391 $(error ) 392 endif 393 394 if "x" >= 'x' 395 else 396 $(error ) 397 endif 398 if "abdc" >= 'abcd' 399 else 400 $(error ) 401 endif 402 if "ffdaaa" >= 'ffdasd' 403 $(error ) 404 endif 405 if asdf >= asdf 406 else 407 $(error ) 408 endif 409 410 411 # 412 # Less than 413 # 414 if 1 < 1 415 $(error ) 416 endif 417 if -123 < -134 418 $(error ) 419 endif 420 if 123 <= 7777 421 else 422 $(error ) 423 endif 424 425 if "b" < 'a' 426 $(error ) 427 endif 428 if b < a 429 $(error ) 430 endif 431 if 'foobar' < 'a$' 432 $(error ) 433 endif 434 if hhhh < ggggg 435 $(error ) 436 endif 437 if qwerty < qwerty0 438 else 439 $(error ) 440 endif 441 442 443 # 444 # Less or equal than 445 # 446 $(warning binary operator: >> ) 447 if 1 <= 0 448 $(error ) 449 endif 450 if 1 <= 1 451 else 452 $(error ) 453 endif 454 if 123 <= 123 != 1 455 $(error ) 456 endif 457 if 560 <= 456 458 $(error ) 459 endif 460 461 if "a" <= 'a' 462 else 463 $(error ) 464 endif 465 if "abcdef" <= 'abcdef' 466 else 467 $(error ) 468 endif 469 if q12345z6 <= q12345z 470 $(error ) 471 endif 472 if QWERTY <= ABCDE 473 $(error ) 474 endif 475 476 477 # 478 # Shift right 479 # 480 $(warning binary operator: >> ) 481 if 1 >> 0 != 1 482 $(error ) 483 endif 484 if 1024 >> 2 != 256 485 $(error ) 486 endif 487 if 102435 >> 4 > 1234 != 1 488 $(error ) 489 endif 490 491 492 # 493 # Shift left 494 # 495 $(warning binary operator: << ) 496 if 1 << 0 != 1 497 $(error ) 498 endif 499 if 1 << 1 != 2 500 $(error ) 501 endif 502 if 1 << 4 != 16 503 $(error ) 504 endif 505 if 1 << 10 != 1024 506 $(error ) 507 endif 508 if 34 << 10 != 0x8800 509 $(error ) 510 endif 511 if 1099511627776 << 21 != 2305843009213693952 512 $(error ) 513 endif 514 if 1 << 61 != 2305843009213693952 515 $(error ) 516 endif 517 518 if 2 << 60 > 123434323 != 1 519 $(error ) 520 endif 521 522 523 # 524 # Subtraction 525 # 526 $(warning binary operator: - ) 527 if 1-1 != 0 528 $(error ) 529 endif 530 if 1023-511 != 512 531 $(error ) 532 endif 533 if 4 - 3 << 3 != 8 534 $(error ) 535 endif 536 537 538 # 539 # Addition 540 # 541 $(warning binary operator: + ) 542 if 1+1 != 2 543 $(error ) 544 endif 545 if 1234+1000 != 2234 546 $(error ) 547 endif 548 if 2 + 2 << 4 != 64 549 $(error ) 550 endif 551 552 553 # 554 # Modulus 555 # 556 $(warning binary operator: % ) 557 if 0%2 != 0 558 $(error ) 559 endif 560 if 10%7 != 3 561 $(error ) 562 endif 563 if 10 + 100%70 - 3 != 37 564 $(error ) 565 endif 566 567 568 # 569 # Division 570 # 571 $(warning binary operator: / ) 572 if 0/1 != 0 573 $(error ) 574 endif 575 if 1000/2 != 500 576 $(error ) 577 endif 578 if 1000/2 + 4 != 504 579 $(error ) 580 endif 581 if 5 + 1000/4 != 255 582 $(error ) 583 endif 584 585 586 # 587 # Multiplication 588 # 589 $(warning binary operator: * ) 590 if 1*1 != 1 591 $(error ) 592 endif 593 if 10*10 != 100 594 $(error ) 595 endif 596 if 1024*64 != 65536 597 $(error ) 598 endif 599 if 10*10 - 10 != 90 600 $(error ) 601 endif 602 if 1000 - 10*10 != 900 146 603 $(error ) 147 604 endif … … 151 608 # Logical NOT 152 609 # 610 $(warning unary operator: ! ) 153 611 if !1 154 612 $(error ) 155 else156 $(warning works)157 613 endif 158 614 159 615 if !42 == 0 160 $(warning works)161 616 else 162 617 $(error ) … … 164 619 165 620 if !0 == 1 166 $(warning works)167 621 else 168 622 $(error ) … … 170 624 171 625 if !!0 == 0 172 $(warning works) 173 else 174 $(error ) 175 endif 176 177 178 # 179 # Greater than 180 # 181 if 1 > 0 182 $(warning works) 183 else 184 $(error ) 185 endif 186 187 if 1024 > 1023 188 $(warning works) 189 else 190 $(error ) 191 endif 192 193 if 999 > 1023 194 $(error ) 195 else 196 $(warning works) 197 endif 198 199 200 # 201 # Greater or equal than 202 # 203 if 20 > 0 204 $(warning works) 205 else 206 $(error ) 207 endif 208 209 if 20 >= 20 210 $(warning works) 211 else 212 $(error ) 213 endif 214 215 if 19 >= 20 216 $(error ) 217 else 218 $(warning works) 219 endif 220 221 222 # 223 # target() 224 # 225 if 0 626 else 627 $(error ) 628 endif 629 630 if !0 * 123 != 123 631 $(error ) 632 endif 633 if !!!0 * 512 != 512 634 $(error ) 635 endif 636 637 638 # 639 # Bitwise NOT 640 # 641 $(warning unary operator: ~ ) 642 if ~0xfff != 0xfffffffffffff000 643 $(error ) 644 endif 645 646 647 # 648 # Pluss 649 # 650 $(warning unary operator: + ) 651 if +2 != 2 652 $(error ) 653 endif 654 if 1++++++++++++2134 != 2135 655 $(error ) 656 endif 657 658 659 # 660 # Minus (negation) 661 # 662 $(warning unary operator: - ) 663 if --2 != 2 664 $(error ) 665 endif 666 667 if 1 - -2 != 3 668 $(error ) 669 endif 670 671 672 # 673 # target 674 # 226 675 trg_deps_only: foobar 227 676 trg_with_cmds: foobar 228 677 echo $@ 229 678 679 $(warning unary operator: target ) # This flushes stuff in read.c 680 230 681 if target trg_with_cmds 231 $(warning works) 232 else 233 $(error target) 234 endif 235 236 if target trg_deps_only 237 $(error target) 238 else 239 $(warning works) 240 endif 241 242 if target foobar 243 $(error target) 244 else 245 $(warning works) 246 endif 247 endif 248 249 250 # 251 # defined() 252 # 682 else 683 $(error target trg_with_cmds) 684 endif 685 if target(trg_deps_only) 686 $(error target trg_deps_only) 687 endif 688 if target ( foobar ) 689 $(error target foobar) 690 endif 691 692 693 # 694 # defined 695 # 696 $(warning unary operator: defined ) 253 697 var_defined := 1 254 698 var_not_defined := 255 699 256 700 if defined var_defined 257 $(warning works) 258 else 259 $(error ) 260 endif 261 701 else 702 $(error ) 703 endif 262 704 if defined(var_defined) 263 $(warning works) 264 else 265 $(error ) 266 endif 267 705 else 706 $(error ) 707 endif 268 708 if defined (var_defined) 269 $(warning works) 270 else 271 $(error ) 272 endif 273 709 else 710 $(error ) 711 endif 712 if !defined(var_defined) 713 $(error ) 714 endif 274 715 if defined (var_not_defined) 275 716 $(error ) 276 else 277 $(warning works) 278 endif 717 endif 718 719 720 # 721 # bool 722 # 723 724 725 # 726 # string 727 # 728 279 729 280 730 … … 282 732 # Quick check of $(if-expr ) and $(expr ). 283 733 # 734 $(warning $$(if-expr ,,) ) 284 735 ifeq ($(if-expr 0 || 2,42,500),42) 285 $(warning if-expr test 1 succeeded) 286 else 287 $(error ) 288 endif 289 736 else 737 $(error ) 738 endif 290 739 ifeq ($(if-expr 5+3 == 231,42,500),42) 291 740 $(error ) 292 else 293 $(warning if-expr test 2 succeeded) 294 endif 295 741 endif 742 743 $(warning $$(expr ) ) 296 744 ifeq ($(expr 5+3),8) 297 $(warning expr test 1 succeeded)298 745 else 299 746 $(error expr:$(expr 5+3) expected 8) 300 747 endif 301 302 748 ifeq ($(expr 25*25),625) 303 $(warning expr test 2 succeeded)304 749 else 305 750 $(error expr:$(expr 25*25) expected 625) 306 751 endif 307 308 752 ifeq ($(expr 100/3),3) 309 753 $(error ) 310 else311 $(warning expr test 3 succeeded)312 754 endif 313 755
Note:
See TracChangeset
for help on using the changeset viewer.