1#                                                                    -*-perl-*-
2$description = "Test the and & or functions.\n";
3
4$details = "Try various uses of and & or to ensure they all give the correct
5results.\n";
6
7# TEST #0
8# For $(and ...), it will either be empty or the last value
9run_make_test('
10NEQ = $(subst $1,,$2)
11f =
12t = true
13
14all:
15	@echo 1 $(and    ,$t)
16	@echo 2 $(and $t)
17	@echo 3 $(and $t,)
18	@echo 4 $(and z,true,$f,false)
19	@echo 5 $(and $t,$f,$(info bad short-circuit))
20	@echo 6 $(and $(call NEQ,a,b),true)
21	@echo 7 $(and $(call NEQ,a,a),true)
22	@echo 8 $(and z,true,fal,se) hi
23	@echo 9 $(and ,true,fal,se)there
24	@echo 10 $(and   $(e) ,$t)',
25              '',
26              "1\n2 true\n3\n4\n5\n6 true\n7\n8 se hi\n9 there\n10\n");
27
28# TEST #1
29# For $(or ...), it will either be empty or the first true value
30run_make_test('
31NEQ = $(subst $1,,$2)
32f =
33t = true
34
35all:
36	@echo 1 $(or    ,    )
37	@echo 2 $(or $t)
38	@echo 3 $(or ,$t)
39	@echo 4 $(or z,true,$f,false)
40	@echo 5 $(or $t,$(info bad short-circuit))
41	@echo 6 $(or $(info short-circuit),$t)
42	@echo 7 $(or $(call NEQ,a,b),true)
43	@echo 8 $(or $(call NEQ,a,a),true)
44	@echo 9 $(or z,true,fal,se) hi
45	@echo 10 $(or ,true,fal,se)there
46	@echo 11 $(or   $(e) ,$f)',
47              '',
48              "short-circuit\n1\n2 true\n3 true\n4 z\n5 true\n6 true\n7 b\n8 true\n9 z hi\n10 truethere\n11\n");
49
501;
51