3
5
6
10
11test_suites([test_functor, test_arg, test_univ]).
12
13
18
19test_functor_1 :- functor(foo(a, b, c), foo, 3).
20test_functor_2(X, Y) :- functor(foo(a, b, c), X, Y).
21test_functor_3(X) :- functor(X, foo, 3).
22test_functor_4(X) :- functor(X, foo, 0).
23test_functor_5 :- functor(foo(a), foo, 2).
24test_functor_6 :- functor(foo(a), fo, 1).
25test_functor_7(X, Y) :- functor(1, X, Y).
26test_functor_8(X) :- functor(X, 1.1, 0).
27test_functor_9(F) :- functor(F, foo(a), 1).
28test_functor_10 :- functor([_|_], '.', 2).
29test_functor_11 :- functor([], [], 0).
30test_functor_12(X, Y) :- functor(X, Y, 3).
31test_functor_13(X, N) :- functor(X, foo, N).
32test_functor_14(X) :- functor(X, foo, a).
33test_functor_15(A, T, X) :- current_prolog_flag(max_arity, A), X is A + 1,
34 functor(T, foo, X).
35test_functor_16(Minus_1, F) :- Minus_1 is 0 - 1, functor(F, foo, Minus_1).
36
37throws_exception(test_functor_9). 38 39throws_exception(test_functor_12).
40throws_exception(test_functor_13).
41throws_exception(test_functor_14).
42throws_exception(test_functor_15).
43throws_exception(test_functor_16).
44
45
50
51test_arg_1 :- arg(1, foo(a, b), a).
52test_arg_2(X) :- arg(1, foo(a, b), X).
53test_arg_3(X) :- arg(1, foo(X, b), a).
54test_arg_4(X, Y) :- arg(1, foo(X, b), Y).
55test_arg_5 :- arg(1, foo(a, b), b).
56test_arg_6 :- arg(0, foo(a, b), foo).
57test_arg_7(N) :- arg(3, foo(3, 4), N).
58test_arg_8(X) :- arg(X, foo(a, b), a).
59test_arg_9(X) :- arg(1, X, a).
60test_arg_10(A) :- arg(0, atom, A).
61test_arg_11(A) :- arg(0, 3, A).
62test_arg_12(X) :- arg(1, foo(X), u(X)). 63
65 66throws_exception(test_arg_9).
67throws_exception(test_arg_10).
68throws_exception(test_arg_11).
69
74
75test_univ_1 :- '=..'(foo(a, b), [foo, a, b]).
76test_univ_2(X) :- '=..'(X, [foo, a, b]).
77test_univ_3(L) :- '=..'(foo(a, b), L).
78test_univ_4(X, Y) :- '=..'(foo(X, b), [foo, a, Y]).
79test_univ_5 :- '=..'(1, [1]).
80test_univ_6 :- '=..'(foo(a, b), [foo, b, a]).
81test_univ_7(X, Y) :- '=..'(X, Y).
82test_univ_8(X, Y) :- '=..'(X, [foo, a|Y]).
83test_univ_9(X) :- '=..'(X, [foo|bar]).
84test_univ_10(X, Foo) :- '=..'(X, [Foo, bar]).
85test_univ_11(X) :- '=..'(X, [3, 1]).
86test_univ_12(X) :- '=..'(X, [1.1, foo]).
87test_univ_13(X) :- '=..'(X, [a(b), 1]).
88test_univ_14(X) :- '=..'(X, 4).
89test_univ_15(X) :- '=..'(f(X), [f, u(X)]). 90
91throws_exception(test_univ_7).
92throws_exception(test_univ_8).
93throws_exception(test_univ_9).
94throws_exception(test_univ_10).
95throws_exception(test_univ_11).
96throws_exception(test_univ_12).
97throws_exception(test_univ_13).
98throws_exception(test_univ_14).
99
100test_univ_1b :- foo(a, b) =.. [foo, a, b].
101test_univ_2b(X) :- X =.. [foo, a, b].
102test_univ_3b(L) :- foo(a, b) =.. L.
103test_univ_4b(X, Y) :- foo(X, b) =.. [foo, a, Y].
104test_univ_5b :- 1 =.. [1].
105test_univ_6b :- foo(a, b) =.. [foo, b, a].
106test_univ_7b(X, Y) :- X =.. Y.
107test_univ_8b(X, Y) :- X =.. [foo, a|Y].
108test_univ_9b(X) :- X =.. [foo|bar].
109test_univ_10b(X, Foo) :- X =.. [Foo, bar].
110test_univ_11b(X) :- X =.. [3, 1].
111test_univ_12b(X) :- X =.. [1.1, foo].
112test_univ_13b(X) :- X =.. [a(b), 1].
113test_univ_14b(X) :- X =.. 4.
114test_univ_15b(X) :- f(X) =.. [f, u(X)]. 115
116throws_exception(test_univ_7b).
117throws_exception(test_univ_8b).
118throws_exception(test_univ_9b).
119throws_exception(test_univ_10b).
120throws_exception(test_univ_11b).
121throws_exception(test_univ_12b).
122throws_exception(test_univ_13b).
123throws_exception(test_univ_14b)