Commit | Line | Data |
---|---|---|
970ed795 | 1 | /****************************************************************************** |
3abe9331 | 2 | * Copyright (c) 2000-2015 Ericsson Telecom AB |
970ed795 EL |
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_var { // HR17266 | |
9 | ||
10 | import from types all; | |
11 | import from functions all; | |
12 | ||
13 | // Testing 'all from' on variables, constants and template variables | |
14 | testcase tc_checkVar() runs on A { | |
15 | var RoI v_roi1 := { 1, 2, 6, 7, 9 }; | |
16 | var template integer v_af := ( 8, all from v_roi1 ); | |
17 | ||
18 | var RoI vl_goodValues := { 1, 2, 6, 7, 8, 9 }; | |
19 | var RoI vl_badValues := { -99, -10, -1, 0, 3, 4, 5, 10, 11, 20, 99, 100, 101, 102, 200, 1000, 100000000000000 }; | |
20 | f_checkIntegerTemplate(v_af, vl_goodValues, vl_badValues); | |
21 | } | |
22 | ||
23 | testcase tc_checkConst() runs on A { | |
24 | const RoI c_roi1 := { 1, 2, 6, 7, 9 }; | |
25 | var template integer v_af := ( 8, all from c_roi1 ); | |
26 | ||
27 | var RoI vl_goodValues := { 1, 2, 6, 7, 8, 9 }; | |
28 | var RoI vl_badValues := { -99, -10, -1, 0, 3, 4, 5, 10, 11, 20, 99, 100, 101, 102, 200, 1000, 100000000000000 }; | |
29 | f_checkIntegerTemplate(v_af, vl_goodValues, vl_badValues); | |
30 | } | |
31 | ||
32 | testcase tc_checkTempVar() runs on A { | |
33 | var template RoI vt_roi1 := { 1, 2, (6 .. 9) }; | |
34 | var template integer v_af := ( 11, all from vt_roi1 ); | |
35 | ||
36 | var RoI vl_goodValues := { 1, 2, 6, 7, 8, 9 }; | |
37 | var RoI vl_badValues := { -99, -10, -1, 0, 3, 4, 5, 10, 20, 99, 100, 101, 102, 200, 1000, 100000000000000 }; | |
38 | f_checkIntegerTemplate(v_af, vl_goodValues, vl_badValues); | |
39 | } | |
40 | ||
41 | // Testing the complement of an 'all from' (used on variables, constants and template variables) | |
42 | testcase tc_checkVarComplement() runs on A { | |
43 | var RoI v_roi1 := { 1, 2, 6, 7, 9 }; | |
44 | var template integer v_af := complement ( 8, all from v_roi1 ); | |
45 | ||
46 | var RoI vl_badValues := { 1, 2, 6, 7, 8, 9 }; | |
47 | var RoI vl_goodValues := { -99, -10, -1, 0, 3, 4, 5, 10, 11, 20, 99, 100, 101, 102, 200, 1000, 100000000000000 }; | |
48 | f_checkIntegerTemplate(v_af, vl_goodValues, vl_badValues); | |
49 | } | |
50 | ||
51 | testcase tc_checkConstComplement() runs on A { | |
52 | const RoI c_roi1 := { 1, 2, 6, 7, 9 }; | |
53 | var template integer v_af := complement ( 8, all from c_roi1 ); | |
54 | ||
55 | var RoI vl_badValues := { 1, 2, 6, 7, 8, 9 }; | |
56 | var RoI vl_goodValues := { -99, -10, -1, 0, 3, 4, 5, 10, 11, 20, 99, 100, 101, 102, 200, 1000, 100000000000000 }; | |
57 | f_checkIntegerTemplate(v_af, vl_goodValues, vl_badValues); | |
58 | } | |
59 | ||
60 | testcase tc_checkTempVarComplement() runs on A { | |
61 | var template RoI vt_roi1 := { 1, 2, (6 .. 9) }; | |
62 | var template integer v_af := complement ( 11, all from vt_roi1 ); | |
63 | ||
64 | var RoI vl_badValues := { 1, 2, 6, 7, 8, 9 }; | |
65 | var RoI vl_goodValues := { -99, -10, -1, 0, 3, 4, 5, 10, 20, 99, 100, 101, 102, 200, 1000, 100000000000000 }; | |
66 | f_checkIntegerTemplate(v_af, vl_goodValues, vl_badValues); | |
67 | } | |
68 | ||
69 | // Testing the permutation of an 'all from' (used on variables, constants and template variables) | |
70 | testcase tc_checkVarPermutation() runs on A { | |
71 | var RoI v_roi1 := { 1, 2 }; | |
72 | var template RoI v_af := { permutation ( 6, all from v_roi1 ), 7 }; | |
73 | ||
74 | var RoRoI vl_goodValues := { {1, 2, 6, 7}, {1, 6, 2, 7}, {2, 1, 6, 7}, {2, 6, 1, 7}, {6, 1, 2, 7}, {6, 2, 1, 7}}; | |
75 | var RoRoI vl_badValues := { {}, {1}, {1, 2, 6}, {1, 2, 7}, {7, 2, 1, 6}, {-5, 1, 2, 6, 7}, {1, 2, 3, 4}, {7, 6}, {19000000000000, 107, 66, 18} } | |
76 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
77 | } | |
78 | ||
79 | testcase tc_checkConstPermutation() runs on A { | |
80 | const RoI c_roi1 := { 1, 2 }; | |
81 | var template RoI v_af := { permutation ( 6, all from c_roi1 ), 7 }; | |
82 | ||
83 | var RoRoI vl_goodValues := { {1, 2, 6, 7}, {1, 6, 2, 7}, {2, 1, 6, 7}, {2, 6, 1, 7}, {6, 1, 2, 7}, {6, 2, 1, 7}}; | |
84 | var RoRoI vl_badValues := { {}, {1}, {1, 2, 6}, {1, 2, 7}, {7, 2, 1, 6}, {-5, 1, 2, 6, 7}, {1, 2, 3, 4}, {7, 6}, {19000000000000, 107, 66, 18} }; | |
85 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
86 | } | |
87 | ||
88 | testcase tc_checkTempVarPermutation() runs on A { | |
89 | var template RoI vt_roi1 := { (1..3), (2..4) }; | |
90 | var template RoI v_af := { permutation ( all from vt_roi1 ), 7 }; | |
91 | ||
92 | var RoRoI vl_goodValues := { {1, 2, 7}, {2, 2, 7}, {3, 2, 7}, {1, 3, 7}, {2, 3, 7}, {3, 3, 7}, {1, 4, 7}, {2, 4, 7}, {3, 4, 7} }; | |
93 | var RoRoI vl_badValues := { {}, {1}, {1, 2, 6}, {1, 2, 3, 7}, {7, 2, 1, 6}, {-5, 1, 2, 7}, {1, 2, 3, 4}, {7, 6}, {19000000000000, 107, 66} }; | |
94 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
95 | } | |
96 | ||
97 | // Testing the subset of an 'all from' (used on variables, constants and template variables) | |
98 | testcase tc_checkVarSubset() runs on A { | |
99 | var RoI v_roi1 := { 1, 2, 3 }; | |
100 | var template SoI v_af := subset (all from v_roi1); | |
101 | ||
102 | var RoSoI vl_goodValues := { {}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2 ,3} }; | |
103 | var RoSoI vl_badValues := { {4}, {-8}, {6300000000000000000}, {1, 2, 6}, {1, 2, 3, 6}, {1, 1, 2, 3}, {0, 2, 3}, {100, 77777777777, 45454213414} }; | |
104 | f_checkSoITemplate(v_af, vl_goodValues, vl_badValues); | |
105 | } | |
106 | ||
107 | testcase tc_checkConstSubset() runs on A { | |
108 | const RoI c_roi1 := { 1, 2, 3 }; | |
109 | var template SoI v_af := subset (all from c_roi1); | |
110 | ||
111 | var RoSoI vl_goodValues := { {}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2 ,3} }; | |
112 | var RoSoI vl_badValues := { {4}, {-8}, {6300000000000000000}, {1, 2, 6}, {1, 2, 3, 6}, {1, 1, 2, 3}, {0, 2, 3}, {100, 77777777777, 45454213414} }; | |
113 | f_checkSoITemplate(v_af, vl_goodValues, vl_badValues); | |
114 | } | |
115 | ||
116 | testcase tc_checkTempVarSubset() runs on A { | |
117 | var template RoI vt_roi1 := { 1, (2..4) }; | |
118 | var template SoI v_af := subset (all from vt_roi1); | |
119 | ||
120 | var RoSoI vl_goodValues := { {}, {1}, {2}, {3}, {4}, {1, 2}, {1, 3}, {1, 4} }; | |
121 | var RoSoI vl_badValues := { {-8}, {6300000000000000000}, {2, 3}, {1, 2 ,3}, {1, 2, 6}, {1, 2, 3, 6}, {1, 1, 4}, {0, 2, 3}, {77777777777, 45454213414} }; | |
122 | f_checkSoITemplate(v_af, vl_goodValues, vl_badValues); | |
123 | } | |
124 | ||
125 | // Testing the superset of an 'all from' (used on variables, constants and template variables) | |
126 | testcase tc_checkVarSuperset() runs on A { | |
127 | var RoI v_roi1 := { 1, 2, 3 }; | |
128 | var template SoI v_af := superset (all from v_roi1); | |
129 | ||
130 | var RoSoI vl_goodValues := { {1, 2, 3}, {1, 2, 3, 0}, {1, 2, 3, 10}, {8, 2, 1, 3}, {3, 2, 1, 0}, {1, 1, 2, 3}, {1, 100, 77777777777, 2, 3, 45454213414} }; | |
131 | var RoSoI vl_badValues := { {}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {4}, {-8}, {6300000000000000000}, {1, 2, 6}, {0, 2, 3}, {100, 77777777777, 45454213414} }; | |
132 | f_checkSoITemplate(v_af, vl_goodValues, vl_badValues); | |
133 | } | |
134 | ||
135 | testcase tc_checkConstSuperset() runs on A { | |
136 | const RoI c_roi1 := { 1, 2, 3 }; | |
137 | var template SoI v_af := superset (all from c_roi1); | |
138 | ||
139 | var RoSoI vl_goodValues := { {1, 2, 3}, {1, 2, 3, 0}, {1, 2, 3, 10}, {8, 2, 1, 3}, {3, 2, 1, 0}, {1, 1, 2, 3}, {1, 100, 77777777777, 2, 3, 45454213414} }; | |
140 | var RoSoI vl_badValues := { {}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {4}, {-8}, {6300000000000000000}, {1, 2, 6}, {0, 2, 3}, {100, 77777777777, 45454213414} }; | |
141 | f_checkSoITemplate(v_af, vl_goodValues, vl_badValues); | |
142 | } | |
143 | ||
144 | testcase tc_checkTempVarSuperset() runs on A { | |
145 | var template RoI vt_roi1 := { 1, (2..4) }; | |
146 | var template SoI v_af := superset (all from vt_roi1); | |
147 | ||
148 | var RoSoI vl_goodValues := { {1, 2}, {1, 3}, {1, 2, 3}, {1, 3, 0}, {1, 2, 3, 10}, {8, 2, 1}, {3, 2, 1, 0}, {1, 1, 3}, {1, 100, 77777777777, 3, 45454213414} }; | |
149 | var RoSoI vl_badValues := { {}, {1}, {2}, {3}, {2, 3}, {4}, {-8}, {6300000000000000000}, {0, 2, 3}, {100, 77777777777, 45454213414}, {7, 6}, {3, 4} }; | |
150 | f_checkSoITemplate(v_af, vl_goodValues, vl_badValues); | |
151 | } | |
152 | ||
153 | // Testing 'all from' on template variables that reference themselves | |
154 | // (same with permutation, subset and superset) | |
155 | testcase tc_checkTempVarSelf() runs on A { | |
156 | var template RoI v_af := { 1, (2..4) }; | |
157 | v_af := { 7, (all from v_af) }; | |
158 | ||
159 | var RoRoI vl_goodValues := { {7, 1}, {7, 2}, {7, 3}, {7, 4} }; | |
160 | var RoRoI vl_badValues := { {}, {7}, {1}, {2}, {3}, {4}, {7, 0}, {7, 5}, {7, 10}, {7, 98765432123456789}, {1, 2, 3} }; | |
161 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
162 | } | |
163 | ||
164 | testcase tc_checkTempVarSelfPermutation() runs on A { | |
165 | var template RoI v_af := { (1..3), (2..4) }; | |
166 | v_af := { permutation ( all from v_af ), 7 }; | |
167 | ||
168 | var RoRoI vl_goodValues := { {1, 2, 7}, {2, 2, 7}, {3, 2, 7}, {1, 3, 7}, {2, 3, 7}, {3, 3, 7}, {1, 4, 7}, {2, 4, 7}, {3, 4, 7} }; | |
169 | var RoRoI vl_badValues := { {}, {1}, {1, 2, 6}, {1, 2, 3, 7}, {7, 2, 1, 6}, {-5, 1, 2, 7}, {1, 2, 3, 4}, {7, 6}, {19000000000000, 107, 66} }; | |
170 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
171 | } | |
172 | ||
173 | testcase tc_checkTempVarSelfSubset() runs on A { | |
174 | var template SoI v_af := { 1, (2..4) }; | |
175 | v_af := subset (all from v_af); | |
176 | ||
177 | var RoSoI vl_goodValues := { {}, {1}, {2}, {3}, {4}, {1, 2}, {1, 3}, {1, 4} }; | |
178 | var RoSoI vl_badValues := { {-8}, {6300000000000000000}, {2, 3}, {1, 2 ,3}, {1, 2, 6}, {1, 2, 3, 6}, {1, 1, 4}, {0, 2, 3}, {77777777777, 45454213414} }; | |
179 | f_checkSoITemplate(v_af, vl_goodValues, vl_badValues); | |
180 | } | |
181 | ||
182 | testcase tc_checkTempVarSelfSuperset() runs on A { | |
183 | var template SoI v_af := { 1, (2..4) }; | |
184 | v_af := superset (all from v_af); | |
185 | ||
186 | var RoSoI vl_goodValues := { {1, 2}, {1, 3}, {1, 2, 3}, {1, 3, 0}, {1, 2, 3, 10}, {8, 2, 1}, {3, 2, 1, 0}, {1, 1, 3}, {1, 100, 77777777777, 3, 45454213414} }; | |
187 | var RoSoI vl_badValues := { {}, {1}, {2}, {3}, {2, 3}, {4}, {-8}, {6300000000000000000}, {0, 2, 3}, {100, 77777777777, 45454213414}, {7, 6}, {3, 4} }; | |
188 | f_checkSoITemplate(v_af, vl_goodValues, vl_badValues); | |
189 | } | |
190 | ||
191 | // Testing 'all from' and self referencing on function parameters | |
192 | function f_all_from_par(inout template RoI p_af) runs on A { | |
193 | p_af := { 7, (all from p_af) }; | |
194 | } | |
195 | ||
196 | testcase tc_checkTempParSelf() runs on A { | |
197 | var template RoI v_af := { 1, (2..4) }; | |
198 | f_all_from_par(v_af); | |
199 | ||
200 | var RoRoI vl_goodValues := { {7, 1}, {7, 2}, {7, 3}, {7, 4} }; | |
201 | var RoRoI vl_badValues := { {}, {7}, {1}, {2}, {3}, {4}, {7, 0}, {7, 5}, {7, 10}, {7, 98765432123456789}, {1, 2, 3} }; | |
202 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
203 | } | |
204 | ||
205 | // Testing 'all from' and self referencing on template variables in the parameter lists of | |
206 | // function calls and parametrised templates | |
207 | function f_do_nothing(in template RoI p_temp) runs on A return template RoI { | |
208 | return p_temp; | |
209 | } | |
210 | ||
211 | function f_do_nothing2(in template integer p_ti, in template RoI p_temp) runs on A return template RoI { | |
212 | return p_temp; | |
213 | } | |
214 | ||
215 | function f_do_nothing_io(inout template RoI p_temp) runs on A return template RoI { | |
216 | return p_temp; | |
217 | } | |
218 | ||
219 | testcase tc_checkTempVarFuncSelf() runs on A { | |
220 | var template RoI v_af := { 1, (2..4) }; | |
221 | v_af := { 7, ( all from f_do_nothing(v_af) ) }; | |
222 | ||
223 | var RoRoI vl_goodValues := { {7, 1}, {7, 2}, {7, 3}, {7, 4} }; | |
224 | var RoRoI vl_badValues := { {}, {7}, {1}, {2}, {3}, {4}, {7, 0}, {7, 5}, {7, 10}, {7, 98765432123456789}, {1, 2, 3} }; | |
225 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
226 | } | |
227 | ||
228 | testcase tc_checkTempVarFuncSelf2() runs on A { | |
229 | var template RoI v_af := { 1, (2..4) }; | |
230 | v_af := { 7, ( all from f_do_nothing_io(v_af) ) }; | |
231 | ||
232 | var RoRoI vl_goodValues := { {7, 1}, {7, 2}, {7, 3}, {7, 4} }; | |
233 | var RoRoI vl_badValues := { {}, {7}, {1}, {2}, {3}, {4}, {7, 0}, {7, 5}, {7, 10}, {7, 98765432123456789}, {1, 2, 3} }; | |
234 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
235 | } | |
236 | ||
237 | testcase tc_checkTempVarFuncSelf3() runs on A { | |
238 | var template RoI v_af := { 1, (2..4) }; | |
239 | v_af := { 7, ( all from f_do_nothing2(0, v_af) ) }; | |
240 | ||
241 | var RoRoI vl_goodValues := { {7, 1}, {7, 2}, {7, 3}, {7, 4} }; | |
242 | var RoRoI vl_badValues := { {}, {7}, {1}, {2}, {3}, {4}, {7, 0}, {7, 5}, {7, 10}, {7, 98765432123456789}, {1, 2, 3} }; | |
243 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
244 | } | |
245 | ||
246 | testcase tc_checkTempVarFuncSelf4() runs on A { | |
247 | var template RoI v_af := { 1, (2..4) }; | |
248 | v_af := { 7, ( all from f_do_nothing(f_do_nothing2(0, f_do_nothing(f_do_nothing2(7, v_af)))) ) }; | |
249 | ||
250 | var RoRoI vl_goodValues := { {7, 1}, {7, 2}, {7, 3}, {7, 4} }; | |
251 | var RoRoI vl_badValues := { {}, {7}, {1}, {2}, {3}, {4}, {7, 0}, {7, 5}, {7, 10}, {7, 98765432123456789}, {1, 2, 3} }; | |
252 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
253 | } | |
254 | ||
255 | template RoI t_pard(in template RoI t_r) := t_r; | |
256 | ||
257 | testcase tc_checkTempVarTempPardSelf() runs on A { | |
258 | var template RoI v_af := { 1, (2..4) }; | |
259 | v_af := { 7, ( all from t_pard(v_af) ) }; | |
260 | ||
261 | var RoRoI vl_goodValues := { {7, 1}, {7, 2}, {7, 3}, {7, 4} }; | |
262 | var RoRoI vl_badValues := { {}, {7}, {1}, {2}, {3}, {4}, {7, 0}, {7, 5}, {7, 10}, {7, 98765432123456789}, {1, 2, 3} }; | |
263 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
264 | } | |
265 | ||
266 | testcase tc_checkTempVarComboSelf() runs on A { | |
267 | var template RoI v_af := { 1, (2..4) }; | |
268 | v_af := { 7, ( all from f_do_nothing2(5, t_pard(f_do_nothing(v_af))) ) }; | |
269 | ||
270 | var RoRoI vl_goodValues := { {7, 1}, {7, 2}, {7, 3}, {7, 4} }; | |
271 | var RoRoI vl_badValues := { {}, {7}, {1}, {2}, {3}, {4}, {7, 0}, {7, 5}, {7, 10}, {7, 98765432123456789}, {1, 2, 3} }; | |
272 | f_checkRoITemplate(v_af, vl_goodValues, vl_badValues); | |
273 | } | |
274 | ||
275 | control { | |
276 | execute(tc_checkVar()); | |
277 | execute(tc_checkConst()); | |
278 | execute(tc_checkTempVar()); | |
279 | execute(tc_checkVarComplement()); | |
280 | execute(tc_checkConstComplement()); | |
281 | execute(tc_checkTempVarComplement()); | |
282 | execute(tc_checkVarPermutation()); | |
283 | execute(tc_checkConstPermutation()); | |
284 | execute(tc_checkTempVarPermutation()); | |
285 | execute(tc_checkVarSubset()); | |
286 | execute(tc_checkConstSubset()); | |
287 | execute(tc_checkTempVarSubset()); | |
288 | execute(tc_checkVarSuperset()); | |
289 | execute(tc_checkConstSuperset()); | |
290 | execute(tc_checkTempVarSuperset()); | |
291 | execute(tc_checkTempVarSelf()); | |
292 | execute(tc_checkTempVarSelfPermutation()); | |
293 | execute(tc_checkTempVarSelfSubset()); | |
294 | execute(tc_checkTempVarSuperset()); | |
295 | execute(tc_checkTempParSelf()); | |
296 | execute(tc_checkTempVarFuncSelf()); | |
297 | execute(tc_checkTempVarFuncSelf2()); | |
298 | execute(tc_checkTempVarFuncSelf3()); | |
299 | execute(tc_checkTempVarFuncSelf4()); | |
300 | execute(tc_checkTempVarTempPardSelf()); | |
301 | execute(tc_checkTempVarComboSelf()); | |
302 | } | |
303 | } |