Sync with 5.4.0
[deliverable/titan.core.git] / regression_test / all_from / all_from_permutation.ttcn
1 /******************************************************************************
2 * Copyright (c) 2000-2015 Ericsson Telecom AB
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 ******************************************************************************/
8 module all_from_permutation
9 {
10 import from types all;
11 import from functions all;
12 import from imported_templates all;
13
14 // Test Target:
15 // B.1.3.3 Permutation
16 //"That shall be used only on values of record types"
17
18 //just to test these types as well:
19 modulepar RoI tsp_RoI3 := {20,21,22};
20 modulepar RoI tsp_SoI3 := {20,21,22};
21
22 const RoI c_RoI3 := {20,21,22};
23 const SoI c_SoI3 := {20,21,22};
24 /*
25 template RoI t_RoI1 := {1, 2, (6..9)};
26 template RoI t_RoI2 := {1, *, 3};
27
28 // B.1.3.3 Permutation
29 //EXAMPLE 1:
30 type RoI MySequenceOfType;
31
32 template MySequenceOfType MyTemplate1p := { permutation ( 1, 2, 3 ), 5 };
33 // matches any of the following sequences of 4 integers: 1,2,3,5; 1,3,2,5; 2,1,3,5;
34 // 2,3,1,5; 3,1,2,5; or 3,2,1,5
35
36 template MySequenceOfType MyTemplate2p := { permutation ( 1, 2, ? ), 5 };
37 // matches any sequence of 4 integers that ends with 5 and contains 1 and 2 at least once in
38 // other positions
39
40 template MySequenceOfType MyTemplate3p := { permutation ( 1, 2, 3 ), * };
41 // matches any sequence of integers starting with 1,2,3; 1,3,2; 2,1,3; 2,3,1; 3,1,2 or 3,2,1
42
43 template MySequenceOfType MyTemplate4p := { *, permutation ( 1, 2, 3 )};
44 // matches any sequence of integers ending with 1,2,3; 1,3,2; 2,1,3; 2,3,1; 3,1,2 or 3,2,1
45
46 template MySequenceOfType MyTemplate5p := { *, permutation ( 1, 2, 3 ),* };
47 // matches any sequence of integers containing any of the following substrings at any position:
48 // 1,2,3; 1,3,2; 2,1,3; 2,3,1; 3,1,2 or 3,2,1
49
50 template MySequenceOfType MyTemplate6p := { permutation ( 1, 2, * ), 5 };
51 // matches any sequence of integers that ends with 5 and containing 1 and 2 at least once in
52 // other positions
53
54 //error by Titan: Length restriction cannot be used in a template of type `integer'
55 // template MySequenceOfType MyTemplate7p := { permutation ( 1, 2, 3 ), * length (0..5) };
56 // matches any sequence of three to eight integers starting with 1,2,3; 1,3,2; 2,1,3; 2,3,1;
57 // 3,1,2 or 3,2,1
58
59 template integer MyInt1 := (1,2,3);
60 template integer MyInt2 := (1,2,?);
61 template integer MyInt3 := ?;
62 template integer MyInt4 := *;
63
64 template MySequenceOfType MyTemplate10 := { permutation (MyInt1, 2, 3 ), 5 };
65 // matches any of the sequences of 4 integers:
66 // 1,3,2,5; 2,1,3,5; 2,3,1,5; 3,1,2,5; or 3,2,1,5;
67 // 2,3,2,5; 2,2,3,5; 2,3,2,5; 3,2,2,5; or 3,2,2,5;
68 // 3,3,2,5; 2,3,3,5; 2,3,3,5; 3,3,2,5; or 3,2,3,5;
69
70 template MySequenceOfType MyTemplate11 := { permutation (MyInt2, 2, 3 ), 5 };
71 // matches any sequence of 4 integers that ends with 5 and contains 2 and 3 at least once in
72 // other positions
73
74 template MySequenceOfType MyTemplate12 := { permutation (MyInt3, 2, 3 ), 5 };
75 // matches any sequence of 4 integers that ends with 5 and contains 2 and 3 at least once in
76 // other positions
77
78 template MySequenceOfType MyTemplate13 := { permutation (MyInt4, 2, 3 ), 5 };
79 // matches any sequence of integers that ends with 5 and containing 2 and 3 at least once in
80 // other positions
81
82 template MySequenceOfType MyTemplate14 := { permutation (MyInt3, 2, ? ), 5 };
83 // matches any sequence of 4 integers that ends with 5 and contains 2 at least once in
84 // other positions
85
86 template MySequenceOfType MyTemplate15 := { permutation (MyInt4, 2, * ), 5 };
87 // matches any sequence of integers that ends with 5 and contains 2 at least once in
88 // other positions
89 */
90 //EXAMPLE 2:
91 template RoI t_RoI1 := {1, 2, *};
92 template RoI t_RoI1p := {permutation(all from t_RoI1)};
93 template RoI t_RoI1p_eq:={permutation(1, 2, *)};
94
95 template RoI t_RoI2p := {permutation(0, all from t_RoI1), 4, 5};
96 template RoI t_RoI2p_eq := {permutation(0,1,2,*), 4, 5};
97
98 template RoI t_RoI3 := {1, 2, 3};
99 template RoI t_RoI3p := {permutation( all from t_RoI3)};
100 template RoI t_RoI3p_eq := {permutation(1, 2, 3)};
101
102 template RoI t_RoI4p := {?,permutation(0, all from t_RoI1), 4, 5};
103 template RoI t_RoI4p_eq := {?,permutation(0,1,2,*), 4, 5};
104
105 template RoI t_RoI5p := {*,permutation(all from t_RoI3),*}
106 template RoI t_RoI5p_eq := {*,permutation(1,2,3),*}
107
108 template RoI t_RoI6p := {?,permutation(all from t_RoI3),4} //(?,permutation(1,2,3),4)
109 template RoI t_RoI6p_eq := {?,permutation(1,2,3),4}
110
111 template RoI t_RoI7 := {1, 2, ?};
112 template RoI t_RoI7p := {permutation(all from t_RoI7)};
113 template RoI t_RoI7p_eq := {permutation(1, 2, ?)};
114
115 template RoI t_RoI8p := {permutation(0, all from t_RoI7), 4, 5};
116 template RoI t_RoI8p_eq := {permutation(0,1,2,?), 4, 5};
117
118 //from modulepar:
119 template RoI t_RoI13roi := {permutation(all from tsp_RoI3)};
120 template RoI t_RoI13_eq := {permutation(20,21,22)};
121 template RoI t_RoI13soi := {permutation(all from tsp_SoI3)};
122
123 //from const:
124 template RoI t_RoI13roi_c :={permutation(all from c_RoI3)};
125 template RoI t_RoI13soi_c :={permutation(all from c_SoI3)};
126
127 //=== All from referring remote templates (imported templates)
128 template RoI t_importing_RoI1p := {permutation(all from t_imported_RoI1_P)};
129 template RoI t_importing_RoI2p := {permutation(0, all from t_imported_RoI1_P), 4, 5};
130 template RoI t_importing_RoI3p := {permutation( all from t_imported_RoI3_P)};
131
132 // ===== Set of ====
133 template SoI t_SoI1 := {1, 2, *};
134 template RoI t_SoI1p := {permutation(all from t_SoI1)};
135 template RoI t_SoI1p_eq:={permutation(1, 2, *)};
136
137 template RoI t_SoI2p := {permutation(0, all from t_SoI1), 4, 5};
138 template RoI t_SoI2p_eq := {permutation(0,1,2,*), 4, 5};
139
140 template SoI t_SoI3 := {1, 2, 3};
141 template RoI t_SoI3p := {permutation( all from t_SoI3)};
142 template RoI t_SoI3p_eq := {permutation(1, 2, 3)};
143
144 template RoI t_SoI4p := {?,permutation(0, all from t_SoI1), 4, 5};
145 template RoI t_SoI4p_eq := {?,permutation(0,1,2,*), 4, 5};
146
147 template RoI t_SoI5p := {*,permutation(all from t_SoI3),*}
148 template RoI t_SoI5p_eq := {*,permutation(1,2,3),*}
149
150 template RoI t_SoI6p := {?,permutation(all from t_SoI3),4} //(?,permutation(1,2,3),4)
151 template RoI t_SoI6p_eq := {?,permutation(1,2,3),4}
152
153 template SoI t_SoI7 := {1, 2, ?};
154 template RoI t_SoI7p := {permutation(all from t_SoI7)};
155 template RoI t_SoI7p_eq := {permutation(1, 2, ?)};
156
157 template RoI t_SoI8p := {permutation(0, all from t_SoI7), 4, 5};
158 template RoI t_SoI8p_eq := {permutation(0,1,2,?), 4, 5};
159
160 //===== charstring
161 template RoCS t_RoCS1 := { "apple","banana","","pear"};
162 template RoCS t_RoCS2 := { "apples","bananas","","pears"};
163
164 template RoCS t_rocs1 := { permutation ( all from t_RoCS1 ) };
165 template RoCS t_rocs1_eq := { permutation ( "apple","banana","","pear" ) };
166
167 template RoCS t_rocs2 := { permutation( "treeeeeeeeeeeeee",all from t_RoCS1, "dog", all from t_RoCS2) };
168 template RoCS t_rocs2_eq := { permutation( "treeeeeeeeeeeeee","apple","banana","","pear",
169 "dog","apples","bananas","","pears") };
170
171 //==== function reference =====
172 template RoF_int2int t_rofref_int2int := { refers(f_int2int_1),refers(f_int2int_2) }
173 template RoF_int2int t_fref_int2int_p := { permutation( all from t_rofref_int2int ) };
174 template RoF_int2int t_fref_int2int_p_eq := { permutation( refers(f_int2int_1),refers(f_int2int_2) ) };
175 //************************* Testcases for Templates of type Record of Integer ******************************
176
177 testcase tc_permut() runs on A
178 {
179 action("permut: ", t_RoI2p);
180 var RoI v;
181
182 v := {}
183 if (not match(v, t_RoI2p)) { setverdict(pass); }
184 else { setverdict(fail, v, " should NOT match ", t_RoI2p); }
185
186 v := { 1 }
187 if (not match(v, t_RoI2p)) { setverdict(pass); }
188 else { setverdict(fail, v, " should NOT match ", t_RoI2p); }
189
190 v := { 1, 2, 3, 4, 5 }
191 if (not match(v, t_RoI2p)) { setverdict(pass); }
192 else { setverdict(fail, v, " should NOT match ", t_RoI2p); }
193
194 v := { 0, 1, 2, 3, 4, 5 }
195 if (match(v, t_RoI2p)) { setverdict(pass); }
196 else { setverdict(fail, v, " should match ", t_RoI2p); }
197
198 v := { -2, -1, 0, 1, 2, 3, 4, 5 }
199 if (match(v, t_RoI2p)) { setverdict(pass); }
200 else { setverdict(fail, v, " should match ", t_RoI2p); }
201
202 v := { 1, 2, 3, 0, 4, 5 }
203 if (match(v, t_RoI2p)) { setverdict(pass); }
204 else { setverdict(fail, v, " should match ", t_RoI2p); }
205
206 v := { 1, 2, 3, 4, 5, 0 }
207 if (not match(v, t_RoI2p)) { setverdict(pass); }
208 else { setverdict(fail, v, " should NOT match ", t_RoI2p); }
209
210 v := { 5, 4, 3, 2, 1, 0 }
211 if (not match(v, t_RoI2p)) { setverdict(pass); }
212 else { setverdict(fail, v, " should NOT match ", t_RoI2p); }
213
214 v := { 3, 2, 1, 0, -1, -2, -3, 4, 5 }
215 if (match(v, t_RoI2p)) { setverdict(pass); }
216 else { setverdict(fail, v, " should match ", t_RoI2p); }
217
218 v := { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4 }
219 if (not match(v, t_RoI2p)) { setverdict(pass); }
220 else { setverdict(fail, v, " should NOT match ", t_RoI2p); }
221
222 v := { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 4, 5 }
223 if (match(v, t_RoI2p)) { setverdict(pass); }
224 else { setverdict(fail, v, " should match ", t_RoI2p); }
225 }
226
227 //====== Static Templates ======
228
229 //=== 1 ===
230
231 testcase tc_permut1_eq() runs on A {
232 f_checkRoITemplateEquivalence(t_RoI1p,t_RoI1p_eq);
233 }
234
235 testcase tc_permutImporting1_eq() runs on A {
236 f_checkRoITemplateEquivalence( t_importing_RoI1p,t_RoI1p_eq);
237 }
238
239 testcase tc_permut1() runs on A {
240 var RoRoI vl_goodValues := {{1,2},{2,1},{1,2,0},{1,2,1,2,3,4},{2,1,0},{2,1,222},{1,1,1,2,2,2,2} }
241 var RoRoI vl_badValues := {{},{1},{2},{3},{3,4,5},{3,4,5,1},{3,4,5,2}
242 }
243 f_checkRoITemplate(t_RoI1p,vl_goodValues,vl_badValues);
244 }
245
246 testcase tc_permutImporting1() runs on A {
247 var RoRoI vl_goodValues := {{1,2},{2,1},{1,2,0},{1,2,1,2,3,4},{2,1,0},{2,1,222},{1,1,1,2,2,2,2} }
248 var RoRoI vl_badValues := {{},{1},{2},{3},{3,4,5},{3,4,5,1},{3,4,5,2}
249 }
250 f_checkRoITemplate(t_importing_RoI1p,vl_goodValues,vl_badValues);
251 }
252 //=== 2 ===
253 //{permutation(0,1,2,*), 4, 5};
254 testcase tc_permut2_eq() runs on A {
255 f_checkRoITemplateEquivalence(t_RoI2p,t_RoI2p_eq);
256 }
257
258 testcase tc_permutImporting2_eq() runs on A {
259 f_checkRoITemplateEquivalence(t_RoI2p,t_RoI2p_eq);
260 }
261
262 testcase tc_permut2() runs on A {
263 var RoRoI vl_goodValues := {
264 {0,1,2,4,5},{0,2,1,4,5},{1,0,2,4,5},{2,1,0,4,5},{1,2,0,4,5},
265 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
266 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
267 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
268 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
269 { -2, -1, 0, 1, 2, 3, 4, 5 },
270 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 4, 5 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4,5 }
271 };
272 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4 }};
273 f_checkRoITemplate(t_RoI2p,vl_goodValues,vl_badValues);
274 }
275
276 testcase tc_permutImporting2() runs on A {
277 var RoRoI vl_goodValues := {
278 {0,1,2,4,5},{0,2,1,4,5},{1,0,2,4,5},{2,1,0,4,5},{1,2,0,4,5},
279 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
280 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
281 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
282 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
283 { -2, -1, 0, 1, 2, 3, 4, 5 },
284 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 4, 5 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4,5 }
285 };
286 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4 }};
287 f_checkRoITemplate(t_importing_RoI2p,vl_goodValues,vl_badValues);
288 }
289 //=== 3 ===
290 testcase tc_permut3_eq() runs on A {
291 f_checkRoITemplateEquivalence(t_RoI3p,t_RoI3p_eq);
292 }
293
294 testcase tc_permutImporting3_eq() runs on A {
295 f_checkRoITemplateEquivalence(t_importing_RoI3p,t_RoI3p_eq);
296 }
297
298 testcase tc_permut3() runs on A {
299 var RoRoI vl_goodValues := {
300 { 1,2,3},{1,3,2},
301 { 2,1,3},{2,3,1},
302 { 3,1,2},{3,2,1}
303 }
304 var RoRoI vl_badValues := { {},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{1,2,3,4}, {1,2,3,3},
305 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
306 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000}
307 }
308 f_checkRoITemplate(t_RoI3p,vl_goodValues,vl_badValues);
309 }
310
311
312 //=== 4 ===
313
314 testcase tc_permut4_eq() runs on A {
315 f_checkRoITemplateEquivalence(t_RoI4p,t_RoI4p_eq);
316 }
317
318 testcase tc_permut4() runs on A {
319 var RoRoI vl_goodValues := {
320 {99,0,1,2,3,4,5}, {99,0,1,3,2,4,5},{99,0,2,1,3,4,5},{99,0,2,3,1,4,5},{99,0,3,2,1,4,5},{99,0,3,1,2,4,5},
321 {99,1,0,2,3,4,5}, {99,1,0,3,2,4,5},{99,1,2,0,3,4,5},{99,1,2,3,0,4,5},{99,1,3,2,0,4,5},{99,1,3,0,2,4,5},
322 {99,2,1,0,3,4,5}, {99,2,1,3,0,4,5},{99,2,0,1,3,4,5},{99,2,0,3,1,4,5},{99,2,3,0,1,4,5},{99,2,3,1,0,4,5},
323 {99,3,1,0,2,4,5}, {99,3,1,2,0,4,5},{99,3,0,1,2,4,5},{99,3,0,2,1,4,5},{99,3,2,0,1,4,5},{99,3,2,1,0,4,5},
324 {99,0,1,2,9,4,5}, {99,0,1,9,2,4,5},{99,0,2,1,9,4,5},{99,0,2,9,1,4,5},{99,0,9,2,1,4,5},{99,0,9,1,2,4,5},
325 {99,1,0,2,9,4,5}, {99,1,0,9,2,4,5},{99,1,2,0,9,4,5},{99,1,2,9,0,4,5},{99,1,9,2,0,4,5},{99,1,9,0,2,4,5},
326 {99,2,1,0,9,4,5}, {99,2,1,9,0,4,5},{99,2,0,1,9,4,5},{99,2,0,9,1,4,5},{99,2,9,0,1,4,5},{99,2,9,1,0,4,5},
327 {99,9,1,0,2,4,5}, {99,9,1,2,0,4,5},{99,9,0,1,2,4,5},{99,9,0,2,1,4,5},{99,9,2,0,1,4,5},{99,9,2,1,0,4,5},
328 {99,9,1,9,0,2,4,5},
329 {99,9,1,2,9,0,4,5},{99,9,0,9,1,9,2,9,4,5},{99,9,0,2,1,4,5},{99,9,2,0,1,4,5},{99,9,2,1,0,4,5}
330 };
331 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},
332 {1,2,3,4,5}, {0,1,2,3,4,5},{0,1,2,3,5,4},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{1,1,1,1,1,1}};
333 f_checkRoITemplate(t_RoI4p,vl_goodValues,vl_badValues);
334 }
335
336
337 //=== 5 ===
338 //{*,permutation(1,2,3),*}
339 testcase tc_permut5_eq() runs on A {
340 f_checkRoITemplateEquivalence(t_RoI5p,t_RoI5p_eq);
341 }
342
343 testcase tc_permut5() runs on A {
344 var RoRoI vl_goodValues := {
345 { 1,2,3},{1,3,2},
346 { 0,2,1,3},{2,3,1},
347 { 3,1,2},{ 3,2,1},
348 {-200,200,0,1,2,3,-1000},{-200,200,0,1,3,2,-1000},
349 {-200,200,0,2,1,3,-1000},{-200,200,0,2,3,1,-1000},
350 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000},
351 {1,-200,200,0,1,2,3,-1000},{1,-200,200,0,1,3,2,-1000},
352 {2,-200,200,0,2,1,3,-1000,2},{1,2,-200,200,0,2,3,1,-1000,2,1},
353 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000}}
354 var RoRoI vl_badValues := { {},{1},{1,2},
355 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
356 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
357 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
358 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
359 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
360 }
361 f_checkRoITemplate(t_RoI5p,vl_goodValues,vl_badValues);
362 }
363 //=== 6 ===
364 //{?,permutation(1,2,3),4}
365 testcase tc_permut6_eq() runs on A {
366 f_checkRoITemplateEquivalence(t_RoI6p,t_RoI6p_eq);
367 }
368
369 testcase tc_permut6() runs on A {
370 var RoRoI vl_goodValues := {
371 { 0,1,2,3,4},{0,1,3,2,4},
372 { 0,2,1,3,4},{0,2,3,1,4},
373 { 0,3,1,2,4},{0,3,2,1,4},
374
375 { 9,1,2,3,4},{9,1,3,2,4},
376 { 9,2,1,3,4},{9,2,3,1,4},
377 { 9,3,1,2,4},{9,3,2,1,4},
378
379 {5,1,2,3,4},{5,1,3,2,4},
380 {5,2,1,3,4},{5,2,3,1,4},
381 {5,3,1,2,4},{5,3,2,1,4},
382
383 {99,1,2,3,4},{-5,1,3,2,4},
384 {1,2,1,3,4},{2,2,3,1,4},
385 {3,3,1,2,4},{4,3,2,1,4}}
386 var RoRoI vl_badValues := { {},{1},{1,2},
387 { 1,2,3},{1,3,2},
388 { 0,2,1,3},{0,2,3,1},
389 { 3,1,2},{ 3,2,1},
390
391 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
392 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
393 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
394 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
395 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
396 }
397 f_checkRoITemplate(t_RoI6p,vl_goodValues,vl_badValues);
398 }
399 //=== 7 ===
400 //{permutation{1, 2, ?}};
401 testcase tc_permut7_eq() runs on A {
402 f_checkRoITemplateEquivalence(t_RoI7p,t_RoI7p_eq);
403 }
404
405 testcase tc_permut7() runs on A {
406 var RoRoI vl_goodValues := {
407 {1,2,3}, {1,2,4},{1,2,5},{1,2,1000},
408 {1,3,2},{1,4,2},{1,5,2},{1,6,2},
409 {2,1,3},{2,1,4},{2,1,5},{2,1,6},
410 {3,1,2},{3,2,1},{4,1,2},{4,2,1},
411 {1000,1,2},{1,1000,2}
412 }
413 var RoRoI vl_badValues := { {},{1},{2},{3},{9999},{1,2},{2,1}, {13,31},
414 { 0,2,1,3},{0,2,3,1},
415 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
416 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
417 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
418 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
419 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
420 }
421 f_checkRoITemplate(t_RoI7p,vl_goodValues,vl_badValues);
422 }
423
424 //=== 8 ===
425 //{permutation(0,1,2,?),4,5}
426
427 testcase tc_permut8_eq() runs on A {
428 f_checkRoITemplateEquivalence(t_RoI8p,t_RoI8p_eq);
429 }
430
431 testcase tc_permut8() runs on A {
432 var RoRoI vl_goodValues := {
433 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
434 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
435 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
436 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
437 {0,1,2,9,4,5}, {0,1,9,2,4,5},{0,2,1,9,4,5},{0,2,9,1,4,5},{0,9,2,1,4,5},{0,9,1,2,4,5},
438 {1,0,2,9,4,5}, {1,0,9,2,4,5},{1,2,0,9,4,5},{1,2,9,0,4,5},{1,9,2,0,4,5},{1,9,0,2,4,5},
439 {2,1,0,9,4,5}, {2,1,9,0,4,5},{2,0,1,9,4,5},{2,0,9,1,4,5},{2,9,0,1,4,5},{2,9,1,0,4,5},
440 {9,1,0,2,4,5}, {9,1,2,0,4,5},{9,0,1,2,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5}
441 }
442 var RoRoI vl_badValues := { {},{1},{1,2},{9,1,9,0,2,4,5}, {9,1,2,9,0,4,5},{9,0,9,1,9,2,9,4,5}
443
444 }
445 f_checkRoITemplate(t_RoI8p,vl_goodValues,vl_badValues);
446 }
447 //=== 13 ===
448 //{permutation(0,1,2,?),4,5}
449
450 testcase tc_permut13roi_eq() runs on A {
451 f_checkRoITemplateEquivalence(t_RoI13roi,t_RoI13_eq);
452 }
453
454 testcase tc_permut13roi() runs on A {
455 var RoRoI vl_goodValues := {
456 {20,21,22},{20,22,21}
457 }
458 var RoRoI vl_badValues := { {},{1},{21},{21,22}, {20,21},{20,20,20}
459
460 }
461 f_checkRoITemplate(t_RoI13roi,vl_goodValues,vl_badValues);
462 }
463 testcase tc_permut13soi_eq() runs on A {
464 f_checkRoITemplateEquivalence(t_RoI13soi,t_RoI13_eq);
465 }
466
467 testcase tc_permut13soi() runs on A {
468 var RoRoI vl_goodValues := {
469 {20,21,22},{20,22,21}
470 }
471 var RoRoI vl_badValues := { {},{1},{21},{21,22}, {20,21},{20,20,20}
472
473 }
474 f_checkRoITemplate(t_RoI13soi,vl_goodValues,vl_badValues);
475 }
476
477 testcase tc_permut13roi_c_eq() runs on A {
478 f_checkRoITemplateEquivalence(t_RoI13roi_c,t_RoI13_eq);
479 }
480
481 testcase tc_permut13roi_c() runs on A {
482 var RoRoI vl_goodValues := {
483 {20,21,22},{20,22,21}
484 }
485 var RoRoI vl_badValues := { {},{1},{21},{21,22}, {20,21},{20,20,20}
486
487 }
488 f_checkRoITemplate(t_RoI13roi_c,vl_goodValues,vl_badValues);
489 }
490 testcase tc_permut13soi_c_eq() runs on A {
491 f_checkRoITemplateEquivalence(t_RoI13soi_c,t_RoI13_eq);
492 }
493
494 testcase tc_permut13soi_c() runs on A {
495 var RoRoI vl_goodValues := {
496 {20,21,22},{20,22,21}
497 }
498 var RoRoI vl_badValues := { {},{1},{21},{21,22}, {20,21},{20,20,20}
499
500 }
501 f_checkRoITemplate(t_RoI13soi_c,vl_goodValues,vl_badValues);
502 }
503
504 //=== Testcases for Dynamic Templates=====
505
506
507 //===1===
508 //{permutation(1, 2, *)};
509
510 testcase tc_permut1_eq_dyn() runs on A {
511 var template RoI tl_RoI1p := {permutation(all from t_RoI1)};
512 f_checkRoITemplateEquivalence(tl_RoI1p,t_RoI1p_eq);
513 }
514
515 testcase tc_permut1_eq_2dyn() runs on A {
516 var template RoI tl_RoI1 := {1, 2, *};
517 var template RoI tl_RoI1p := {permutation(all from tl_RoI1)};
518 f_checkRoITemplateEquivalence(tl_RoI1p,t_RoI1p_eq);
519 }
520
521 testcase tc_permut1_dyn() runs on A {
522 var template RoI tl_RoI1p := {permutation(all from t_RoI1)};
523 var RoRoI vl_goodValues := {{1,2},{2,1},{1,2,0},{1,2,1,2,3,4},{2,1,0},{2,1,222},{1,1,1,2,2,2,2} }
524 var RoRoI vl_badValues := {{},{1},{2},{3},{3,4,5},{3,4,5,1},{3,4,5,2}
525 }
526 f_checkRoITemplate(tl_RoI1p,vl_goodValues,vl_badValues);
527 }
528
529 testcase tc_permut1_2dyn() runs on A {
530 var template RoI tl_RoI1 := {1, 2, *};
531 var template RoI tl_RoI1p := {permutation(all from tl_RoI1)};
532 var RoRoI vl_goodValues := {{1,2},{2,1},{1,2,0},{1,2,1,2,3,4},{2,1,0},{2,1,222},{1,1,1,2,2,2,2} }
533 var RoRoI vl_badValues := {{},{1},{2},{3},{3,4,5},{3,4,5,1},{3,4,5,2}
534 }
535 f_checkRoITemplate(tl_RoI1p,vl_goodValues,vl_badValues);
536 }
537 //=== 2 ===
538 testcase tc_permut2_eq_dyn() runs on A {
539 var template RoI tl_RoI2p := {permutation(0, all from t_RoI1), 4, 5};
540 f_checkRoITemplateEquivalence(tl_RoI2p,t_RoI2p_eq);
541 }
542
543 testcase tc_permut2_eq_2dyn() runs on A {
544 var template RoI tl_RoI1 := {1, 2, *};
545 var template RoI tl_RoI2p := {permutation(0, all from tl_RoI1), 4, 5};
546 f_checkRoITemplateEquivalence(tl_RoI2p,t_RoI2p_eq);
547 }
548
549 testcase tc_permut2_dyn() runs on A {
550 var template RoI tl_RoI2p := {permutation(0, all from t_RoI1), 4, 5};
551 var RoRoI vl_goodValues := {
552 {0,1,2,4,5},{0,2,1,4,5},{1,0,2,4,5},{2,1,0,4,5},{1,2,0,4,5},
553 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
554 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
555 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
556 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
557 { -2, -1, 0, 1, 2, 3, 4, 5 },
558 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 4, 5 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4,5 }
559 };
560 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4 }};
561 f_checkRoITemplate(tl_RoI2p,vl_goodValues,vl_badValues);
562 }
563
564 testcase tc_permut2_2dyn() runs on A {
565 var template RoI tl_RoI1 := {1, 2, *};
566 log("debug1");
567 var template RoI tl_RoI2p := {permutation(0, all from tl_RoI1), 4, 5};
568 log("debug2");
569 var RoRoI vl_goodValues := {
570 {0,1,2,4,5},{0,2,1,4,5},{1,0,2,4,5},{2,1,0,4,5},{1,2,0,4,5},
571 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
572 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
573 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
574 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
575 { -2, -1, 0, 1, 2, 3, 4, 5 },
576 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 4, 5 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4,5 }
577 };
578 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4 }};
579 f_checkRoITemplate(tl_RoI2p,vl_goodValues,vl_badValues);
580 }
581
582 //=== 3 ===
583 testcase tc_permut3_eq_dyn() runs on A {
584 var template RoI tl_RoI3p := {permutation(all from t_RoI3)}
585 f_checkRoITemplateEquivalence(tl_RoI3p,t_RoI3p_eq);
586 }
587
588 testcase tc_permut3_eq_2dyn() runs on A {
589 var template RoI tl_RoI3 := {1, 2, 3};
590 var template RoI tl_RoI3p := {permutation(all from tl_RoI3)}
591 f_checkRoITemplateEquivalence(tl_RoI3p,t_RoI3p_eq);
592 }
593
594 testcase tc_permut3_dyn() runs on A {
595 log("debug1");
596 var template RoI tl_RoI3p := {permutation(all from t_RoI3)}
597 log("debug2");
598 var RoRoI vl_goodValues := {
599 { 1,2,3},{1,3,2},
600 { 2,1,3},{2,3,1},
601 { 3,1,2},{3,2,1}
602 }
603 var RoRoI vl_badValues := { {},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{1,2,3,4},
604 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
605 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000}
606 }
607 f_checkRoITemplate(tl_RoI3p,vl_goodValues,vl_badValues);
608 }
609 testcase tc_permut3_2dyn() runs on A {
610 var template RoI tl_RoI3 := {1, 2, 3};
611 log("debug1");
612 template RoI tl_RoI3p := {permutation(all from tl_RoI3)}
613 log("debug2");
614 var RoRoI vl_goodValues := {
615 { 1,2,3},{1,3,2},
616 { 2,1,3},{2,3,1},
617 { 3,1,2},{3,2,1}
618 }
619 var RoRoI vl_badValues := { {},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{1,2,3,4},
620 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
621 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000}
622 }
623 f_checkRoITemplate(tl_RoI3p,vl_goodValues,vl_badValues);
624 }
625
626 testcase tc_permut3A_dyn() runs on A {
627 var integer x:=1,y:=2,z:=3;
628 var template RoI tl_RoI3 := {x, y, z};
629 log("debug1");
630 //template RoI tl_RoI5p_dyn := {*,permutation(all from tl_RoI3p_dyn),*}
631 template RoI tl_RoI3p := {permutation(all from tl_RoI3)}
632 log("debug2");
633 var RoRoI vl_goodValues := {
634 { 1,2,3},{1,3,2 },
635 { 2,1,3},{2,3,1},
636 { 3,1,2},{3,2,1}}
637 var RoRoI vl_badValues := { {},{1},{1,2},
638 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
639 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
640 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
641 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
642 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
643 }
644 f_checkRoITemplate(tl_RoI3p,vl_goodValues,vl_badValues);
645 }
646 //=== 4 ===
647 testcase tc_permut4_eq_dyn() runs on A {
648 var template RoI tl_RoI4p := {?,permutation(0, all from t_RoI1), 4, 5};
649 f_checkRoITemplateEquivalence(tl_RoI4p,t_RoI4p_eq);
650 }
651
652 testcase tc_permut4_eq_2dyn() runs on A {
653 var template RoI tl_RoI1 := {1, 2, *};
654 var template RoI tl_RoI4p := {?,permutation(0, all from tl_RoI1), 4, 5};
655 f_checkRoITemplateEquivalence(tl_RoI4p,t_RoI4p_eq);
656 }
657
658
659 testcase tc_permut4_dyn() runs on A {
660 var template RoI tl_RoI4p := {permutation(0, all from t_RoI1), 4, 5}; //executor doesn't accept
661 var RoRoI vl_goodValues := {
662 {99,0,1,2,3,4,5}, {99,0,1,3,2,4,5},{99,0,2,1,3,4,5},{99,0,2,3,1,4,5},{99,0,3,2,1,4,5},{99,0,3,1,2,4,5},
663 {99,1,0,2,3,4,5}, {99,1,0,3,2,4,5},{99,1,2,0,3,4,5},{99,1,2,3,0,4,5},{99,1,3,2,0,4,5},{99,1,3,0,2,4,5},
664 {99,2,1,0,3,4,5}, {99,2,1,3,0,4,5},{99,2,0,1,3,4,5},{99,2,0,3,1,4,5},{99,2,3,0,1,4,5},{99,2,3,1,0,4,5},
665 {99,3,1,0,2,4,5}, {99,3,1,2,0,4,5},{99,3,0,1,2,4,5},{99,3,0,2,1,4,5},{99,3,2,0,1,4,5},{99,3,2,1,0,4,5},
666 {99,0,1,2,9,4,5}, {99,0,1,9,2,4,5},{99,0,2,1,9,4,5},{99,0,2,9,1,4,5},{99,0,9,2,1,4,5},{99,0,9,1,2,4,5},
667 {99,1,0,2,9,4,5}, {99,1,0,9,2,4,5},{99,1,2,0,9,4,5},{99,1,2,9,0,4,5},{99,1,9,2,0,4,5},{99,1,9,0,2,4,5},
668 {99,2,1,0,9,4,5}, {99,2,1,9,0,4,5},{99,2,0,1,9,4,5},{99,2,0,9,1,4,5},{99,2,9,0,1,4,5},{99,2,9,1,0,4,5},
669 {99,9,1,0,2,4,5}, {99,9,1,2,0,4,5},{99,9,0,1,2,4,5},{99,9,0,2,1,4,5},{99,9,2,0,1,4,5},{99,9,2,1,0,4,5},
670 {99,9,1,9,0,2,4,5}, {99,9,1,2,9,0,4,5},{99,9,0,9,1,9,2,9,4,5},{99,9,0,2,1,4,5},{99,9,2,0,1,4,5},{99,9,2,1,0,4,5}
671 };
672 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,5,4},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{1,1,1,1,1,1}};
673 f_checkRoITemplate(tl_RoI4p,vl_goodValues,vl_badValues);
674 }
675
676 testcase tc_permut4_2dyn() runs on A {
677 var template RoI tl_RoI1 := {1, 2, *};
678 var template RoI tl_RoI4p := {permutation(0, all from tl_RoI1), 4, 5}; //executor doesn't accept
679 var RoRoI vl_goodValues := {
680 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
681 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
682 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
683 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
684 {0,1,2,9,4,5}, {0,1,9,2,4,5},{0,2,1,9,4,5},{0,2,9,1,4,5},{0,9,2,1,4,5},{0,9,1,2,4,5},
685 {1,0,2,9,4,5}, {1,0,9,2,4,5},{1,2,0,9,4,5},{1,2,9,0,4,5},{1,9,2,0,4,5},{1,9,0,2,4,5},
686 {2,1,0,9,4,5}, {2,1,9,0,4,5},{2,0,1,9,4,5},{2,0,9,1,4,5},{2,9,0,1,4,5},{2,9,1,0,4,5},
687 {9,1,0,2,4,5}, {9,1,2,0,4,5},{9,0,1,2,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5},
688 {9,1,9,0,2,4,5}, {9,1,2,9,0,4,5},{9,0,9,1,9,2,9,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5}
689 };
690 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,5,4},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{1,1,1,1,1,1}};
691 f_checkRoITemplate(tl_RoI4p,vl_goodValues,vl_badValues);
692 }
693
694 //=== 5 ===
695
696 //{*,permutation(1,2,3),*}
697 testcase tc_permut5_eq_dyn() runs on A {
698 var template RoI tl_RoI5p := {*,permutation(all from t_RoI3),*}
699 f_checkRoITemplateEquivalence(tl_RoI5p,t_RoI5p_eq);
700 }
701
702 testcase tc_permut5_eq_2dyn() runs on A {
703 var template RoI tl_RoI3 := {1, 2, 3};
704 var template RoI tl_RoI5p := {*,permutation(all from tl_RoI3),*}
705 f_checkRoITemplateEquivalence(tl_RoI5p,t_RoI5p_eq);
706 }
707
708 testcase tc_permut5_dyn() runs on A {
709 var template RoI tl_RoI5p := {*,permutation(all from t_RoI3),*}
710 var RoRoI vl_goodValues := {
711 {1,2,3},{1,3,2},
712 {2,1,3},{2,3,1},
713 {3,1,2},{3,2,1},
714 {0,2,1,3},{0,2,1,3,0},
715 {-200,200,0,1,2,3,-1000},{-200,200,0,1,3,2,-1000},
716 {-200,200,0,2,1,3,-1000},{-200,200,0,2,3,1,-1000},
717 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000},
718 {1,-200,200,0,1,2,3,-1000},{1,-200,200,0,1,3,2,-1000},
719 {2,-200,200,0,2,1,3,-1000,2},{1,2,-200,200,0,2,3,1,-1000,2,1},
720 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000}}
721 var RoRoI vl_badValues := { {},{1},{1,2},
722 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
723 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
724 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
725 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
726 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
727 }
728 f_checkRoITemplate(tl_RoI5p,vl_goodValues,vl_badValues);
729 }
730
731 testcase tc_permut5_2dyn() runs on A {
732 var template RoI tl_RoI3 := {1, 2, 3};
733 var template RoI tl_RoI5p := {*,permutation(all from tl_RoI3),*}
734 var RoRoI vl_goodValues := {
735 { 1,2,3},{1,3,2},
736 { 2,1,3},{2,3,1},
737 { 3,1,2},{ 3,2,1},
738 {0,2,1,3},{0,2,1,3,0},
739 {-200,200,0,1,2,3,-1000},{-200,200,0,1,3,2,-1000},
740 {-200,200,0,2,1,3,-1000},{-200,200,0,2,3,1,-1000},
741 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000},
742 {1,-200,200,0,1,2,3,-1000},{1,-200,200,0,1,3,2,-1000},
743 {2,-200,200,0,2,1,3,-1000,2},{1,2,-200,200,0,2,3,1,-1000,2,1},
744 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000}}
745 var RoRoI vl_badValues := { {},{1},{1,2},
746 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
747 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
748 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
749 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
750 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
751 }
752 f_checkRoITemplate(tl_RoI5p,vl_goodValues,vl_badValues);
753 }
754 //=== 6 ===
755 //{?,permutation(1,2,3),4}
756 testcase tc_permut6_eq_dyn() runs on A {
757 var template RoI tl_RoI6p := {?,permutation(all from t_RoI3),4};
758 f_checkRoITemplateEquivalence(tl_RoI6p,t_RoI6p_eq);
759 }
760
761 testcase tc_permut6_eq_2dyn() runs on A {
762 var template RoI tl_RoI3 := {1, 2, 3};
763 var template RoI tl_RoI6p := {?,permutation(all from tl_RoI3),4};
764 f_checkRoITemplateEquivalence(tl_RoI6p,t_RoI6p_eq);
765 }
766
767 testcase tc_permut6_dyn() runs on A {
768 var template RoI tl_RoI6p := {?,permutation(all from t_RoI3),4} //(?,permutation(1,2,3),4)
769 var RoRoI vl_goodValues := {
770 {0,1,2,3,4},{0,1,3,2,4},
771 {0,2,1,3,4},{0,2,3,1,4},
772 {0,3,1,2,4},{0,3,2,1,4},
773 {1,1,2,3,4},{1,1,3,2,4},
774 {1,2,1,3,4},{1,2,3,1,4},
775 {1,3,1,2,4},{1,3,2,1,4},
776 {2,1,2,3,4},{2,1,3,2,4},
777 {2,2,1,3,4},{2,2,3,1,4},
778 {2,3,1,2,4},{2,3,2,1,4},
779 {3,1,2,3,4},{3,1,3,2,4},
780 {3,2,1,3,4},{3,2,3,1,4},
781 {3,3,1,2,4},{3,3,2,1,4},
782
783 {9,1,2,3,4},{9,1,3,2,4},
784 {9,2,1,3,4},{9,2,3,1,4},
785 {9,3,1,2,4},{9,3,2,1,4},
786
787 {5,1,2,3,4},{5,1,3,2,4},
788 {5,2,1,3,4},{5,2,3,1,4},
789 {5,3,1,2,4},{5,3,2,1,4},
790
791 {99,1,2,3,4},{-5,1,3,2,4},
792 {1,2,1,3,4},{2,2,3,1,4},
793 {3,3,1,2,4},{4,3,2,1,4}}
794 var RoRoI vl_badValues := { {},{1},{1,2},
795 {1,2,3},{1,3,2},
796 {0,2,1,3},{0,2,3,1},
797 {3,1,2},{3,2,1},
798
799 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
800 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
801 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
802 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
803 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
804 }
805 f_checkRoITemplate(tl_RoI6p,vl_goodValues,vl_badValues);
806 }
807 testcase tc_permut6_2dyn() runs on A {
808 var template RoI tl_RoI3 := {1, 2, 3};
809 var template RoI tl_RoI6p := {?,permutation(all from tl_RoI3),4};
810 var RoRoI vl_goodValues := {
811 {0,1,2,3,4},{0,1,3,2,4},
812 {0,2,1,3,4},{0,2,3,1,4},
813 {0,3,1,2,4},{0,3,2,1,4},
814
815 {1,1,2,3,4},{1,1,3,2,4},
816 {1,2,1,3,4},{1,2,3,1,4},
817 {1,3,1,2,4},{1,3,2,1,4},
818 {2,1,2,3,4},{2,1,3,2,4},
819 {2,2,1,3,4},{2,2,3,1,4},
820 {2,3,1,2,4},{2,3,2,1,4},
821 {3,1,2,3,4},{3,1,3,2,4},
822 {3,2,1,3,4},{3,2,3,1,4},
823 {3,3,1,2,4},{3,3,2,1,4},
824
825 {9,1,2,3,4},{9,1,3,2,4},
826 {9,2,1,3,4},{9,2,3,1,4},
827 {9,3,1,2,4},{9,3,2,1,4},
828
829 {5,1,2,3,4},{5,1,3,2,4},
830 {5,2,1,3,4},{5,2,3,1,4},
831 {5,3,1,2,4},{5,3,2,1,4},
832
833 {99,1,2,3,4},{-5,1,3,2,4},
834 {1,2,1,3,4},{2,2,3,1,4},
835 {3,3,1,2,4},{4,3,2,1,4}}
836 var RoRoI vl_badValues := { {},{1},{1,2},
837 { 1,2,3},{1,3,2},
838 { 0,2,1,3},{0,2,3,1},
839 { 3,1,2},{ 3,2,1},
840
841 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
842 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
843 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
844 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
845 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
846 }
847 f_checkRoITemplate(tl_RoI6p,vl_goodValues,vl_badValues);
848 }
849 testcase tc_permut6A_dyn() runs on A {
850 var integer x:=1,y:=2,z:=3;
851 var template RoI tl_RoI3 := {x, y, z};
852 var template RoI tl_RoI6p := {?,permutation(all from tl_RoI3),4}
853 var RoRoI vl_goodValues := {
854 {0,1,2,3,4},{0,1,3,2,4},
855 {0,2,1,3,4},{0,2,3,1,4},
856 {0,3,1,2,4},{0,3,2,1,4},
857 {1,1,2,3,4},{1,1,3,2,4},
858 {1,2,1,3,4},{1,2,3,1,4},
859 {1,3,1,2,4},{1,3,2,1,4},
860 {2,1,2,3,4},{2,1,3,2,4},
861 {2,2,1,3,4},{2,2,3,1,4},
862 {2,3,1,2,4},{2,3,2,1,4},
863 {3,1,2,3,4},{3,1,3,2,4},
864 {3,2,1,3,4},{3,2,3,1,4},
865 {3,3,1,2,4},{3,3,2,1,4},
866 {9,1,2,3,4},{9,1,3,2,4},
867 {9,2,1,3,4},{9,2,3,1,4},
868 {9,3,1,2,4},{9,3,2,1,4},
869
870 {5,1,2,3,4},{5,1,3,2,4},
871 {5,2,1,3,4},{5,2,3,1,4},
872 {5,3,1,2,4},{5,3,2,1,4},
873
874 {99,1,2,3,4},{-5,1,3,2,4},
875 {1,2,1,3,4},{2,2,3,1,4},
876 {3,3,1,2,4},{4,3,2,1,4}}
877 var RoRoI vl_badValues := { {},{1},{1,2},
878 { 1,2,3},{1,3,2},
879 { 2,1,3},{2,3,1},
880 { 3,1,2},{ 3,2,1},
881 { 0,1,2,3},{1,1,3,2},
882 { 2,2,1,3},{3,2,3,1},
883 { 4,3,1,2},{5,3,2,1},
884 { 1,2,3,4},{1,3,2,4},
885 { 2,1,3,4},{2,3,1,4},
886 { 3,1,2,4},{ 3,2,1,4},
887 { 0,1,2,3,5},{1,1,3,2,6},
888 { 2,2,1,3,7},{3,2,3,1,8},
889 { 4,3,1,2,9},{5,3,2,1,10},
890 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
891 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
892 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
893 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
894 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
895 }
896 f_checkRoITemplate(tl_RoI6p,vl_goodValues,vl_badValues);
897 }
898
899 //=== 7 ===
900 //{permutation{1, 2, ?}};
901 testcase tc_permut7_eq_dyn() runs on A {
902 var template RoI tl_RoI7p := {permutation(all from t_RoI7)};
903 f_checkRoITemplateEquivalence(tl_RoI7p,t_RoI7p_eq);
904 }
905
906 testcase tc_permut7_eq_2dyn() runs on A {
907 var template RoI tl_RoI7 := {1, 2, ?};
908 var template RoI tl_RoI7p := {permutation(all from tl_RoI7)};
909 f_checkRoITemplateEquivalence(tl_RoI7p,t_RoI7p_eq);
910 }
911
912 testcase tc_permut7_dyn() runs on A {
913 var template RoI tl_RoI7p := {permutation(all from t_RoI7)};
914 var RoRoI vl_goodValues := {
915 {1,2,3},{1,2,4},{1,2,5},{1,2,1000},
916 {1,3,2},{1,4,2},{1,5,2},{1,6,2},
917 {2,1,3},{2,1,4},{2,1,5},{2,1,6},
918 {3,1,2},{3,2,1},{4,1,2},{4,2,1},
919 {1000,1,2},{1,1000,2}
920 }
921 var RoRoI vl_badValues := { {},{1},{2},{3},{9999},{1,2},{2,1}, {13,31},
922 { 0,2,1,3},{0,2,3,1},{0,2,3,1,5},
923 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
924 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
925 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
926 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
927 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
928 }
929 f_checkRoITemplate(tl_RoI7p,vl_goodValues,vl_badValues);
930 }
931
932 testcase tc_permut7_2dyn() runs on A {
933 var template RoI tl_RoI7 := {1, 2, ?};
934 var template RoI tl_RoI7p := {permutation(all from tl_RoI7)};
935 var RoRoI vl_goodValues := {
936 {1,2,3}, {1,2,4},{1,2,5},{1,2,1000},
937 {1,3,2},{1,4,2},{1,5,2},{1,6,2},
938 {2,1,3},{2,1,4},{2,1,5},{2,1,6},
939 {3,1,2},{3,2,1},{4,1,2},{4,2,1},
940 {1000,1,2},{1,1000,2}
941 }
942 var RoRoI vl_badValues := { {},{1},{2},{3},{9999},{1,2},{2,1}, {13,31},
943 { 0,2,1,3},{0,2,3,1},
944 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
945 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
946 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
947 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
948 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
949 }
950 f_checkRoITemplate(tl_RoI7p,vl_goodValues,vl_badValues);
951 }
952
953 //=== 8 ===
954 //{permutation(0,1,2,?),4,5}
955
956 testcase tc_permut8_eq_dyn() runs on A {
957 var template RoI tl_RoI8p := {permutation(0, all from t_RoI7), 4, 5};
958 f_checkRoITemplateEquivalence(tl_RoI8p,t_RoI8p_eq);
959 }
960
961 testcase tc_permut8_eq_2dyn() runs on A {
962 var template RoI tl_RoI7 := {1, 2, ?};
963 var template RoI tl_RoI8p := {permutation(0, all from tl_RoI7), 4, 5};
964 f_checkRoITemplateEquivalence(tl_RoI8p,t_RoI8p_eq);
965 }
966
967 testcase tc_permut8_dyn() runs on A {
968 var template RoI tl_RoI8p := {permutation(0, all from t_RoI7), 4, 5};
969 var RoRoI vl_goodValues := {
970 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
971 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
972 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
973 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
974 {0,1,2,9,4,5}, {0,1,9,2,4,5},{0,2,1,9,4,5},{0,2,9,1,4,5},{0,9,2,1,4,5},{0,9,1,2,4,5},
975 {1,0,2,9,4,5}, {1,0,9,2,4,5},{1,2,0,9,4,5},{1,2,9,0,4,5},{1,9,2,0,4,5},{1,9,0,2,4,5},
976 {2,1,0,9,4,5}, {2,1,9,0,4,5},{2,0,1,9,4,5},{2,0,9,1,4,5},{2,9,0,1,4,5},{2,9,1,0,4,5},
977 {9,1,0,2,4,5}, {9,1,2,0,4,5},{9,0,1,2,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5}
978 }
979 var RoRoI vl_badValues := { {},{1},{1,2},{9,1,9,0,2,4,5}, {9,1,2,9,0,4,5},{9,0,9,1,9,2,9,4,5}
980
981 }
982 f_checkRoITemplate(tl_RoI8p,vl_goodValues,vl_badValues);
983 }
984
985 testcase tc_permut8_2dyn() runs on A {
986 var template RoI tl_RoI7 := {1, 2, ?};
987 var template RoI tl_RoI8p := {permutation(0, all from tl_RoI7), 4, 5};
988 var RoRoI vl_goodValues := {
989 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
990 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
991 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
992 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
993 {0,1,2,9,4,5}, {0,1,9,2,4,5},{0,2,1,9,4,5},{0,2,9,1,4,5},{0,9,2,1,4,5},{0,9,1,2,4,5},
994 {1,0,2,9,4,5}, {1,0,9,2,4,5},{1,2,0,9,4,5},{1,2,9,0,4,5},{1,9,2,0,4,5},{1,9,0,2,4,5},
995 {2,1,0,9,4,5}, {2,1,9,0,4,5},{2,0,1,9,4,5},{2,0,9,1,4,5},{2,9,0,1,4,5},{2,9,1,0,4,5},
996 {9,1,0,2,4,5}, {9,1,2,0,4,5},{9,0,1,2,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5}
997 }
998 var RoRoI vl_badValues := { {},{1},{1,2},{9,1,9,0,2,4,5}, {9,1,2,9,0,4,5},{9,0,9,1,9,2,9,4,5}
999
1000 }
1001 f_checkRoITemplate(tl_RoI8p,vl_goodValues,vl_badValues);
1002 }
1003
1004 //====================================================
1005 // ===== Permutation test for all from SoI ===========
1006 //====================================================
1007
1008
1009 //====== Static Templates ======
1010
1011 //=== 1 ===
1012
1013 testcase tc_permut1s_eq() runs on A {
1014 f_checkRoITemplateEquivalence(t_SoI1p,t_SoI1p_eq);
1015 }
1016
1017 testcase tc_permut1s() runs on A {
1018 var RoRoI vl_goodValues := {{1,2},{2,1},{1,2,0},{1,2,1,2,3,4},{2,1,0},{2,1,222},{1,1,1,2,2,2,2} }
1019 var RoRoI vl_badValues := {{},{1},{2},{3},{3,4,5},{3,4,5,1},{3,4,5,2}
1020 }
1021 f_checkRoITemplate(t_SoI1p,vl_goodValues,vl_badValues);
1022 }
1023
1024 //=== 2 ===
1025 //{permutation(0,1,2,*), 4, 5};
1026 testcase tc_permut2s_eq() runs on A {
1027 f_checkRoITemplateEquivalence(t_SoI2p,t_SoI2p_eq);
1028 }
1029
1030 testcase tc_permut2s() runs on A {
1031 var RoRoI vl_goodValues := {
1032 {0,1,2,4,5},{0,2,1,4,5},{1,0,2,4,5},{2,1,0,4,5},{1,2,0,4,5},
1033 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
1034 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
1035 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
1036 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
1037 { -2, -1, 0, 1, 2, 3, 4, 5 },
1038 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 4, 5 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4,5 }
1039 };
1040 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4 }};
1041 f_checkRoITemplate(t_SoI2p,vl_goodValues,vl_badValues);
1042 }
1043
1044 //=== 3 ===
1045 testcase tc_permut3s_eq() runs on A {
1046 f_checkRoITemplateEquivalence(t_SoI3p,t_SoI3p_eq);
1047 }
1048
1049 testcase tc_permut3s() runs on A {
1050 var RoRoI vl_goodValues := {
1051 { 1,2,3},{1,3,2},
1052 { 2,1,3},{2,3,1},
1053 { 3,1,2},{3,2,1}
1054 }
1055 var RoRoI vl_badValues := { {},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{1,2,3,4}, {1,2,3,3},
1056 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1057 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000}
1058 }
1059 f_checkRoITemplate(t_SoI3p,vl_goodValues,vl_badValues);
1060 }
1061
1062
1063 //=== 4 ===
1064
1065 testcase tc_permut4s_eq() runs on A {
1066 f_checkRoITemplateEquivalence(t_SoI4p,t_SoI4p_eq);
1067 }
1068
1069 testcase tc_permut4s() runs on A {
1070 var RoRoI vl_goodValues := {
1071 {99,0,1,2,3,4,5}, {99,0,1,3,2,4,5},{99,0,2,1,3,4,5},{99,0,2,3,1,4,5},{99,0,3,2,1,4,5},{99,0,3,1,2,4,5},
1072 {99,1,0,2,3,4,5}, {99,1,0,3,2,4,5},{99,1,2,0,3,4,5},{99,1,2,3,0,4,5},{99,1,3,2,0,4,5},{99,1,3,0,2,4,5},
1073 {99,2,1,0,3,4,5}, {99,2,1,3,0,4,5},{99,2,0,1,3,4,5},{99,2,0,3,1,4,5},{99,2,3,0,1,4,5},{99,2,3,1,0,4,5},
1074 {99,3,1,0,2,4,5}, {99,3,1,2,0,4,5},{99,3,0,1,2,4,5},{99,3,0,2,1,4,5},{99,3,2,0,1,4,5},{99,3,2,1,0,4,5},
1075 {99,0,1,2,9,4,5}, {99,0,1,9,2,4,5},{99,0,2,1,9,4,5},{99,0,2,9,1,4,5},{99,0,9,2,1,4,5},{99,0,9,1,2,4,5},
1076 {99,1,0,2,9,4,5}, {99,1,0,9,2,4,5},{99,1,2,0,9,4,5},{99,1,2,9,0,4,5},{99,1,9,2,0,4,5},{99,1,9,0,2,4,5},
1077 {99,2,1,0,9,4,5}, {99,2,1,9,0,4,5},{99,2,0,1,9,4,5},{99,2,0,9,1,4,5},{99,2,9,0,1,4,5},{99,2,9,1,0,4,5},
1078 {99,9,1,0,2,4,5}, {99,9,1,2,0,4,5},{99,9,0,1,2,4,5},{99,9,0,2,1,4,5},{99,9,2,0,1,4,5},{99,9,2,1,0,4,5},
1079 {99,9,1,9,0,2,4,5},
1080 {99,9,1,2,9,0,4,5},{99,9,0,9,1,9,2,9,4,5},{99,9,0,2,1,4,5},{99,9,2,0,1,4,5},{99,9,2,1,0,4,5}
1081 };
1082 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},
1083 {1,2,3,4,5}, {0,1,2,3,4,5},{0,1,2,3,5,4},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{1,1,1,1,1,1}};
1084 f_checkRoITemplate(t_SoI4p,vl_goodValues,vl_badValues);
1085 }
1086
1087
1088 //=== 5 ===
1089 //{*,permutation(1,2,3),*}
1090 testcase tc_permut5s_eq() runs on A {
1091 f_checkRoITemplateEquivalence(t_SoI5p,t_SoI5p_eq);
1092 }
1093
1094 testcase tc_permut5s() runs on A {
1095 var RoRoI vl_goodValues := {
1096 { 1,2,3},{1,3,2},
1097 { 0,2,1,3},{2,3,1},
1098 { 3,1,2},{ 3,2,1},
1099 {-200,200,0,1,2,3,-1000},{-200,200,0,1,3,2,-1000},
1100 {-200,200,0,2,1,3,-1000},{-200,200,0,2,3,1,-1000},
1101 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000},
1102 {1,-200,200,0,1,2,3,-1000},{1,-200,200,0,1,3,2,-1000},
1103 {2,-200,200,0,2,1,3,-1000,2},{1,2,-200,200,0,2,3,1,-1000,2,1},
1104 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000}}
1105 var RoRoI vl_badValues := { {},{1},{1,2},
1106 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1107 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1108 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1109 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1110 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1111 }
1112 f_checkRoITemplate(t_SoI5p,vl_goodValues,vl_badValues);
1113 }
1114 //=== 6 ===
1115 //{?,permutation(1,2,3),4}
1116 testcase tc_permut6s_eq() runs on A {
1117 f_checkRoITemplateEquivalence(t_SoI6p,t_SoI6p_eq);
1118 }
1119
1120 testcase tc_permut6s() runs on A {
1121 var RoRoI vl_goodValues := {
1122 { 0,1,2,3,4},{0,1,3,2,4},
1123 { 0,2,1,3,4},{0,2,3,1,4},
1124 { 0,3,1,2,4},{0,3,2,1,4},
1125
1126 { 9,1,2,3,4},{9,1,3,2,4},
1127 { 9,2,1,3,4},{9,2,3,1,4},
1128 { 9,3,1,2,4},{9,3,2,1,4},
1129
1130 {5,1,2,3,4},{5,1,3,2,4},
1131 {5,2,1,3,4},{5,2,3,1,4},
1132 {5,3,1,2,4},{5,3,2,1,4},
1133
1134 {99,1,2,3,4},{-5,1,3,2,4},
1135 {1,2,1,3,4},{2,2,3,1,4},
1136 {3,3,1,2,4},{4,3,2,1,4}}
1137 var RoRoI vl_badValues := { {},{1},{1,2},
1138 { 1,2,3},{1,3,2},
1139 { 0,2,1,3},{0,2,3,1},
1140 { 3,1,2},{ 3,2,1},
1141
1142 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1143 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1144 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1145 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1146 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1147 }
1148 f_checkRoITemplate(t_SoI6p,vl_goodValues,vl_badValues);
1149 }
1150 //=== 7 ===
1151 //{permutation{1, 2, ?}};
1152 testcase tc_permut7s_eq() runs on A {
1153 f_checkRoITemplateEquivalence(t_SoI7p,t_SoI7p_eq);
1154 }
1155
1156 testcase tc_permut7s() runs on A {
1157 var RoRoI vl_goodValues := {
1158 {1,2,3}, {1,2,4},{1,2,5},{1,2,1000},
1159 {1,3,2},{1,4,2},{1,5,2},{1,6,2},
1160 {2,1,3},{2,1,4},{2,1,5},{2,1,6},
1161 {3,1,2},{3,2,1},{4,1,2},{4,2,1},
1162 {1000,1,2},{1,1000,2}
1163 }
1164 var RoRoI vl_badValues := { {},{1},{2},{3},{9999},{1,2},{2,1}, {13,31},
1165 { 0,2,1,3},{0,2,3,1},
1166 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1167 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1168 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1169 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1170 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1171 }
1172 f_checkRoITemplate(t_SoI7p,vl_goodValues,vl_badValues);
1173 }
1174
1175 //=== 8 ===
1176 //{permutation(0,1,2,?),4,5}
1177
1178 testcase tc_permut8s_eq() runs on A {
1179 f_checkRoITemplateEquivalence(t_SoI8p,t_SoI8p_eq);
1180 }
1181
1182 testcase tc_permut8s() runs on A {
1183 var RoRoI vl_goodValues := {
1184 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
1185 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
1186 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
1187 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
1188 {0,1,2,9,4,5}, {0,1,9,2,4,5},{0,2,1,9,4,5},{0,2,9,1,4,5},{0,9,2,1,4,5},{0,9,1,2,4,5},
1189 {1,0,2,9,4,5}, {1,0,9,2,4,5},{1,2,0,9,4,5},{1,2,9,0,4,5},{1,9,2,0,4,5},{1,9,0,2,4,5},
1190 {2,1,0,9,4,5}, {2,1,9,0,4,5},{2,0,1,9,4,5},{2,0,9,1,4,5},{2,9,0,1,4,5},{2,9,1,0,4,5},
1191 {9,1,0,2,4,5}, {9,1,2,0,4,5},{9,0,1,2,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5}
1192 }
1193 var RoRoI vl_badValues := { {},{1},{1,2},{9,1,9,0,2,4,5}, {9,1,2,9,0,4,5},{9,0,9,1,9,2,9,4,5}
1194
1195 }
1196 f_checkRoITemplate(t_SoI8p,vl_goodValues,vl_badValues);
1197 }
1198
1199
1200 //=== Testcases for Dynamic Templates of type RoI created from SoI =====
1201
1202
1203 //===1===
1204 //{permutation(1, 2, *)};
1205
1206 testcase tc_permut1s_eq_dyn() runs on A {
1207 var template RoI tl_RoI1p := {permutation(all from t_SoI1)};
1208 f_checkRoITemplateEquivalence(tl_RoI1p,t_SoI1p_eq);
1209 }
1210
1211 testcase tc_permut1s_eq_2dyn() runs on A {
1212 var template RoI tl_RoI1 := {1, 2, *};
1213 var template RoI tl_RoI1p := {permutation(all from tl_RoI1)};
1214 f_checkRoITemplateEquivalence(tl_RoI1p,t_SoI1p_eq);
1215 }
1216
1217 testcase tc_permut1s_dyn() runs on A {
1218 var template RoI tl_RoI1p := {permutation(all from t_SoI1)};
1219 var RoRoI vl_goodValues := {{1,2},{2,1},{1,2,0},{1,2,1,2,3,4},{2,1,0},{2,1,222},{1,1,1,2,2,2,2} }
1220 var RoRoI vl_badValues := {{},{1},{2},{3},{3,4,5},{3,4,5,1},{3,4,5,2}
1221 }
1222 f_checkRoITemplate(tl_RoI1p,vl_goodValues,vl_badValues);
1223 }
1224
1225 testcase tc_permut1s_2dyn() runs on A {
1226 var template RoI tl_RoI1 := {1, 2, *};
1227 var template RoI tl_RoI1p := {permutation(all from tl_RoI1)};
1228 var RoRoI vl_goodValues := {{1,2},{2,1},{1,2,0},{1,2,1,2,3,4},{2,1,0},{2,1,222},{1,1,1,2,2,2,2} }
1229 var RoRoI vl_badValues := {{},{1},{2},{3},{3,4,5},{3,4,5,1},{3,4,5,2}
1230 }
1231 f_checkRoITemplate(tl_RoI1p,vl_goodValues,vl_badValues);
1232 }
1233 //=== 2 ===
1234 testcase tc_permut2s_eq_dyn() runs on A {
1235 var template RoI tl_RoI2p := {permutation(0, all from t_SoI1), 4, 5};
1236 f_checkRoITemplateEquivalence(tl_RoI2p,t_SoI2p_eq);
1237 }
1238
1239 testcase tc_permut2s_eq_2dyn() runs on A {
1240 var template RoI tl_RoI1 := {1, 2, *};
1241 var template RoI tl_RoI2p := {permutation(0, all from tl_RoI1), 4, 5};
1242 f_checkRoITemplateEquivalence(tl_RoI2p,t_SoI2p_eq);
1243 }
1244
1245 testcase tc_permut2s_dyn() runs on A {
1246 var template RoI tl_RoI2p := {permutation(0, all from t_SoI1), 4, 5};
1247 var RoRoI vl_goodValues := {
1248 {0,1,2,4,5},{0,2,1,4,5},{1,0,2,4,5},{2,1,0,4,5},{1,2,0,4,5},
1249 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
1250 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
1251 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
1252 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
1253 { -2, -1, 0, 1, 2, 3, 4, 5 },
1254 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 4, 5 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4,5 }
1255 };
1256 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4 }};
1257 f_checkRoITemplate(tl_RoI2p,vl_goodValues,vl_badValues);
1258 }
1259
1260 testcase tc_permut2s_2dyn() runs on A {
1261 var template RoI tl_RoI1 := {1, 2, *};
1262 log("debug1");
1263 var template RoI tl_RoI2p := {permutation(0, all from tl_RoI1), 4, 5};
1264 log("debug2");
1265 var RoRoI vl_goodValues := {
1266 {0,1,2,4,5},{0,2,1,4,5},{1,0,2,4,5},{2,1,0,4,5},{1,2,0,4,5},
1267 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
1268 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
1269 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
1270 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
1271 { -2, -1, 0, 1, 2, 3, 4, 5 },
1272 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 4, 5 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4,5 }
1273 };
1274 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4 }};
1275 f_checkRoITemplate(tl_RoI2p,vl_goodValues,vl_badValues);
1276 }
1277
1278 //=== 3 ===
1279 testcase tc_permut3s_eq_dyn() runs on A {
1280 var template RoI tl_RoI3p := {permutation(all from t_SoI3)}
1281 f_checkRoITemplateEquivalence(tl_RoI3p,t_SoI3p_eq);
1282 }
1283
1284 testcase tc_permut3s_eq_2dyn() runs on A {
1285 var template RoI tl_RoI3 := {1, 2, 3};
1286 var template RoI tl_RoI3p := {permutation(all from tl_RoI3)}
1287 f_checkRoITemplateEquivalence(tl_RoI3p,t_SoI3p_eq);
1288 }
1289
1290 testcase tc_permut3s_dyn() runs on A {
1291 log("debug1");
1292 var template RoI tl_RoI3p := {permutation(all from t_SoI3)}
1293 log("debug2");
1294 var RoRoI vl_goodValues := {
1295 { 1,2,3},{1,3,2},
1296 { 2,1,3},{2,3,1},
1297 { 3,1,2},{3,2,1}
1298 }
1299 var RoRoI vl_badValues := { {},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{1,2,3,4},
1300 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1301 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000}
1302 }
1303 f_checkRoITemplate(tl_RoI3p,vl_goodValues,vl_badValues);
1304 }
1305 testcase tc_permut3s_2dyn() runs on A {
1306 var template RoI tl_RoI3 := {1, 2, 3};
1307 log("debug1");
1308 template RoI tl_RoI3p := {permutation(all from tl_RoI3)}
1309 log("debug2");
1310 var RoRoI vl_goodValues := {
1311 { 1,2,3},{1,3,2},
1312 { 2,1,3},{2,3,1},
1313 { 3,1,2},{3,2,1}
1314 }
1315 var RoRoI vl_badValues := { {},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{1,2,3,4},
1316 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1317 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000}
1318 }
1319 f_checkRoITemplate(tl_RoI3p,vl_goodValues,vl_badValues);
1320 }
1321
1322 testcase tc_permut3sA_dyn() runs on A {
1323 var integer x:=1,y:=2,z:=3;
1324 var template RoI tl_RoI3 := {x, y, z};
1325 log("debug1");
1326 //template RoI tl_RoI5p_dyn := {*,permutation(all from tl_RoI3p_dyn),*}
1327 template RoI tl_RoI3p := {permutation(all from tl_RoI3)}
1328 log("debug2");
1329 var RoRoI vl_goodValues := {
1330 { 1,2,3},{1,3,2 },
1331 { 2,1,3},{2,3,1},
1332 { 3,1,2},{3,2,1}}
1333 var RoRoI vl_badValues := { {},{1},{1,2},
1334 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1335 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1336 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1337 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1338 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1339 }
1340 f_checkRoITemplate(tl_RoI3p,vl_goodValues,vl_badValues);
1341 }
1342 //=== 4 ===
1343 testcase tc_permut4s_eq_dyn() runs on A {
1344 var template RoI tl_RoI4p := {?,permutation(0, all from t_SoI1), 4, 5};
1345 f_checkRoITemplateEquivalence(tl_RoI4p,t_SoI4p_eq);
1346 }
1347
1348 testcase tc_permut4s_eq_2dyn() runs on A {
1349 var template RoI tl_RoI1 := {1, 2, *};
1350 var template RoI tl_RoI4p := {?,permutation(0, all from tl_RoI1), 4, 5};
1351 f_checkRoITemplateEquivalence(tl_RoI4p,t_SoI4p_eq);
1352 }
1353
1354
1355 testcase tc_permut4s_dyn() runs on A {
1356 var template RoI tl_RoI4p := {permutation(0, all from t_SoI1), 4, 5}; //executor doesn't accept
1357 var RoRoI vl_goodValues := {
1358 {99,0,1,2,3,4,5}, {99,0,1,3,2,4,5},{99,0,2,1,3,4,5},{99,0,2,3,1,4,5},{99,0,3,2,1,4,5},{99,0,3,1,2,4,5},
1359 {99,1,0,2,3,4,5}, {99,1,0,3,2,4,5},{99,1,2,0,3,4,5},{99,1,2,3,0,4,5},{99,1,3,2,0,4,5},{99,1,3,0,2,4,5},
1360 {99,2,1,0,3,4,5}, {99,2,1,3,0,4,5},{99,2,0,1,3,4,5},{99,2,0,3,1,4,5},{99,2,3,0,1,4,5},{99,2,3,1,0,4,5},
1361 {99,3,1,0,2,4,5}, {99,3,1,2,0,4,5},{99,3,0,1,2,4,5},{99,3,0,2,1,4,5},{99,3,2,0,1,4,5},{99,3,2,1,0,4,5},
1362 {99,0,1,2,9,4,5}, {99,0,1,9,2,4,5},{99,0,2,1,9,4,5},{99,0,2,9,1,4,5},{99,0,9,2,1,4,5},{99,0,9,1,2,4,5},
1363 {99,1,0,2,9,4,5}, {99,1,0,9,2,4,5},{99,1,2,0,9,4,5},{99,1,2,9,0,4,5},{99,1,9,2,0,4,5},{99,1,9,0,2,4,5},
1364 {99,2,1,0,9,4,5}, {99,2,1,9,0,4,5},{99,2,0,1,9,4,5},{99,2,0,9,1,4,5},{99,2,9,0,1,4,5},{99,2,9,1,0,4,5},
1365 {99,9,1,0,2,4,5}, {99,9,1,2,0,4,5},{99,9,0,1,2,4,5},{99,9,0,2,1,4,5},{99,9,2,0,1,4,5},{99,9,2,1,0,4,5},
1366 {99,9,1,9,0,2,4,5}, {99,9,1,2,9,0,4,5},{99,9,0,9,1,9,2,9,4,5},{99,9,0,2,1,4,5},{99,9,2,0,1,4,5},{99,9,2,1,0,4,5}
1367 };
1368 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,5,4},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{1,1,1,1,1,1}};
1369 f_checkRoITemplate(tl_RoI4p,vl_goodValues,vl_badValues);
1370 }
1371
1372 testcase tc_permut4s_2dyn() runs on A {
1373 var template RoI tl_RoI1 := {1, 2, *};
1374 var template RoI tl_RoI4p := {permutation(0, all from tl_RoI1), 4, 5}; //executor doesn't accept
1375 var RoRoI vl_goodValues := {
1376 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
1377 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
1378 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
1379 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
1380 {0,1,2,9,4,5}, {0,1,9,2,4,5},{0,2,1,9,4,5},{0,2,9,1,4,5},{0,9,2,1,4,5},{0,9,1,2,4,5},
1381 {1,0,2,9,4,5}, {1,0,9,2,4,5},{1,2,0,9,4,5},{1,2,9,0,4,5},{1,9,2,0,4,5},{1,9,0,2,4,5},
1382 {2,1,0,9,4,5}, {2,1,9,0,4,5},{2,0,1,9,4,5},{2,0,9,1,4,5},{2,9,0,1,4,5},{2,9,1,0,4,5},
1383 {9,1,0,2,4,5}, {9,1,2,0,4,5},{9,0,1,2,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5},
1384 {9,1,9,0,2,4,5}, {9,1,2,9,0,4,5},{9,0,9,1,9,2,9,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5}
1385 };
1386 var RoRoI vl_badValues := { {},{1},{1,2},{1,2,3},{1,2,3,4},{1,2,3,4,5},{0,1,2,3,5,4},{0,1,2,3,4,6},{ 5, 4, 3, 2, 1, 0 },{1,1,1,1,1,1}};
1387 f_checkRoITemplate(tl_RoI4p,vl_goodValues,vl_badValues);
1388 }
1389
1390 //=== 5 ===
1391
1392 //{*,permutation(1,2,3),*}
1393 testcase tc_permut5s_eq_dyn() runs on A {
1394 var template RoI tl_RoI5p := {*,permutation(all from t_SoI3),*}
1395 f_checkRoITemplateEquivalence(tl_RoI5p,t_SoI5p_eq);
1396 }
1397
1398 testcase tc_permut5s_eq_2dyn() runs on A {
1399 var template RoI tl_RoI3 := {1, 2, 3};
1400 var template RoI tl_RoI5p := {*,permutation(all from tl_RoI3),*}
1401 f_checkRoITemplateEquivalence(tl_RoI5p,t_SoI5p_eq);
1402 }
1403
1404 testcase tc_permut5s_dyn() runs on A {
1405 var template RoI tl_RoI5p := {*,permutation(all from t_SoI3),*}
1406 var RoRoI vl_goodValues := {
1407 {1,2,3},{1,3,2},
1408 {2,1,3},{2,3,1},
1409 {3,1,2},{3,2,1},
1410 {0,2,1,3},{0,2,1,3,0},
1411 {-200,200,0,1,2,3,-1000},{-200,200,0,1,3,2,-1000},
1412 {-200,200,0,2,1,3,-1000},{-200,200,0,2,3,1,-1000},
1413 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000},
1414 {1,-200,200,0,1,2,3,-1000},{1,-200,200,0,1,3,2,-1000},
1415 {2,-200,200,0,2,1,3,-1000,2},{1,2,-200,200,0,2,3,1,-1000,2,1},
1416 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000}}
1417 var RoRoI vl_badValues := { {},{1},{1,2},
1418 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1419 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1420 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1421 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1422 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1423 }
1424 f_checkRoITemplate(tl_RoI5p,vl_goodValues,vl_badValues);
1425 }
1426
1427 testcase tc_permut5s_2dyn() runs on A {
1428 var template RoI tl_RoI3 := {1, 2, 3};
1429 var template RoI tl_RoI5p := {*,permutation(all from tl_RoI3),*}
1430 var RoRoI vl_goodValues := {
1431 { 1,2,3},{1,3,2},
1432 { 2,1,3},{2,3,1},
1433 { 3,1,2},{ 3,2,1},
1434 {0,2,1,3},{0,2,1,3,0},
1435 {-200,200,0,1,2,3,-1000},{-200,200,0,1,3,2,-1000},
1436 {-200,200,0,2,1,3,-1000},{-200,200,0,2,3,1,-1000},
1437 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000},
1438 {1,-200,200,0,1,2,3,-1000},{1,-200,200,0,1,3,2,-1000},
1439 {2,-200,200,0,2,1,3,-1000,2},{1,2,-200,200,0,2,3,1,-1000,2,1},
1440 {-200,200,0,3,1,2,-1000},{-200,200,0,3,2,1,-1000}}
1441 var RoRoI vl_badValues := { {},{1},{1,2},
1442 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1443 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1444 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1445 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1446 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1447 }
1448 f_checkRoITemplate(tl_RoI5p,vl_goodValues,vl_badValues);
1449 }
1450 //=== 6 ===
1451 //{?,permutation(1,2,3),4}
1452 testcase tc_permut6s_eq_dyn() runs on A {
1453 var template RoI tl_RoI6p := {?,permutation(all from t_SoI3),4};
1454 f_checkRoITemplateEquivalence(tl_RoI6p,t_SoI6p_eq);
1455 }
1456
1457 testcase tc_permut6s_eq_2dyn() runs on A {
1458 var template RoI tl_RoI3 := {1, 2, 3};
1459 var template RoI tl_RoI6p := {?,permutation(all from tl_RoI3),4};
1460 f_checkRoITemplateEquivalence(tl_RoI6p,t_SoI6p_eq);
1461 }
1462
1463 testcase tc_permut6s_dyn() runs on A {
1464 var template RoI tl_RoI6p := {?,permutation(all from t_SoI3),4} //(?,permutation(1,2,3),4)
1465 var RoRoI vl_goodValues := {
1466 {0,1,2,3,4},{0,1,3,2,4},
1467 {0,2,1,3,4},{0,2,3,1,4},
1468 {0,3,1,2,4},{0,3,2,1,4},
1469 {1,1,2,3,4},{1,1,3,2,4},
1470 {1,2,1,3,4},{1,2,3,1,4},
1471 {1,3,1,2,4},{1,3,2,1,4},
1472 {2,1,2,3,4},{2,1,3,2,4},
1473 {2,2,1,3,4},{2,2,3,1,4},
1474 {2,3,1,2,4},{2,3,2,1,4},
1475 {3,1,2,3,4},{3,1,3,2,4},
1476 {3,2,1,3,4},{3,2,3,1,4},
1477 {3,3,1,2,4},{3,3,2,1,4},
1478
1479 {9,1,2,3,4},{9,1,3,2,4},
1480 {9,2,1,3,4},{9,2,3,1,4},
1481 {9,3,1,2,4},{9,3,2,1,4},
1482
1483 {5,1,2,3,4},{5,1,3,2,4},
1484 {5,2,1,3,4},{5,2,3,1,4},
1485 {5,3,1,2,4},{5,3,2,1,4},
1486
1487 {99,1,2,3,4},{-5,1,3,2,4},
1488 {1,2,1,3,4},{2,2,3,1,4},
1489 {3,3,1,2,4},{4,3,2,1,4}}
1490 var RoRoI vl_badValues := { {},{1},{1,2},
1491 {1,2,3},{1,3,2},
1492 {0,2,1,3},{0,2,3,1},
1493 {3,1,2},{3,2,1},
1494
1495 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1496 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1497 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1498 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1499 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1500 }
1501 f_checkRoITemplate(tl_RoI6p,vl_goodValues,vl_badValues);
1502 }
1503 testcase tc_permut6s_2dyn() runs on A {
1504 var template RoI tl_RoI3 := {1, 2, 3};
1505 var template RoI tl_RoI6p := {?,permutation(all from tl_RoI3),4};
1506 var RoRoI vl_goodValues := {
1507 {0,1,2,3,4},{0,1,3,2,4},
1508 {0,2,1,3,4},{0,2,3,1,4},
1509 {0,3,1,2,4},{0,3,2,1,4},
1510
1511 {1,1,2,3,4},{1,1,3,2,4},
1512 {1,2,1,3,4},{1,2,3,1,4},
1513 {1,3,1,2,4},{1,3,2,1,4},
1514 {2,1,2,3,4},{2,1,3,2,4},
1515 {2,2,1,3,4},{2,2,3,1,4},
1516 {2,3,1,2,4},{2,3,2,1,4},
1517 {3,1,2,3,4},{3,1,3,2,4},
1518 {3,2,1,3,4},{3,2,3,1,4},
1519 {3,3,1,2,4},{3,3,2,1,4},
1520
1521 {9,1,2,3,4},{9,1,3,2,4},
1522 {9,2,1,3,4},{9,2,3,1,4},
1523 {9,3,1,2,4},{9,3,2,1,4},
1524
1525 {5,1,2,3,4},{5,1,3,2,4},
1526 {5,2,1,3,4},{5,2,3,1,4},
1527 {5,3,1,2,4},{5,3,2,1,4},
1528
1529 {99,1,2,3,4},{-5,1,3,2,4},
1530 {1,2,1,3,4},{2,2,3,1,4},
1531 {3,3,1,2,4},{4,3,2,1,4}}
1532 var RoRoI vl_badValues := { {},{1},{1,2},
1533 { 1,2,3},{1,3,2},
1534 { 0,2,1,3},{0,2,3,1},
1535 { 3,1,2},{ 3,2,1},
1536
1537 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1538 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1539 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1540 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1541 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1542 }
1543 f_checkRoITemplate(tl_RoI6p,vl_goodValues,vl_badValues);
1544 }
1545 testcase tc_permut6sA_dyn() runs on A {
1546 var integer x:=1,y:=2,z:=3;
1547 var template RoI tl_RoI3 := {x, y, z};
1548 var template RoI tl_RoI6p := {?,permutation(all from tl_RoI3),4}
1549 var RoRoI vl_goodValues := {
1550 {0,1,2,3,4},{0,1,3,2,4},
1551 {0,2,1,3,4},{0,2,3,1,4},
1552 {0,3,1,2,4},{0,3,2,1,4},
1553 {1,1,2,3,4},{1,1,3,2,4},
1554 {1,2,1,3,4},{1,2,3,1,4},
1555 {1,3,1,2,4},{1,3,2,1,4},
1556 {2,1,2,3,4},{2,1,3,2,4},
1557 {2,2,1,3,4},{2,2,3,1,4},
1558 {2,3,1,2,4},{2,3,2,1,4},
1559 {3,1,2,3,4},{3,1,3,2,4},
1560 {3,2,1,3,4},{3,2,3,1,4},
1561 {3,3,1,2,4},{3,3,2,1,4},
1562 {9,1,2,3,4},{9,1,3,2,4},
1563 {9,2,1,3,4},{9,2,3,1,4},
1564 {9,3,1,2,4},{9,3,2,1,4},
1565
1566 {5,1,2,3,4},{5,1,3,2,4},
1567 {5,2,1,3,4},{5,2,3,1,4},
1568 {5,3,1,2,4},{5,3,2,1,4},
1569
1570 {99,1,2,3,4},{-5,1,3,2,4},
1571 {1,2,1,3,4},{2,2,3,1,4},
1572 {3,3,1,2,4},{4,3,2,1,4}}
1573 var RoRoI vl_badValues := { {},{1},{1,2},
1574 { 1,2,3},{1,3,2},
1575 { 2,1,3},{2,3,1},
1576 { 3,1,2},{ 3,2,1},
1577 { 0,1,2,3},{1,1,3,2},
1578 { 2,2,1,3},{3,2,3,1},
1579 { 4,3,1,2},{5,3,2,1},
1580 { 1,2,3,4},{1,3,2,4},
1581 { 2,1,3,4},{2,3,1,4},
1582 { 3,1,2,4},{ 3,2,1,4},
1583 { 0,1,2,3,5},{1,1,3,2,6},
1584 { 2,2,1,3,7},{3,2,3,1,8},
1585 { 4,3,1,2,9},{5,3,2,1,10},
1586 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1587 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1588 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1589 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1590 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1591 }
1592 f_checkRoITemplate(tl_RoI6p,vl_goodValues,vl_badValues);
1593 }
1594
1595 //=== 7 ===
1596 //{permutation{1, 2, ?}};
1597 testcase tc_permut7s_eq_dyn() runs on A {
1598 var template RoI tl_RoI7p := {permutation(all from t_SoI7)};
1599 f_checkRoITemplateEquivalence(tl_RoI7p,t_SoI7p_eq);
1600 }
1601
1602 testcase tc_permut7s_eq_2dyn() runs on A {
1603 var template RoI tl_RoI7 := {1, 2, ?};
1604 var template RoI tl_RoI7p := {permutation(all from tl_RoI7)};
1605 f_checkRoITemplateEquivalence(tl_RoI7p,t_SoI7p_eq);
1606 }
1607
1608 testcase tc_permut7s_dyn() runs on A {
1609 var template RoI tl_RoI7p := {permutation(all from t_SoI7)};
1610 var RoRoI vl_goodValues := {
1611 {1,2,3},{1,2,4},{1,2,5},{1,2,1000},
1612 {1,3,2},{1,4,2},{1,5,2},{1,6,2},
1613 {2,1,3},{2,1,4},{2,1,5},{2,1,6},
1614 {3,1,2},{3,2,1},{4,1,2},{4,2,1},
1615 {1000,1,2},{1,1000,2}
1616 }
1617 var RoRoI vl_badValues := { {},{1},{2},{3},{9999},{1,2},{2,1}, {13,31},
1618 { 0,2,1,3},{0,2,3,1},{0,2,3,1,5},
1619 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1620 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1621 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1622 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1623 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1624 }
1625 f_checkRoITemplate(tl_RoI7p,vl_goodValues,vl_badValues);
1626 }
1627
1628 testcase tc_permut7s_2dyn() runs on A {
1629 var template RoI tl_RoI7 := {1, 2, ?};
1630 var template RoI tl_RoI7p := {permutation(all from tl_RoI7)};
1631 var RoRoI vl_goodValues := {
1632 {1,2,3}, {1,2,4},{1,2,5},{1,2,1000},
1633 {1,3,2},{1,4,2},{1,5,2},{1,6,2},
1634 {2,1,3},{2,1,4},{2,1,5},{2,1,6},
1635 {3,1,2},{3,2,1},{4,1,2},{4,2,1},
1636 {1000,1,2},{1,1000,2}
1637 }
1638 var RoRoI vl_badValues := { {},{1},{2},{3},{9999},{1,2},{2,1}, {13,31},
1639 { 0,2,1,3},{0,2,3,1},
1640 {-200,200,0,2,3,-1000},{-200,200,0,3,2,-1000},
1641 {-200,200,0,1,3,-1000},{-200,200,0,3,1,-1000},
1642 {-200,200,0,1,2,-1000},{-200,200,0,2,1,-1000},
1643 {-200,200,0,2,-1000},{-200,200,0,3,-1000},{-200,200,0,1,-1000},
1644 {1,2,100,3},{1,100,2,3},{1,100,2,200,3}
1645 }
1646 f_checkRoITemplate(tl_RoI7p,vl_goodValues,vl_badValues);
1647 }
1648
1649 //=== 8 ===
1650 //{permutation(0,1,2,?),4,5}
1651
1652 testcase tc_permut8s_eq_dyn() runs on A {
1653 var template RoI tl_RoI8p := {permutation(0, all from t_SoI7), 4, 5};
1654 f_checkRoITemplateEquivalence(tl_RoI8p,t_SoI8p_eq);
1655 }
1656
1657 testcase tc_permut8s_eq_2dyn() runs on A {
1658 var template RoI tl_RoI7 := {1, 2, ?};
1659 var template RoI tl_RoI8p := {permutation(0, all from tl_RoI7), 4, 5};
1660 f_checkRoITemplateEquivalence(tl_RoI8p,t_SoI8p_eq);
1661 }
1662
1663 testcase tc_permut8s_dyn() runs on A {
1664 var template RoI tl_RoI8p := {permutation(0, all from t_SoI7), 4, 5};
1665 var RoRoI vl_goodValues := {
1666 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
1667 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
1668 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
1669 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
1670 {0,1,2,9,4,5}, {0,1,9,2,4,5},{0,2,1,9,4,5},{0,2,9,1,4,5},{0,9,2,1,4,5},{0,9,1,2,4,5},
1671 {1,0,2,9,4,5}, {1,0,9,2,4,5},{1,2,0,9,4,5},{1,2,9,0,4,5},{1,9,2,0,4,5},{1,9,0,2,4,5},
1672 {2,1,0,9,4,5}, {2,1,9,0,4,5},{2,0,1,9,4,5},{2,0,9,1,4,5},{2,9,0,1,4,5},{2,9,1,0,4,5},
1673 {9,1,0,2,4,5}, {9,1,2,0,4,5},{9,0,1,2,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5}
1674 }
1675 var RoRoI vl_badValues := { {},{1},{1,2},{9,1,9,0,2,4,5}, {9,1,2,9,0,4,5},{9,0,9,1,9,2,9,4,5}
1676
1677 }
1678 f_checkRoITemplate(tl_RoI8p,vl_goodValues,vl_badValues);
1679 }
1680
1681 testcase tc_permut8s_2dyn() runs on A {
1682 var template RoI tl_RoI7 := {1, 2, ?};
1683 var template RoI tl_RoI8p := {permutation(0, all from tl_RoI7), 4, 5};
1684 var RoRoI vl_goodValues := {
1685 {0,1,2,3,4,5}, {0,1,3,2,4,5},{0,2,1,3,4,5},{0,2,3,1,4,5},{0,3,2,1,4,5},{0,3,1,2,4,5},
1686 {1,0,2,3,4,5}, {1,0,3,2,4,5},{1,2,0,3,4,5},{1,2,3,0,4,5},{1,3,2,0,4,5},{1,3,0,2,4,5},
1687 {2,1,0,3,4,5}, {2,1,3,0,4,5},{2,0,1,3,4,5},{2,0,3,1,4,5},{2,3,0,1,4,5},{2,3,1,0,4,5},
1688 {3,1,0,2,4,5}, {3,1,2,0,4,5},{3,0,1,2,4,5},{3,0,2,1,4,5},{3,2,0,1,4,5},{3,2,1,0,4,5},
1689 {0,1,2,9,4,5}, {0,1,9,2,4,5},{0,2,1,9,4,5},{0,2,9,1,4,5},{0,9,2,1,4,5},{0,9,1,2,4,5},
1690 {1,0,2,9,4,5}, {1,0,9,2,4,5},{1,2,0,9,4,5},{1,2,9,0,4,5},{1,9,2,0,4,5},{1,9,0,2,4,5},
1691 {2,1,0,9,4,5}, {2,1,9,0,4,5},{2,0,1,9,4,5},{2,0,9,1,4,5},{2,9,0,1,4,5},{2,9,1,0,4,5},
1692 {9,1,0,2,4,5}, {9,1,2,0,4,5},{9,0,1,2,4,5},{9,0,2,1,4,5},{9,2,0,1,4,5},{9,2,1,0,4,5}
1693 }
1694 var RoRoI vl_badValues := { {},{1},{1,2},{9,1,9,0,2,4,5}, {9,1,2,9,0,4,5},{9,0,9,1,9,2,9,4,5}
1695
1696 }
1697 f_checkRoITemplate(tl_RoI8p,vl_goodValues,vl_badValues);
1698 }
1699
1700 //************************* Testcases for Templates of type Record of charstring ******************************
1701
1702 //=== 1 ===
1703 testcase tc_CharstringTemplate1_eq() runs on A
1704 {
1705 f_checkRoCSTemplateEquivalence(t_rocs1,t_rocs1_eq);
1706 }
1707 testcase tc_CharstringTemplate1_eq_local() runs on A
1708 {
1709 template RoCS tl_rocs1 := { permutation ( all from t_RoCS1 ) };
1710 f_checkRoCSTemplateEquivalence(tl_rocs1,t_rocs1_eq);
1711 }
1712 testcase tc_CharstringTemplate1_eq_dyn() runs on A
1713 {
1714 var template RoCS tl_rocs1 := { permutation ( all from t_RoCS1 ) };
1715 f_checkRoCSTemplateEquivalence(tl_rocs1,t_rocs1_eq);
1716 }
1717
1718 testcase tc_CharstringTemplate1_eq_local_dyn() runs on A
1719 {
1720 template RoCS tl_RoCS1 := { "apple","banana","","pear"};
1721 var template RoCS tl_rocs1 := { permutation ( all from tl_RoCS1 ) };
1722 f_checkRoCSTemplateEquivalence(tl_rocs1,t_rocs1_eq);
1723 }
1724
1725 testcase tc_CharstringTemplate1_eq_2dyn() runs on A
1726 {
1727 var template RoCS tl_RoCS1 := { "apple","banana","","pear"};
1728 var template RoCS tl_rocs1 := { permutation ( all from tl_RoCS1 ) };
1729 f_checkRoCSTemplateEquivalence(tl_rocs1,t_rocs1_eq);
1730 }
1731
1732 //=== 2 ===
1733 testcase tc_CharstringTemplate2_eq() runs on A
1734 {
1735 f_checkRoCSTemplateEquivalence(t_rocs2,t_rocs2_eq);
1736 }
1737 testcase tc_CharstringTemplate2_eq_local() runs on A
1738 {
1739 template RoCS tl_rocs2 := { permutation( "treeeeeeeeeeeeee",all from t_RoCS1, "dog", all from t_RoCS2) };
1740 f_checkRoCSTemplateEquivalence(tl_rocs2,t_rocs2_eq);
1741 }
1742 testcase tc_CharstringTemplate2_eq_dyn() runs on A
1743 {
1744 var template RoCS tl_rocs2 := { permutation( "treeeeeeeeeeeeee",all from t_RoCS1, "dog", all from t_RoCS2) };
1745 f_checkRoCSTemplateEquivalence(tl_rocs2,t_rocs2_eq);
1746 }
1747
1748 testcase tc_CharstringTemplate2_eq_local_dyn() runs on A
1749 {
1750 template RoCS tl_RoCS1 := { "apple","banana","","pear"};
1751 template RoCS tl_RoCS2 := { "apples","bananas","","pears"};
1752 var template RoCS tl_rocs2 := { permutation( "treeeeeeeeeeeeee",all from tl_RoCS1, "dog", all from tl_RoCS2) };
1753 f_checkRoCSTemplateEquivalence(tl_rocs2,t_rocs2_eq);
1754 }
1755
1756
1757 testcase tc_CharstringTemplate2_eq_2dyn() runs on A
1758 {
1759 var template RoCS tl_RoCS1 := { "apple","banana","","pear"};
1760 var template RoCS tl_RoCS2 := { "apples","bananas","","pears"};
1761 var template RoCS tl_rocs2 := { permutation( "treeeeeeeeeeeeee",all from tl_RoCS1, "dog", all from tl_RoCS2) };
1762 f_checkRoCSTemplateEquivalence(tl_rocs2,t_rocs2_eq);
1763 }
1764
1765 //==== function reference =====
1766 testcase tc_functionRef_rof_p_eq() runs on A {
1767 f_checkMyRoFRefTemplateEquivalence( t_fref_int2int_p,t_fref_int2int_p_eq);
1768 }
1769
1770
1771
1772 } // end of module
This page took 0.087528 seconds and 5 git commands to generate.