Mercurial > repo
comparison ibin/brachylog/Brachylog-master/src/tests.pl @ 11865:318de151d0ec draft
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
author | HackEso <hackeso@esolangs.org> |
---|---|
date | Tue, 16 Jul 2019 21:37:27 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
11864:d054de7f80f2 | 11865:318de151d0ec |
---|---|
1 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
2 ____ ____ | |
3 \ \ / / | |
4 \ \ ____ / / | |
5 \ \/ \/ / | |
6 \ /\ / BRACHYLOG | |
7 \ / \ / A terse declarative logic programming language | |
8 / \ / \ | |
9 / \/ \ Written by Julien Cumin - 2017 | |
10 / /\____/\ \ https://github.com/JCumin/Brachylog | |
11 / / ___ \ \ | |
12 /___/ /__/ \___\ | |
13 | |
14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
15 | |
16 | |
17 :- consult(brachylog). | |
18 | |
19 | |
20 :- begin_tests(predicates). | |
21 | |
22 | |
23 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
24 BRACHYLOG_LESSEQUAL | |
25 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
26 test('lessequal_1', all(X == [2])) :- | |
27 run_from_atom('1≤2', _, X). | |
28 test('lessequal_2', all(X == [2])) :- | |
29 run_from_atom('_1≤2', _, X). | |
30 test('lessequal_3', all(X == [0])) :- | |
31 run_from_atom('0≤0', _, X). | |
32 test('lessequal_4', all(X == [13])) :- | |
33 run_from_atom('13≤13', _, X). | |
34 test('lessequal_5', all(X == [-42])) :- | |
35 run_from_atom('_42≤_42', _, X). | |
36 test('lessequal_6', all(X == [[1,2,3]])) :- | |
37 run_from_atom('[1,2,3]≤₁', _, X). | |
38 test('lessequal_7', all(X == [[-1,0,1]])) :- | |
39 run_from_atom('[_1,0,1]≤₁', _, X). | |
40 test('lessequal_8', all(X == [[-42,-23,-16]])) :- | |
41 run_from_atom('[_42,_23,_16]≤₁', _, X). | |
42 test('lessequal_9', all(X == [[1,1,3],[1,2,3],[1,3,3]])) :- | |
43 run_from_atom('[1,I,3]≤₁', _, X). | |
44 test('lessequal_10', fail) :- | |
45 run_from_atom('2≤1', _, _). | |
46 test('lessequal_11', fail) :- | |
47 run_from_atom('2≤_1', _, _). | |
48 test('lessequal_12', fail) :- | |
49 run_from_atom('[1,3,2]≤₁', _, _). | |
50 test('lessequal_13', fail) :- | |
51 run_from_atom('[1,I,_1]≤₁', _, _). | |
52 | |
53 | |
54 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
55 BRACHYLOG_GREATEREQUAL | |
56 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
57 test('greaterequal_1', all(X == [1])) :- | |
58 run_from_atom('2≥1', _, X). | |
59 test('greaterequal_2', all(X == [-1])) :- | |
60 run_from_atom('2≥_1', _, X). | |
61 test('greaterequal_3', all(X == [0])) :- | |
62 run_from_atom('0≥0', _, X). | |
63 test('greaterequal_4', all(X == [13])) :- | |
64 run_from_atom('13≥13', _, X). | |
65 test('greaterequal_5', all(X == [-42])) :- | |
66 run_from_atom('_42≥_42', _, X). | |
67 test('greaterequal_6', all(X == [[3,2,1]])) :- | |
68 run_from_atom('[3,2,1]≥₁', _, X). | |
69 test('greaterequal_7', all(X == [[1,0,-1]])) :- | |
70 run_from_atom('[1,0,_1]≥₁', _, X). | |
71 test('greaterequal_8', all(X == [[-16,-23,-42]])) :- | |
72 run_from_atom('[_16,_23,_42]≥₁', _, X). | |
73 test('greaterequal_9', all(X == [[3,1,1],[3,2,1],[3,3,1]])) :- | |
74 run_from_atom('[3,I,1]≥₁', _, X). | |
75 test('greaterequal_10', fail) :- | |
76 run_from_atom('1≥2', _, _). | |
77 test('greaterequal_11', fail) :- | |
78 run_from_atom('_1≥2', _, _). | |
79 test('greaterequal_12', fail) :- | |
80 run_from_atom('[1,3,2]≥₁', _, _). | |
81 test('greaterequal_13', fail) :- | |
82 run_from_atom('[_1,I,1]≥₁', _, _). | |
83 | |
84 | |
85 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
86 BRACHYLOG_CONTAINS | |
87 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
88 % Nothing, same code as brachylog_in | |
89 | |
90 | |
91 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
92 BRACHYLOG_IN | |
93 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
94 test('in_1', fail) :- | |
95 run_from_atom('∋', [], _). | |
96 test('in_2', fail) :- | |
97 run_from_atom('∋', "", _). | |
98 test('in_3', all(X == [0])) :- | |
99 run_from_atom('∋', 0, X). | |
100 test('in_4', all(X == [7])) :- | |
101 run_from_atom('∋', 7, X). | |
102 test('in_5', all(X == [7])) :- | |
103 run_from_atom('∋', '_7', X). | |
104 test('in_6', all(X == [1,0,2,3])) :- | |
105 run_from_atom('∋', 1023, X). | |
106 test('in_7', all(X == [1,0,2,3])) :- | |
107 run_from_atom('∋', [1,0,2,3], X). | |
108 test('in_8', all(X == [1023,"test"])) :- | |
109 run_from_atom('∋', [1023,"test"], X). | |
110 test('in_9', all(X == ["test"])) :- | |
111 run_from_atom('∋', ["test"], X). | |
112 test('in_10', all(X == ["t","e","s","t"])) :- | |
113 run_from_atom('∋', "test", X). | |
114 test('in_11', all(X == [1])) :- | |
115 run_from_atom('∋₀', 1023, X). | |
116 test('in_12', all(X == ["t"])) :- | |
117 run_from_atom('∋₀', "test", X). | |
118 test('in_13', all(X == [1023])) :- | |
119 run_from_atom('∋₀', [1023,"test"], X). | |
120 test('in_14', all(X == [0])) :- | |
121 run_from_atom('∋₁', 1023, X). | |
122 test('in_15', fail) :- | |
123 run_from_atom('∋₄', 1023, _). | |
124 | |
125 | |
126 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
127 BRACHYLOG_SUPERSET | |
128 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
129 % Nothing, same code as brachylog_subset | |
130 | |
131 | |
132 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
133 BRACHYLOG_SUBSET | |
134 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
135 test('subset_1', all(X == [[]])) :- | |
136 run_from_atom('⊇', [], X). | |
137 test('subset_2', all(X == [""])) :- | |
138 run_from_atom('⊇', "", X). | |
139 test('subset_3', all(X == [0])) :- | |
140 run_from_atom('⊇', 0, X). | |
141 test('subset_4', all(X == [7])) :- | |
142 run_from_atom('⊇', 7, X). | |
143 test('subset_5', all(X == [123,12,13,23,1,2,3])) :- | |
144 run_from_atom('⊇', 123, X). | |
145 test('subset_6', all(X == [[1,2,3],[1,2],[1,3],[2,3],[1],[2],[3],[]])) :- | |
146 run_from_atom('⊇', [1,2,3], X). | |
147 test('subset_7', all(X == ["test","tes","tet","tst","est","te","ts","tt","es","et","st","t","e","s","t",""])) :- | |
148 run_from_atom('⊇', "test", X). | |
149 test('subset_8', fail) :- | |
150 run_from_atom('⊇', [1,2,3], [1,5]). | |
151 | |
152 | |
153 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
154 BRACHYLOG_REVERSE | |
155 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
156 test('reverse_1', all(X == [0])) :- | |
157 run_from_atom('↔', 0, X). | |
158 test('reverse_2', all(X == [[]])) :- | |
159 run_from_atom('↔', [], X). | |
160 test('reverse_3', all(X == [""])) :- | |
161 run_from_atom('↔', "", X). | |
162 test('reverse_4', all(X == [321])) :- | |
163 run_from_atom('↔', 123, X). | |
164 test('reverse_5', all(X == [321])) :- | |
165 run_from_atom('↔', 1230, X). | |
166 test('reverse_6', all(X == ["tset"])) :- | |
167 run_from_atom('↔', "test", X). | |
168 test('reverse_7', all(X == [[0,3,2,1]])) :- | |
169 run_from_atom('↔', [1,2,3,0], X). | |
170 test('reverse_8', all(X == [[1,2,3,2,1]])) :- | |
171 run_from_atom('↔?', '[1,2,3,I,J]', X). | |
172 test('reverse_9', all(X == [["a","b","c","b","a"]])) :- | |
173 run_from_atom('↔?', '["a","b","c",I,J]', X). | |
174 | |
175 | |
176 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
177 BRACHYLOG_CALL_PREDICATE | |
178 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
179 % TODO | |
180 | |
181 | |
182 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
183 BRACHYLOG_CIRCULAR_PERMUTE_COUNTERCLOCKWISE | |
184 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
185 test('circular_permute_counterclockwise_1', all(X == [[]])) :- | |
186 run_from_atom('↺', [], X). | |
187 test('circular_permute_counterclockwise_2', all(X == [""])) :- | |
188 run_from_atom('↺', "", X). | |
189 test('circular_permute_counterclockwise_3', all(X == [0])) :- | |
190 run_from_atom('↺', 0, X). | |
191 test('circular_permute_counterclockwise_4', all(X == [231])) :- | |
192 run_from_atom('↺', 123, X). | |
193 test('circular_permute_counterclockwise_5', all(X == ["estt"])) :- | |
194 run_from_atom('↺', "test", X). | |
195 test('circular_permute_counterclockwise_6', all(X == [[2,"test",1]])) :- | |
196 run_from_atom('↺', [1,2,"test"], X). | |
197 test('circular_permute_counterclockwise_7', all(X == [[4,5,6,1,2,3]])) :- | |
198 run_from_atom('↺₃', [1,2,3,4,5,6], X). | |
199 | |
200 | |
201 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
202 BRACHYLOG_CIRCULAR_PERMUTE_CLOCKWISE | |
203 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
204 test('circular_permute_clockwise_1', all(X == [[]])) :- | |
205 run_from_atom('↻', [], X). | |
206 test('circular_permute_clockwise_2', all(X == [""])) :- | |
207 run_from_atom('↻', "", X). | |
208 test('circular_permute_clockwise_3', all(X == [0])) :- | |
209 run_from_atom('↻', 0, X). | |
210 test('circular_permute_clockwise_4', all(X == [312])) :- | |
211 run_from_atom('↻', 123, X). | |
212 test('circular_permute_clockwise_5', all(X == ["ttes"])) :- | |
213 run_from_atom('↻', "test", X). | |
214 test('circular_permute_clockwise_6', all(X == [["test",1,2]])) :- | |
215 run_from_atom('↻', [1,2,"test"], X). | |
216 test('circular_permute_clockwise_7', all(X == [[4,5,6,1,2,3]])) :- | |
217 run_from_atom('↻₃', [1,2,3,4,5,6], X). | |
218 | |
219 | |
220 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
221 BRACHYLOG_ROOT | |
222 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
223 test('root_1', all(X == [-1,1])) :- | |
224 run_from_atom('√', 1, X). | |
225 test('root_2', all(X == [0])) :- | |
226 run_from_atom('√', 0, X). | |
227 test('root_3', all(X == [-12,12])) :- | |
228 run_from_atom('√', 144, X). | |
229 test('root_4', all(X == [2.23606797749979])) :- | |
230 run_from_atom('√', 5, X). | |
231 test('root_5', throws(_)) :- | |
232 run_from_atom('√', '_5', _). | |
233 test('root_6', all(X == [2.04939015319192])) :- | |
234 run_from_atom('√', 4.2, X). | |
235 test('root_7', all(X == [3])) :- | |
236 run_from_atom('√₃', 27, X). | |
237 test('root_8', all(X == [-3])) :- | |
238 run_from_atom('√₃', '_27', X). | |
239 | |
240 | |
241 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
242 BRACHYLOG_CEIL | |
243 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
244 test('ceil_1', fail) :- | |
245 run_from_atom('⌉', [], _). | |
246 test('ceil_2', all(X == [3])) :- | |
247 run_from_atom('⌉', [1,2,3], X). | |
248 test('ceil_3', all(X == [-5])) :- | |
249 run_from_atom('⌉', '[_9,_5,_13]', X). | |
250 test('ceil_4', all(X == ["test"])) :- | |
251 run_from_atom('⌉', ["test",2,3], X). | |
252 test('ceil_5', all(X == ["z"])) :- | |
253 run_from_atom('⌉', ["test","z"], X). | |
254 test('ceil_6', all(X == [123])) :- | |
255 run_from_atom('⌉₁', 123, X). | |
256 test('ceil_7', all(X == [124])) :- | |
257 run_from_atom('⌉₁', 123.45, X). | |
258 test('ceil_8', all(X == [-123])) :- | |
259 run_from_atom('⌉₁', '_123.45', X). | |
260 | |
261 | |
262 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
263 BRACHYLOG_FLOOR | |
264 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
265 test('floor_1', fail) :- | |
266 run_from_atom('⌋', [], _). | |
267 test('floor_2', all(X == [1])) :- | |
268 run_from_atom('⌋', [1,2,3], X). | |
269 test('floor_3', all(X == [-13])) :- | |
270 run_from_atom('⌋', '[_9,_5,_13]', X). | |
271 test('floor_4', all(X == [2])) :- | |
272 run_from_atom('⌋', ["test",2,3], X). | |
273 test('floor_5', all(X == ["test"])) :- | |
274 run_from_atom('⌋', ["test","z"], X). | |
275 test('floor_6', all(X == [123])) :- | |
276 run_from_atom('⌋₁', 123, X). | |
277 test('floor_7', all(X == [123])) :- | |
278 run_from_atom('⌋₁', 123.45, X). | |
279 test('floor_8', all(X == [-124])) :- | |
280 run_from_atom('⌋₁', '_123.45', X). | |
281 | |
282 | |
283 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
284 BRACHYLOG_RANGE_ASCENDING | |
285 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
286 test('range_ascending_1', all(X == [[0]])) :- | |
287 run_from_atom('⟦', 0, X). | |
288 test('range_ascending_2', all(X == [[0,1,2,3,4,5]])) :- | |
289 run_from_atom('⟦', 5, X). | |
290 test('range_ascending_3', all(X == [[-5,-4,-3,-2,-1,0]])) :- | |
291 run_from_atom('⟦', '_5', X). | |
292 test('range_ascending_4', all(X == [[1,2,3,4,5]])) :- | |
293 run_from_atom('⟦₁', 5, X). | |
294 test('range_ascending_5', all(X == [[9,10,11,12,13]])) :- | |
295 run_from_atom('⟦₂', [9,13], X). | |
296 | |
297 | |
298 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
299 BRACHYLOG_RANGE_DESCENDING | |
300 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
301 test('range_descending_1', all(X == [[0]])) :- | |
302 run_from_atom('⟧', 0, X). | |
303 test('range_descending_2', all(X == [[5,4,3,2,1,0]])) :- | |
304 run_from_atom('⟧', 5, X). | |
305 test('range_descending_3', all(X == [[0,-1,-2,-3,-4,-5]])) :- | |
306 run_from_atom('⟧', '_5', X). | |
307 test('range_descending_4', all(X == [[5,4,3,2,1]])) :- | |
308 run_from_atom('⟧₁', 5, X). | |
309 test('range_descending_5', all(X == [[13,12,11,10,9]])) :- | |
310 run_from_atom('⟧₂', [9,13], X). | |
311 | |
312 | |
313 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
314 BRACHYLOG_NATURAL_INTEGER | |
315 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
316 test('natural_integer_1', all(X == [0])) :- | |
317 run_from_atom('ℕ', 0, X). | |
318 test('natural_integer_2', all(X == [42])) :- | |
319 run_from_atom('ℕ', 42, X). | |
320 test('natural_integer_3', fail) :- | |
321 run_from_atom('ℕ', "test", _). | |
322 test('natural_integer_4', fail) :- | |
323 run_from_atom('ℕ', '_3', _). | |
324 test('natural_integer_5', fail) :- | |
325 run_from_atom('ℕ', [1,2], _). | |
326 test('natural_integer_6', fail) :- | |
327 run_from_atom('ℕ', 4.2, _). | |
328 test('natural_integer_7', all(X == [42])) :- | |
329 run_from_atom('ℕ₄₂', 42, X). | |
330 test('natural_integer_8', fail) :- | |
331 run_from_atom('ℕ₄₂', 41, _). | |
332 | |
333 | |
334 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
335 BRACHYLOG_INTEGER | |
336 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
337 test('integer_1', all(X == [0])) :- | |
338 run_from_atom('ℤ', 0, X). | |
339 test('integer_2', all(X == [42])) :- | |
340 run_from_atom('ℤ', 42, X). | |
341 test('integer_3', fail) :- | |
342 run_from_atom('ℤ', "test", _). | |
343 test('integer_4', all(X == [-3])) :- | |
344 run_from_atom('ℤ', '_3', X). | |
345 test('integer_5', fail) :- | |
346 run_from_atom('ℤ', [1,2], _). | |
347 test('integer_6', fail) :- | |
348 run_from_atom('ℤ', 4.2, _). | |
349 test('integer_7', all(X == [-42])) :- | |
350 run_from_atom('ℤ₄₂', '_42', X). | |
351 test('integer_8', fail) :- | |
352 run_from_atom('ℤ₄₂', '_41', _). | |
353 | |
354 | |
355 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
356 BRACHYLOG_FLOAT | |
357 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
358 test('float_1', all(X == [4.2])) :- | |
359 run_from_atom('ℝ', 4.2, X). | |
360 test('float_2', all(X == [0.0])) :- | |
361 run_from_atom('ℝ', 0.0, X). | |
362 test('float_3', all(X == [-4.2])) :- | |
363 run_from_atom('ℝ', '_4.2', X). | |
364 test('float_4', fail) :- | |
365 run_from_atom('ℝ', 0, _). | |
366 test('float_5', fail) :- | |
367 run_from_atom('ℝ', 42, _). | |
368 test('float_6', all(X == [42])) :- | |
369 run_from_atom('ℝ₁', 42, X). | |
370 | |
371 | |
372 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
373 BRACHYLOG_EMPTY | |
374 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
375 test('empty_1', nondet) :- | |
376 run_from_atom('∅', [], _). | |
377 test('empty_2', nondet) :- | |
378 run_from_atom('∅', 0, _). | |
379 test('empty_3', nondet) :- | |
380 run_from_atom('∅', "", _). | |
381 test('empty_4', nondet) :- | |
382 run_from_atom('∅', 0.0, _). | |
383 test('empty_5', fail) :- | |
384 run_from_atom('∅', [1], _). | |
385 test('empty_6', fail) :- | |
386 run_from_atom('∅', 1, _). | |
387 test('empty_7', fail) :- | |
388 run_from_atom('∅', "a", _). | |
389 | |
390 | |
391 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
392 BRACHYLOG_DIFFERENT | |
393 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
394 test('different_1', all(X == [12345])) :- | |
395 run_from_atom('≠', 12345, X). | |
396 test('different_1', fail) :- | |
397 run_from_atom('≠', 12344, _). | |
398 test('different_1', all(X == [[1,2,3]])) :- | |
399 run_from_atom('≠', [1,2,3], X). | |
400 test('different_1', fail) :- | |
401 run_from_atom('≠', [1,2,1], _). | |
402 | |
403 | |
404 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
405 BRACHYLOG_INTEGER_DIVISION | |
406 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
407 test('integer_division_1', all(X == [3])) :- | |
408 run_from_atom('÷', [6,2], X). | |
409 test('integer_division_2', all(X == [3])) :- | |
410 run_from_atom('÷', [7,2], X). | |
411 test('integer_division_3', all(X == [-3])) :- | |
412 run_from_atom('÷', '[_6,2]', X). | |
413 test('integer_division_1', fail) :- | |
414 run_from_atom('÷', '[6,0]', _). | |
415 test('integer_division_1', all(X == [0])) :- | |
416 run_from_atom('÷', '[0,_42]', X). | |
417 test('integer_division_1', all(X == [3])) :- | |
418 run_from_atom('÷', [6.2,2], X). | |
419 test('integer_division_1', all(X == [2])) :- | |
420 run_from_atom('÷₃', 6, X). | |
421 | |
422 | |
423 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
424 BRACHYLOG_MULTIPLY | |
425 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
426 test('multiply_1', all(X == [1])) :- | |
427 run_from_atom('×', [], X). | |
428 test('multiply_2', all(X == [12])) :- | |
429 run_from_atom('×', [6,2], X). | |
430 test('multiply_3', all(X == [12])) :- | |
431 run_from_atom('×', [2,6], X). | |
432 test('multiply_4', all(X == [-12])) :- | |
433 run_from_atom('×', '[_6,2]', X). | |
434 test('multiply_5', all(X == [24])) :- | |
435 run_from_atom('×', [2,3,4], X). | |
436 test('multiply_6', all(X == [0])) :- | |
437 run_from_atom('×', '[0,_42]', X). | |
438 test('multiply_7', all(X == [12.4])) :- | |
439 run_from_atom('×', [6.2,2], X). | |
440 test('multiply_8', all(X == [18])) :- | |
441 run_from_atom('×₃', 6, X). | |
442 | |
443 | |
444 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
445 BRACHYLOG_MODULO | |
446 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
447 test('modulo_1', all(X == [1])) :- | |
448 run_from_atom('%', [4,3], X). | |
449 test('modulo_2', all(X == [0])) :- | |
450 run_from_atom('%', [4,2], X). | |
451 test('modulo_3', all(X == [4])) :- | |
452 run_from_atom('%', [42,19], X). | |
453 | |
454 | |
455 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
456 BRACHYLOG_EXP | |
457 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
458 test('exp_1', all(X == [22026.465794806718])) :- | |
459 run_from_atom('*', 10, X). | |
460 test('exp_2', all(X == [2.302585092994046])) :- | |
461 run_from_atom('*₁', 10, X). | |
462 test('exp_3', all(X == [-0.8390715290764524])) :- | |
463 run_from_atom('*₂', 10, X). | |
464 test('exp_4', all(X == [-0.5440211108893698])) :- | |
465 run_from_atom('*₃', 10, X). | |
466 test('exp_5', all(X == [0.6483608274590866])) :- | |
467 run_from_atom('*₄', 10, X). | |
468 test('exp_6', all(X == [1.0471975511965979])) :- | |
469 run_from_atom('*₅', 0.5, X). | |
470 test('exp_7', all(X == [0.5235987755982989])) :- | |
471 run_from_atom('*₆', 0.5, X). | |
472 test('exp_8', all(X == [1.4711276743037347])) :- | |
473 run_from_atom('*₇', 10, X). | |
474 test('exp_9', all(X == [11013.232920103323])) :- | |
475 run_from_atom('*₈', 10, X). | |
476 test('exp_10', all(X == [11013.232874703393])) :- | |
477 run_from_atom('*₉', 10, X). | |
478 test('exp_11', all(X == [0.9999999958776927])) :- | |
479 run_from_atom('*₁₀', 10, X). | |
480 test('exp_12', all(X == [2.993222846126381])) :- | |
481 run_from_atom('*₁₁', 10, X). | |
482 test('exp_13', all(X == [2.99822295029797])) :- | |
483 run_from_atom('*₁₂', 10, X). | |
484 test('exp_14', all(X == [0.5493061443340549])) :- | |
485 run_from_atom('*₁₃', 0.5, X). | |
486 | |
487 | |
488 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
489 BRACHYLOG_PLUS | |
490 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
491 test('plus_1', all(X == [3])) :- | |
492 run_from_atom('+', [1,2], X). | |
493 test('plus_2', all(X == [2])) :- | |
494 run_from_atom('+', '[_3,5]', X). | |
495 test('plus_3', all(X == [-5])) :- | |
496 run_from_atom('+', '[_3,_2]', X). | |
497 test('plus_4', all(X == [21])) :- | |
498 run_from_atom('+', [1,2,3,4,5,6], X). | |
499 test('plus_5', all(X == [4.6])) :- | |
500 run_from_atom('+', [1.2,3.4], X). | |
501 test('plus_6', all(X == [13])) :- | |
502 run_from_atom('+', [13,0,0,0,0], X). | |
503 test('plus_7', all(X == [67])) :- | |
504 run_from_atom('+₄₂', 25, X). | |
505 | |
506 | |
507 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
508 BRACHYLOG_MINUS | |
509 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
510 test('minus_1', all(X == [-1])) :- | |
511 run_from_atom('-', [1,2], X). | |
512 test('minus_2', all(X == [-8])) :- | |
513 run_from_atom('-', '[_3,5]', X). | |
514 test('minus_3', all(X == [2])) :- | |
515 run_from_atom('-', '[_1,_3]', X). | |
516 test('minus_4', all(X == [-3])) :- | |
517 run_from_atom('-', [1,2,3,4,5,6], X). | |
518 test('minus_5', all(X == [-2.2])) :- | |
519 run_from_atom('-', [1.2,3.4], X). | |
520 test('minus_6', all(X == [13])) :- | |
521 run_from_atom('-', [13,0,0,0,0], X). | |
522 test('minus_7', all(X == [-17])) :- | |
523 run_from_atom('-₄₂', 25, X). | |
524 | |
525 | |
526 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
527 BRACHYLOG_DIVIDE | |
528 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
529 test('divide_1', all(X == [0.5])) :- | |
530 run_from_atom('/', [1,2], X). | |
531 test('divide_2', all(X == [3])) :- | |
532 run_from_atom('/', [6,2], X). | |
533 test('divide_3', all(X == [-0.5])) :- | |
534 run_from_atom('/', '[1,_2]', X). | |
535 test('divide_4', all(X == [0.1111111111111111])) :- | |
536 run_from_atom('/₁', 9, X). | |
537 | |
538 | |
539 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
540 BRACHYLOG_LESS | |
541 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
542 test('less_1', all(X == [2])) :- | |
543 run_from_atom('1<2', _, X). | |
544 test('less_2', all(X == [2])) :- | |
545 run_from_atom('_1<2', _, X). | |
546 test('less_3', fail) :- | |
547 run_from_atom('0<0', _, _). | |
548 test('less_4', fail) :- | |
549 run_from_atom('13<13', _, _). | |
550 test('less_5', fail) :- | |
551 run_from_atom('_42<_42', _, _). | |
552 test('less_6', all(X == [[1,2,3]])) :- | |
553 run_from_atom('[1,2,3]<₁', _, X). | |
554 test('less_7', all(X == [[-1,0,1]])) :- | |
555 run_from_atom('[_1,0,1]<₁', _, X). | |
556 test('less_8', all(X == [[-42,-23,-16]])) :- | |
557 run_from_atom('[_42,_23,_16]<₁', _, X). | |
558 test('less_9', all(X == [[1,2,3]])) :- | |
559 run_from_atom('[1,I,3]<₁', _, X). | |
560 test('less_10', fail) :- | |
561 run_from_atom('2<1', _, _). | |
562 test('less_11', fail) :- | |
563 run_from_atom('2<_1', _, _). | |
564 test('less_12', fail) :- | |
565 run_from_atom('[1,3,2]<₁', _, _). | |
566 test('less_13', fail) :- | |
567 run_from_atom('[1,I,_1]<₁', _, _). | |
568 | |
569 | |
570 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
571 BRACHYLOG_EQUAL | |
572 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
573 test('equal_1', all(X == [1111])) :- | |
574 run_from_atom('=', 1111, X). | |
575 test('equal_2', all(X == [[]])) :- | |
576 run_from_atom('=', [], X). | |
577 test('equal_3', all(X == [0])) :- | |
578 run_from_atom('=', 0, X). | |
579 test('equal_4', all(X == [[42,42,42,42]])) :- | |
580 run_from_atom('=', '[X,Y,42,Z]', X). | |
581 test('equal_5', fail) :- | |
582 run_from_atom('=', [1,1,1,2,1], _). | |
583 | |
584 | |
585 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
586 BRACHYLOG_GREATER | |
587 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
588 test('greater_1', all(X == [1])) :- | |
589 run_from_atom('2>1', _, X). | |
590 test('greater_2', all(X == [-1])) :- | |
591 run_from_atom('2>_1', _, X). | |
592 test('greater_3', fail) :- | |
593 run_from_atom('0>0', _, _). | |
594 test('greater_4', fail) :- | |
595 run_from_atom('13>13', _, _). | |
596 test('greater_5', fail) :- | |
597 run_from_atom('_42>_42', _, _). | |
598 test('greater_6', all(X == [[3,2,1]])) :- | |
599 run_from_atom('[3,2,1]>₁', _, X). | |
600 test('greater_7', all(X == [[1,0,-1]])) :- | |
601 run_from_atom('[1,0,_1]>₁', _, X). | |
602 test('greater_8', all(X == [[-16,-23,-42]])) :- | |
603 run_from_atom('[_16,_23,_42]>₁', _, X). | |
604 test('greater_9', all(X == [[3,2,1]])) :- | |
605 run_from_atom('[3,I,1]>₁', _, X). | |
606 test('greater_10', fail) :- | |
607 run_from_atom('1>2', _, _). | |
608 test('greater_11', fail) :- | |
609 run_from_atom('_1>2', _, _). | |
610 test('greater_12', fail) :- | |
611 run_from_atom('[1,3,2]>₁', _, _). | |
612 test('greater_13', fail) :- | |
613 run_from_atom('[_1,I,1]>₁', _, _). | |
614 | |
615 | |
616 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
617 BRACHYLOG_TRANSPOSE | |
618 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
619 test('transpose_1', all(X == [[[1,4,7],[2,5,8],[3,6,9]]])) :- | |
620 run_from_atom('\\', [[1,2,3],[4,5,6],[7,8,9]], X). | |
621 | |
622 | |
623 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
624 BRACHYLOG_POWER | |
625 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ | |
626 test('power_1', all(X == [8])) :- | |
627 run_from_atom('^', [2,3], X). | |
628 test('power_2', all(X == [-8])) :- | |
629 run_from_atom('^', '[_2,3]', X). | |
630 test('power_3', all(X == [1])) :- | |
631 run_from_atom('^', [1,50], X). | |
632 test('power_4', all(X == [0])) :- | |
633 run_from_atom('^', [0,42], X). | |
634 test('power_5', all(X == [1])) :- | |
635 run_from_atom('^', [7,0], X). | |
636 test('power_6', all(X == [49])) :- | |
637 run_from_atom('^₂', 7, X). | |
638 | |
639 | |
640 :- end_tests(predicates). | |
641 | |
642 | |
643 % Useful templates | |
644 test('_', all(X == [])) :- | |
645 run_from_atom('', _, X). | |
646 | |
647 test('_', fail) :- | |
648 run_from_atom('', _, _). |