restore tests from operations module
[scilab.git] / scilab / modules / ast / tests / unit_tests / or_and.tst
1 // ============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - DIGITEO - Antoine ELIAS
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // ============================================================================
7 //
8 // <-- JVM NOT MANDATORY -->
9
10 false = %f;
11 true = %t;
12
13
14 //scalar AND scalar in operation
15 assert_checkfalse(false & false);
16 assert_checkfalse(false & true);
17 assert_checkfalse(true & false);
18 assert_checktrue(true & true);
19
20 //scalar OR scalar in operation
21 assert_checkfalse(false | false);
22 assert_checktrue(false | true);
23 assert_checktrue(true | false);
24 assert_checktrue(true | true);
25
26 //scalar AND scalar in condition
27 if (false & false) <> false then pause; end
28 if (false & true) <> false then pause; end
29 if (true & false) <> false then pause; end
30 if (true & true) <> true then pause; end
31
32 //scalar OR scalar in condition
33 if (false | false) <> false then pause; end
34 if (false | true) <> true then pause; end
35 if (true | false) <> true then pause; end
36 if (true | true) <> true then pause; end
37
38
39 MF = [false,false;false,false];
40 MT = [true,true;true,true];
41
42 //scalar AND matrix in operation
43 assert_checkfalse(false & MF);
44 assert_checkfalse(false & MT);
45 assert_checkfalse(true & MF);
46 assert_checktrue(true & MT);
47
48 //scalar OR matrix in operation
49 assert_checkfalse(false | MF);
50 assert_checktrue(false | MT);
51 assert_checktrue(true | MF);
52 assert_checktrue(true | MT);
53
54 //scalar AND matrix in condition
55 if (false & MF) <> false then pause; end
56 if (false & MT) <> false then pause; end
57 if (true & MF) <> false then pause; end
58 if (true & MT) <> true then pause; end
59
60 //scalar OR matrix in condition
61 if (false | MF) <> false then pause; end
62 if (false | MT) <> true then pause; end
63 if (true | MF) <> true then pause; end
64 if (true | MT) <> true then pause; end
65
66 //matrix AND scalar in operation
67 assert_checkfalse(MF & false);
68 assert_checkfalse(MF & true);
69 assert_checkfalse(MT & false);
70 assert_checktrue(MT & true);
71
72 //matrix OR scalar in operation
73 assert_checkfalse(MF | false);
74 assert_checktrue(MF | true);
75 assert_checktrue(MT | false);
76 assert_checktrue(MT | true);
77
78 //matrix AND scalar in condition
79 if (MF & false) <> false then pause; end
80 if (MF & true) <> false then pause; end
81 if (MT & false) <> false then pause; end
82 if (MT & true) <> true then pause; end
83
84 //matrix OR scalar in condition
85 if (MF | false) <> false then pause; end
86 if (MF | true) <> true then pause; end
87 if (MT | false) <> true then pause; end
88 if (MT | true) <> true then pause; end
89
90 //matrix AND matrix in operation
91 assert_checkfalse(MF & MF);
92 assert_checkfalse(MF & MT);
93 assert_checkfalse(MT & MF);
94 assert_checktrue(MT & MT);
95
96 //matrix OR matrix in operation
97 assert_checkfalse(MF | MF);
98 assert_checktrue(MF | MT);
99 assert_checktrue(MT | MF);
100 assert_checktrue(MT | MT);
101
102 //matrix AND matrix in condition
103 if (MF & MF) <> MF then pause; end
104 if (MF & MT) <> MF then pause; end
105 if (MT & MF) <> MF then pause; end
106 if (MT & MT) <> MT then pause; end
107
108 //matrix OR matrix in condition
109 if (MF | MF) <> MF then pause; end
110 if (MF | MT) <> MT then pause; end
111 if (MT | MF) <> MT then pause; end
112 if (MT | MT) <> MT then pause; end
113
114
115 //int | int
116 b0 = int8(0);
117 b1 = int8(1);
118 b2 = int8(2);
119 b3 = int8(4);
120 b4 = int8(8);
121
122 b12 = int8(3);
123 b13 = int8(5);
124 b14 = int8(9);
125 b23 = int8(6);
126 b24 = int8(10);
127 b34 = int8(12);
128
129 b123 = int8(7);
130 b124 = int8(11);
131 b134 = int8(13);
132 b234 = int8(14);
133 b1234 = int8(15);
134
135 //scalar OR scalar in operation
136 assert_checktrue((b0 | b0) == b0);
137 assert_checktrue((b0 | b1) == b1);
138 assert_checktrue((b0 | b2) == b2);
139 assert_checktrue((b0 | b3) == b3);
140 assert_checktrue((b0 | b4) == b4);
141 assert_checktrue((b0 | b12) == b12);
142 assert_checktrue((b0 | b13) == b13);
143 assert_checktrue((b0 | b14) == b14);
144 assert_checktrue((b0 | b23) == b23);
145 assert_checktrue((b0 | b24) == b24);
146 assert_checktrue((b0 | b34) == b34);
147 assert_checktrue((b0 | b123) == b123);
148 assert_checktrue((b0 | b134) == b134);
149 assert_checktrue((b0 | b234) == b234);
150 assert_checktrue((b0 | b1234) == b1234);
151
152 assert_checktrue((b1 | b1) == b1);
153 assert_checktrue((b1 | b2) == b12);
154 assert_checktrue((b1 | b3) == b13);
155 assert_checktrue((b1 | b4) == b14);
156 assert_checktrue((b1 | b12) == b12);
157 assert_checktrue((b1 | b13) == b13);
158 assert_checktrue((b1 | b14) == b14);
159 assert_checktrue((b1 | b23) == b123);
160 assert_checktrue((b1 | b24) == b124);
161 assert_checktrue((b1 | b34) == b134);
162 assert_checktrue((b1 | b123) == b123);
163 assert_checktrue((b1 | b134) == b134);
164 assert_checktrue((b1 | b234) == b1234);
165 assert_checktrue((b1 | b1234) == b1234);
166
167 assert_checktrue((b2 | b2) == b2);
168 assert_checktrue((b2 | b3) == b23);
169 assert_checktrue((b2 | b4) == b24);
170 assert_checktrue((b2 | b12) == b12);
171 assert_checktrue((b2 | b13) == b123);
172 assert_checktrue((b2 | b14) == b124);
173 assert_checktrue((b2 | b23) == b23);
174 assert_checktrue((b2 | b24) == b24);
175 assert_checktrue((b2 | b34) == b234);
176 assert_checktrue((b2 | b123) == b123);
177 assert_checktrue((b2 | b134) == b1234);
178 assert_checktrue((b2 | b234) == b234);
179 assert_checktrue((b2 | b1234) == b1234);
180
181 assert_checktrue((b3 | b3) == b3);
182 assert_checktrue((b3 | b4) == b34);
183 assert_checktrue((b3 | b12) == b123);
184 assert_checktrue((b3 | b13) == b13);
185 assert_checktrue((b3 | b14) == b134);
186 assert_checktrue((b3 | b23) == b23);
187 assert_checktrue((b3 | b24) == b234);
188 assert_checktrue((b3 | b34) == b34);
189 assert_checktrue((b3 | b123) == b123);
190 assert_checktrue((b3 | b134) == b134);
191 assert_checktrue((b3 | b234) == b234);
192 assert_checktrue((b3 | b1234) == b1234);
193
194 assert_checktrue((b4 | b4) == b4);
195 assert_checktrue((b4 | b12) == b124);
196 assert_checktrue((b4 | b13) == b134);
197 assert_checktrue((b4 | b14) == b14);
198 assert_checktrue((b4 | b23) == b234);
199 assert_checktrue((b4 | b24) == b24);
200 assert_checktrue((b4 | b34) == b34);
201 assert_checktrue((b4 | b123) == b1234);
202 assert_checktrue((b4 | b134) == b134);
203 assert_checktrue((b4 | b234) == b234);
204 assert_checktrue((b4 | b1234) == b1234);
205
206 assert_checktrue((b12 | b12) == b12);
207 assert_checktrue((b12 | b13) == b123);
208 assert_checktrue((b12 | b14) == b124);
209 assert_checktrue((b12 | b23) == b123);
210 assert_checktrue((b12 | b24) == b124);
211 assert_checktrue((b12 | b34) == b1234);
212 assert_checktrue((b12 | b123) == b123);
213 assert_checktrue((b12 | b134) == b1234);
214 assert_checktrue((b12 | b234) == b1234);
215 assert_checktrue((b12 | b1234) == b1234);
216
217 assert_checktrue((b13 | b13) == b13);
218 assert_checktrue((b13 | b14) == b134);
219 assert_checktrue((b13 | b23) == b123);
220 assert_checktrue((b13 | b24) == b1234);
221 assert_checktrue((b13 | b34) == b134);
222 assert_checktrue((b13 | b123) == b123);
223 assert_checktrue((b13 | b134) == b134);
224 assert_checktrue((b13 | b234) == b1234);
225 assert_checktrue((b13 | b1234) == b1234);
226
227 assert_checktrue((b14 | b14) == b14);
228 assert_checktrue((b14 | b23) == b1234);
229 assert_checktrue((b14 | b24) == b124);
230 assert_checktrue((b14 | b34) == b134);
231 assert_checktrue((b14 | b123) == b1234);
232 assert_checktrue((b14 | b134) == b134);
233 assert_checktrue((b14 | b234) == b1234);
234 assert_checktrue((b14 | b1234) == b1234);
235
236 assert_checktrue((b23 | b23) == b23);
237 assert_checktrue((b23 | b24) == b234);
238 assert_checktrue((b23 | b34) == b234);
239 assert_checktrue((b23 | b123) == b123);
240 assert_checktrue((b23 | b134) == b1234);
241 assert_checktrue((b23 | b234) == b234);
242 assert_checktrue((b23 | b1234) == b1234);
243
244 assert_checktrue((b24 | b24) == b24);
245 assert_checktrue((b24 | b34) == b234);
246 assert_checktrue((b24 | b123) == b1234);
247 assert_checktrue((b24 | b134) == b1234);
248 assert_checktrue((b24 | b234) == b234);
249 assert_checktrue((b24 | b1234) == b1234);
250
251 assert_checktrue((b34 | b34) == b34);
252 assert_checktrue((b34 | b123) == b1234);
253 assert_checktrue((b34 | b134) == b134);
254 assert_checktrue((b34 | b234) == b234);
255 assert_checktrue((b34 | b1234) == b1234);
256
257 assert_checktrue((b123 | b123) == b123);
258 assert_checktrue((b123 | b134) == b1234);
259 assert_checktrue((b123 | b234) == b1234);
260 assert_checktrue((b123 | b1234) == b1234);
261
262 assert_checktrue((b134 | b134) == b134);
263 assert_checktrue((b134 | b234) == b1234);
264 assert_checktrue((b134 | b1234) == b1234);
265
266 assert_checktrue((b234 | b234) == b234);
267 assert_checktrue((b234 | b1234) == b1234);
268
269 assert_checktrue((b1234 | b1234) == b1234);
270
271 //scalar AND scalar in operation
272 assert_checktrue((b0 & b0) == b0);
273 assert_checktrue((b0 & b1) == b0);
274 assert_checktrue((b0 & b2) == b0);
275 assert_checktrue((b0 & b3) == b0);
276 assert_checktrue((b0 & b4) == b0);
277 assert_checktrue((b0 & b12) == b0);
278 assert_checktrue((b0 & b13) == b0);
279 assert_checktrue((b0 & b14) == b0);
280 assert_checktrue((b0 & b23) == b0);
281 assert_checktrue((b0 & b24) == b0);
282 assert_checktrue((b0 & b34) == b0);
283 assert_checktrue((b0 & b123) == b0);
284 assert_checktrue((b0 & b134) == b0);
285 assert_checktrue((b0 & b234) == b0);
286 assert_checktrue((b0 & b1234) == b0);
287
288 assert_checktrue((b1 & b1) == b1);
289 assert_checktrue((b1 & b2) == b0);
290 assert_checktrue((b1 & b3) == b0);
291 assert_checktrue((b1 & b4) == b0);
292 assert_checktrue((b1 & b12) == b1);
293 assert_checktrue((b1 & b13) == b1);
294 assert_checktrue((b1 & b14) == b1);
295 assert_checktrue((b1 & b23) == b0);
296 assert_checktrue((b1 & b24) == b0);
297 assert_checktrue((b1 & b34) == b0);
298 assert_checktrue((b1 & b123) == b1);
299 assert_checktrue((b1 & b134) == b1);
300 assert_checktrue((b1 & b234) == b0);
301 assert_checktrue((b1 & b1234) == b1);
302
303 assert_checktrue((b2 & b2) == b2);
304 assert_checktrue((b2 & b3) == b0);
305 assert_checktrue((b2 & b4) == b0);
306 assert_checktrue((b2 & b12) == b2);
307 assert_checktrue((b2 & b13) == b0);
308 assert_checktrue((b2 & b14) == b0);
309 assert_checktrue((b2 & b23) == b2);
310 assert_checktrue((b2 & b24) == b2);
311 assert_checktrue((b2 & b34) == b0);
312 assert_checktrue((b2 & b123) == b2);
313 assert_checktrue((b2 & b134) == b0);
314 assert_checktrue((b2 & b234) == b2);
315 assert_checktrue((b2 & b1234) == b2);
316
317 assert_checktrue((b3 & b3) == b3);
318 assert_checktrue((b3 & b4) == b0);
319 assert_checktrue((b3 & b12) == b0);
320 assert_checktrue((b3 & b13) == b3);
321 assert_checktrue((b3 & b14) == b0);
322 assert_checktrue((b3 & b23) == b3);
323 assert_checktrue((b3 & b24) == b0);
324 assert_checktrue((b3 & b34) == b3);
325 assert_checktrue((b3 & b123) == b3);
326 assert_checktrue((b3 & b134) == b3);
327 assert_checktrue((b3 & b234) == b3);
328 assert_checktrue((b3 & b1234) == b3);
329
330 assert_checktrue((b4 & b4) == b4);
331 assert_checktrue((b4 & b12) == b0);
332 assert_checktrue((b4 & b13) == b0);
333 assert_checktrue((b4 & b14) == b4);
334 assert_checktrue((b4 & b23) == b0);
335 assert_checktrue((b4 & b24) == b4);
336 assert_checktrue((b4 & b34) == b4);
337 assert_checktrue((b4 & b123) == b0);
338 assert_checktrue((b4 & b134) == b4);
339 assert_checktrue((b4 & b234) == b4);
340 assert_checktrue((b4 & b1234) == b4);
341
342 assert_checktrue((b12 & b12) == b12);
343 assert_checktrue((b12 & b13) == b1);
344 assert_checktrue((b12 & b14) == b1);
345 assert_checktrue((b12 & b23) == b2);
346 assert_checktrue((b12 & b24) == b2);
347 assert_checktrue((b12 & b34) == b0);
348 assert_checktrue((b12 & b123) == b12);
349 assert_checktrue((b12 & b134) == b1);
350 assert_checktrue((b12 & b234) == b2);
351 assert_checktrue((b12 & b1234) == b12);
352
353 assert_checktrue((b13 & b13) == b13);
354 assert_checktrue((b13 & b14) == b1);
355 assert_checktrue((b13 & b23) == b3);
356 assert_checktrue((b13 & b24) == b0);
357 assert_checktrue((b13 & b34) == b3);
358 assert_checktrue((b13 & b123) == b13);
359 assert_checktrue((b13 & b134) == b13);
360 assert_checktrue((b13 & b234) == b3);
361 assert_checktrue((b13 & b1234) == b13);
362
363 assert_checktrue((b14 & b14) == b14);
364 assert_checktrue((b14 & b23) == b0);
365 assert_checktrue((b14 & b24) == b4);
366 assert_checktrue((b14 & b34) == b4);
367 assert_checktrue((b14 & b123) == b1);
368 assert_checktrue((b14 & b134) == b14);
369 assert_checktrue((b14 & b234) == b4);
370 assert_checktrue((b14 & b1234) == b14);
371
372 assert_checktrue((b23 & b23) == b23);
373 assert_checktrue((b23 & b24) == b2);
374 assert_checktrue((b23 & b34) == b3);
375 assert_checktrue((b23 & b123) == b23);
376 assert_checktrue((b23 & b134) == b3);
377 assert_checktrue((b23 & b234) == b23);
378 assert_checktrue((b23 & b1234) == b23);
379
380 assert_checktrue((b24 & b24) == b24);
381 assert_checktrue((b24 & b34) == b4);
382 assert_checktrue((b24 & b123) == b2);
383 assert_checktrue((b24 & b134) == b4);
384 assert_checktrue((b24 & b234) == b24);
385 assert_checktrue((b24 & b1234) == b24);
386
387 assert_checktrue((b34 & b34) == b34);
388 assert_checktrue((b34 & b123) == b3);
389 assert_checktrue((b34 & b134) == b34);
390 assert_checktrue((b34 & b234) == b34);
391 assert_checktrue((b34 & b1234) == b34);
392
393 assert_checktrue((b123 & b123) == b123);
394 assert_checktrue((b123 & b134) == b13);
395 assert_checktrue((b123 & b234) == b23);
396 assert_checktrue((b123 & b1234) == b123);
397
398 assert_checktrue((b134 & b134) == b134);
399 assert_checktrue((b134 & b234) == b34);
400 assert_checktrue((b134 & b1234) == b134);
401
402 assert_checktrue((b234 & b234) == b234);
403 assert_checktrue((b234 & b1234) == b234);
404
405 assert_checktrue((b1234 & b1234) == b1234);
406
407 //scalar OR scalar in condition
408 if b0 | b0 then pause; end
409
410 //others case returns true and we do not want to test with '=='
411
412 //scalar AND scalar in condition
413 if b0 & b0 then pause; end
414 if b0 & b1 then pause; end
415 if b0 & b2 then pause; end
416 if b0 & b3 then pause; end
417 if b0 & b4 then pause; end
418 if b0 & b12 then pause; end
419 if b0 & b13 then pause; end
420 if b0 & b14 then pause; end
421 if b0 & b23 then pause; end
422 if b0 & b24 then pause; end
423 if b0 & b34 then pause; end
424 if b0 & b123 then pause; end
425 if b0 & b124 then pause; end
426 if b0 & b134 then pause; end
427 if b0 & b234 then pause; end
428 if b0 & b1234 then pause; end
429 //others case returns true and we do not want to test with '=='