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 TtemplateAnytype { | |
9 | type component templateAnytype_mycomp {}; | |
10 | type anytype templateAnytype_myAnytype /*{ | |
11 | integer f1, | |
12 | float f2 }*/; | |
13 | type record templateAnytype_rec { | |
14 | templateAnytype_myAnytype x1, | |
15 | templateAnytype_myAnytype x2, | |
16 | templateAnytype_myAnytype x3 optional }; | |
17 | template templateAnytype_rec templateAnytype_tSpec :={ //specific values | |
18 | x1:={float:=1.2}, | |
19 | x2:={integer:=2}, | |
20 | x3:={integer:=3} }; | |
21 | template templateAnytype_rec templateAnytype_tList :={ //specific value and value list | |
22 | x1:={float:=1.2}, | |
23 | x2:=({integer:=2},{integer:=3},{float:=1.2}), | |
24 | x3:={integer:=3} }; | |
25 | template templateAnytype_rec templateAnytype_tComp :={ //specific value and compl. list | |
26 | x1:={float:=1.2}, | |
27 | x2:=complement ({integer:=2},{float:=1.2},{integer:=6}), | |
28 | x3:={integer:=3} }; | |
29 | template templateAnytype_rec templateAnytype_tOmit :={ //omitting values | |
30 | x1:={float:=1.2}, | |
31 | x2:={integer:=2}, | |
32 | x3:=omit } ; | |
33 | template templateAnytype_rec templateAnytype_tAny :={ //specific and any value | |
34 | x1:={float:=1.2}, | |
35 | x2:={integer:=2}, | |
36 | x3:=? } ; | |
37 | template templateAnytype_rec templateAnytype_tAnyorNone :={ //specific and AnyorNone value | |
38 | x1:={float:=1.2}, | |
39 | x2:={integer:=2}, | |
40 | x3:=* }; | |
41 | template templateAnytype_rec templateAnytype_tIfpresent :={ //specific value and ifpresent | |
42 | x1:={float:=1.2}, | |
43 | x2:={integer:=2}, | |
44 | x3:={integer:=3} ifpresent }; | |
45 | ||
46 | testcase templateAnytypeSpec() runs on templateAnytype_mycomp { | |
47 | var templateAnytype_myAnytype temp:={integer:=3}; | |
48 | var templateAnytype_rec x1,x2; //specific value | |
49 | x1:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=temp }; | |
50 | x2:={ x1:={float:=1.3}, x2:={integer:=2}, x3:=temp }; | |
51 | //match | |
52 | if (match(x1,templateAnytype_tSpec)) {setverdict(pass);} | |
53 | else {setverdict(fail);} | |
54 | //no match | |
55 | if (not(match(x2,templateAnytype_tSpec))) {setverdict(pass);} | |
56 | else {setverdict(fail);} | |
57 | } | |
58 | ||
59 | testcase templateAnytypeList() runs on templateAnytype_mycomp { | |
60 | var templateAnytype_myAnytype temp:={integer:=3}; | |
61 | var templateAnytype_rec x1,x2,x3; //value list | |
62 | x1:={ x1:={float:=1.2}, x2:={integer:=3}, x3:=temp }; | |
63 | x2:={ x1:={float:=1.2}, x2:={integer:=7}, x3:=temp }; | |
64 | x3:={ x1:={integer:=8}, x2:={integer:=3}, x3:=temp }; | |
65 | //match | |
66 | if (match(x1,templateAnytype_tList)) {setverdict(pass);} | |
67 | else {setverdict(fail);} | |
68 | //no match: out of list | |
69 | if (not(match(x2,templateAnytype_tList))) {setverdict(pass);} | |
70 | else {setverdict(fail);} | |
71 | //no match: other field | |
72 | if (not(match(x3,templateAnytype_tList))) {setverdict(pass);} | |
73 | else {setverdict(fail);} | |
74 | } | |
75 | ||
76 | testcase templateAnytypeComp() runs on templateAnytype_mycomp { | |
77 | var templateAnytype_myAnytype temp:={integer:=3}; | |
78 | var templateAnytype_rec x1,x2,x3; //complemented list | |
79 | x1:={ x1:={float:=1.2}, x2:={integer:=7}, x3:=temp }; | |
80 | x2:={ x1:={float:=1.2}, x2:={integer:=6}, x3:=temp }; | |
81 | x3:={ x1:={float:=1.3}, x2:={integer:=7}, x3:=temp }; | |
82 | //match | |
83 | if (match(x1,templateAnytype_tComp)) {setverdict(pass);} | |
84 | else {setverdict(fail);} | |
85 | //no match: in the list | |
86 | if (not(match(x2,templateAnytype_tComp))) {setverdict(pass);} | |
87 | else {setverdict(fail);} | |
88 | //no match: other field | |
89 | if (not(match(x3,templateAnytype_tComp))) {setverdict(pass);} | |
90 | else {setverdict(fail);} | |
91 | } | |
92 | ||
93 | testcase templateAnytypeOmit() runs on templateAnytype_mycomp { | |
94 | var templateAnytype_myAnytype temp:={integer:=3}; | |
95 | var templateAnytype_rec x1,x2,x3; //omitting value | |
96 | x1:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=omit }; | |
97 | x2:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=temp }; | |
98 | x3:={ x1:={integer:=2}, x2:={integer:=2}, x3:=omit }; | |
99 | //match | |
100 | if (match(x1,templateAnytype_tOmit)) {setverdict(pass);} | |
101 | else {setverdict(fail);} | |
102 | //no match: not omitted | |
103 | if (not(match(x2,templateAnytype_tOmit))) {setverdict(pass);} | |
104 | else {setverdict(fail);} | |
105 | //no match: other field | |
106 | if (not(match(x3,templateAnytype_tOmit))) {setverdict(pass);} | |
107 | else {setverdict(fail);} | |
108 | } | |
109 | ||
110 | testcase templateAnytypeAny() runs on templateAnytype_mycomp { | |
111 | var templateAnytype_myAnytype temp:={integer:=3}; | |
112 | var templateAnytype_rec x1,x2,x3; //any value | |
113 | x1:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=temp }; | |
114 | x2:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=omit }; | |
115 | x3:={ x1:={integer:=2}, x2:={integer:=2}, x3:=temp }; | |
116 | //match | |
117 | if (match(x1,templateAnytype_tAny)) {setverdict(pass);} | |
118 | else {setverdict(fail);} | |
119 | //no match: field omitted | |
120 | if (not(match(x2,templateAnytype_tAny))) {setverdict(pass);} | |
121 | else {setverdict(fail);} | |
122 | //no match: other field | |
123 | if (not(match(x3,templateAnytype_tAny))) {setverdict(pass);} | |
124 | else {setverdict(fail);} | |
125 | } | |
126 | ||
127 | testcase templateAnytypeAnyorNone() runs on templateAnytype_mycomp { | |
128 | var templateAnytype_myAnytype temp:={integer:=3}; | |
129 | var templateAnytype_rec x1,x2,x3; //AnyorNone value | |
130 | x1:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=omit }; | |
131 | x2:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=temp }; | |
132 | x3:={ x1:={integer:=2}, x2:={integer:=2}, x3:=omit }; | |
133 | //match: omitted | |
134 | if (match(x1,templateAnytype_tAnyorNone)) {setverdict(pass);} | |
135 | else {setverdict(fail);} | |
136 | //match: value | |
137 | if (match(x2,templateAnytype_tAnyorNone)) {setverdict(pass);} | |
138 | else {setverdict(fail);} | |
139 | //no match: other field | |
140 | if (not(match(x3,templateAnytype_tAnyorNone))) {setverdict(pass);} | |
141 | else {setverdict(fail);} | |
142 | } | |
143 | ||
144 | testcase templateAnytypeIfpresent() runs on templateAnytype_mycomp { | |
145 | var templateAnytype_myAnytype temp1:={integer:=3}; //ifpresent | |
146 | var templateAnytype_myAnytype temp2:={integer:=4}; | |
147 | var templateAnytype_rec x1,x2,x3,x4; | |
148 | x1:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=temp1 }; | |
149 | x2:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=omit }; | |
150 | x3:={ x1:={float:=1.2}, x2:={integer:=2}, x3:=temp2 }; | |
151 | x4:={ x1:={float:=1.4}, x2:={integer:=2}, x3:=omit }; | |
152 | //match: present and match | |
153 | if (match(x1,templateAnytype_tIfpresent)) {setverdict(pass);} | |
154 | else {setverdict(fail);} | |
155 | //match: not present | |
156 | if (match(x2,templateAnytype_tIfpresent)) {setverdict(pass);} | |
157 | else {setverdict(fail);} | |
158 | //no match: present and not match | |
159 | if (not(match(x3,templateAnytype_tIfpresent))) {setverdict(pass);} | |
160 | else {setverdict(fail);} | |
161 | //no match: other field | |
162 | if (not(match(x4,templateAnytype_tIfpresent))) {setverdict(pass);} | |
163 | else {setverdict(fail);} | |
164 | } | |
165 | ||
166 | control { | |
167 | execute(templateAnytypeSpec()); | |
168 | execute(templateAnytypeList()); | |
169 | execute(templateAnytypeComp()); | |
170 | execute(templateAnytypeOmit()); | |
171 | execute(templateAnytypeAny()); | |
172 | execute(templateAnytypeAnyorNone()); | |
173 | execute(templateAnytypeIfpresent()); | |
174 | ||
175 | } | |
176 | } | |
177 | with { | |
178 | extension "anytype integer, float" | |
179 | } |