| # -*-perl-*- | |
| $description = "Test the and & or functions.\n"; | |
| $details = "Try various uses of and & or to ensure they all give the correct | |
| results.\n"; | |
| # TEST #0 | |
| # For $(and ...), it will either be empty or the last value | |
| run_make_test(' | |
| NEQ = $(subst $1,,$2) | |
| f = | |
| t = true | |
| all: | |
| @echo 1 $(and ,$t) | |
| @echo 2 $(and $t) | |
| @echo 3 $(and $t,) | |
| @echo 4 $(and z,true,$f,false) | |
| @echo 5 $(and $t,$f,$(info bad short-circuit)) | |
| @echo 6 $(and $(call NEQ,a,b),true) | |
| @echo 7 $(and $(call NEQ,a,a),true) | |
| @echo 8 $(and z,true,fal,se) hi | |
| @echo 9 $(and ,true,fal,se)there | |
| @echo 10 $(and $(e) ,$t)', | |
| '', | |
| "1\n2 true\n3\n4\n5\n6 true\n7\n8 se hi\n9 there\n10\n"); | |
| # TEST #1 | |
| # For $(or ...), it will either be empty or the first true value | |
| run_make_test(' | |
| NEQ = $(subst $1,,$2) | |
| f = | |
| t = true | |
| all: | |
| @echo 1 $(or , ) | |
| @echo 2 $(or $t) | |
| @echo 3 $(or ,$t) | |
| @echo 4 $(or z,true,$f,false) | |
| @echo 5 $(or $t,$(info bad short-circuit)) | |
| @echo 6 $(or $(info short-circuit),$t) | |
| @echo 7 $(or $(call NEQ,a,b),true) | |
| @echo 8 $(or $(call NEQ,a,a),true) | |
| @echo 9 $(or z,true,fal,se) hi | |
| @echo 10 $(or ,true,fal,se)there | |
| @echo 11 $(or $(e) ,$f)', | |
| '', | |
| "short-circuit\n1\n2 true\n3 true\n4 z\n5 true\n6 true\n7 b\n8 true\n9 z hi\n10 truethere\n11\n"); | |
| 1; |