3abe9331 |
1 | /******************************************************************************\r |
2 | * Copyright (c) 2000-2015 Ericsson Telecom AB\r |
3 | * All rights reserved. This program and the accompanying materials\r |
4 | * are made available under the terms of the Eclipse Public License v1.0\r |
5 | * which accompanies this distribution, and is available at\r |
6 | * http://www.eclipse.org/legal/epl-v10.html\r |
7 | ******************************************************************************/\r |
8 | \r |
9 | // This module tests that the compiler allows both uppercase and lowercase\r |
10 | // first letters for the name of an open type alternative\r |
11 | module Open_type_use {\r |
12 | \r |
13 | import from IO_based_message language "ASN.1:2002" all;\r |
14 | \r |
15 | // Constants (lowercase first letter)\r |
16 | const MyMessage c_message_id1_lower := {\r |
17 | id := 1,\r |
18 | content := { mySeq := { field1 := 42, field2 := omit }}\r |
19 | }\r |
20 | \r |
21 | const MyMessage c_message_id2_lower := {\r |
22 | id := 2,\r |
23 | content := { myEnum := first}\r |
24 | }\r |
25 | \r |
26 | const MyMessage c_message_id3_lower := {\r |
27 | id := 3,\r |
28 | content := { iNTEGER := 42 }\r |
29 | }\r |
30 | \r |
51fa56b9 |
31 | const MyMessage c_message_id4_lower := {\r |
32 | id := 4,\r |
33 | content := { nULL := NULL }\r |
34 | }\r |
35 | \r |
3abe9331 |
36 | // Constants (uppercase first letter)\r |
37 | const MyMessage c_message_id1_upper := {\r |
38 | id := 1,\r |
39 | content := { MySeq := { field1 := 42, field2 := omit }}\r |
40 | }\r |
41 | \r |
42 | const MyMessage c_message_id2_upper := {\r |
43 | id := 2,\r |
44 | content := { MyEnum := first}\r |
45 | }\r |
46 | \r |
47 | const MyMessage c_message_id3_upper := {\r |
48 | id := 3,\r |
49 | content := { INTEGER := 42 }\r |
50 | }\r |
51 | \r |
51fa56b9 |
52 | const MyMessage c_message_id4_upper := {\r |
53 | id := 4,\r |
54 | content := { NULL := NULL }\r |
55 | }\r |
56 | \r |
3abe9331 |
57 | // Templates (lowercase first letter)\r |
58 | template MyMessage t_message_id1_lower := {\r |
59 | id := 1,\r |
60 | content := { mySeq := { field1 := 42, field2 := omit }}\r |
61 | }\r |
62 | \r |
63 | template MyMessage t_message_id2_lower := {\r |
64 | id := 2,\r |
65 | content := { myEnum := first}\r |
66 | }\r |
67 | \r |
68 | template MyMessage t_message_id3_lower := {\r |
69 | id := 3,\r |
70 | content := { iNTEGER := 42 }\r |
71 | }\r |
72 | \r |
51fa56b9 |
73 | template MyMessage t_message_id4_lower := {\r |
74 | id := 4,\r |
75 | content := { nULL := NULL }\r |
76 | }\r |
77 | \r |
3abe9331 |
78 | // Templates (uppercase first letter)\r |
79 | template MyMessage t_message_id1_upper := {\r |
80 | id := 1,\r |
81 | content := { MySeq := { field1 := 42, field2 := omit }}\r |
82 | }\r |
83 | \r |
84 | template MyMessage t_message_id2_upper := {\r |
85 | id := 2,\r |
86 | content := { MyEnum := first}\r |
87 | }\r |
88 | \r |
89 | template MyMessage t_message_id3_upper := {\r |
90 | id := 3,\r |
91 | content := { INTEGER := 42 }\r |
92 | }\r |
93 | \r |
51fa56b9 |
94 | template MyMessage t_message_id4_upper := {\r |
95 | id := 4,\r |
96 | content := { NULL := NULL }\r |
97 | }\r |
98 | \r |
3abe9331 |
99 | // Value list template (contains both lowercase and uppercase examples)\r |
100 | template MyMessage t_message_value_list := (\r |
101 | { id := 1, content := { mySeq := { field1 := 42, field2 := omit }} },\r |
102 | { id := 2, content := { myEnum := first} },\r |
103 | { id := 3, content := { iNTEGER := 42 } },\r |
51fa56b9 |
104 | { id := 4, content := { nULL := NULL } },\r |
3abe9331 |
105 | { id := 1, content := { MySeq := { field1 := -42, field2 := omit }} },\r |
106 | { id := 2, content := { MyEnum := second} },\r |
51fa56b9 |
107 | { id := 3, content := { INTEGER := -42 } },\r |
108 | { id := 4, content := { NULL := NULL } }\r |
3abe9331 |
109 | );\r |
110 | \r |
111 | // Dummy function to declare variables in\r |
112 | function f_dummy() {\r |
113 | // Variables (lowercase first letter)\r |
114 | var MyMessage v_message_id1_lower := {\r |
115 | id := 1,\r |
116 | content := { mySeq := { field1 := 42, field2 := omit }}\r |
117 | }\r |
118 | \r |
119 | var MyMessage v_message_id2_lower := {\r |
120 | id := 2,\r |
121 | content := { myEnum := first}\r |
122 | }\r |
123 | \r |
124 | var MyMessage v_message_id3_lower := {\r |
125 | id := 3,\r |
126 | content := { iNTEGER := 42 }\r |
127 | }\r |
51fa56b9 |
128 | \r |
129 | var MyMessage v_message_id4_lower := {\r |
130 | id := 4,\r |
131 | content := { nULL := NULL }\r |
132 | }\r |
3abe9331 |
133 | \r |
134 | // Variables (uppercase first letter)\r |
135 | var MyMessage v_message_id1_upper := {\r |
136 | id := 1,\r |
137 | content := { MySeq := { field1 := 42, field2 := omit }}\r |
138 | }\r |
139 | \r |
140 | var MyMessage v_message_id2_upper := {\r |
141 | id := 2,\r |
142 | content := { MyEnum := first}\r |
143 | }\r |
144 | \r |
145 | var MyMessage v_message_id3_upper := {\r |
146 | id := 3,\r |
147 | content := { INTEGER := 42 }\r |
148 | }\r |
51fa56b9 |
149 | \r |
150 | var MyMessage v_message_id4_upper := {\r |
151 | id := 4,\r |
152 | content := { NULL := NULL }\r |
153 | }\r |
3abe9331 |
154 | \r |
155 | // Template variables (lowercase first letter)\r |
156 | var template MyMessage vt_message_id1_lower := {\r |
157 | id := 1,\r |
158 | content := { mySeq := { field1 := 42, field2 := omit }}\r |
159 | }\r |
160 | \r |
161 | var template MyMessage vt_message_id2_lower := {\r |
162 | id := 2,\r |
163 | content := { myEnum := first}\r |
164 | }\r |
165 | \r |
166 | var template MyMessage vt_message_id3_lower := {\r |
167 | id := 3,\r |
168 | content := { iNTEGER := 42 }\r |
169 | }\r |
51fa56b9 |
170 | \r |
171 | var template MyMessage vt_message_id4_lower := {\r |
172 | id := 4,\r |
173 | content := { nULL := NULL }\r |
174 | }\r |
3abe9331 |
175 | \r |
176 | // Template variables (uppercase first letter)\r |
177 | var template MyMessage vt_message_id1_upper := {\r |
178 | id := 1,\r |
179 | content := { MySeq := { field1 := 42, field2 := omit }}\r |
180 | }\r |
181 | \r |
182 | var template MyMessage vt_message_id2_upper := {\r |
183 | id := 2,\r |
184 | content := { MyEnum := first}\r |
185 | }\r |
186 | \r |
187 | var template MyMessage vt_message_id3_upper := {\r |
188 | id := 3,\r |
189 | content := { INTEGER := 42 }\r |
190 | }\r |
191 | \r |
51fa56b9 |
192 | var template MyMessage vt_message_id4_upper := {\r |
193 | id := 4,\r |
194 | content := { NULL := NULL }\r |
195 | }\r |
196 | \r |
3abe9331 |
197 | // Value list template variable (contains both lowercase and uppercase examples)\r |
198 | var template MyMessage vt_message_value_list := (\r |
199 | { id := 1, content := { mySeq := { field1 := 42, field2 := omit }} },\r |
200 | { id := 2, content := { myEnum := first} },\r |
201 | { id := 3, content := { iNTEGER := 42 } },\r |
51fa56b9 |
202 | { id := 4, content := { nULL := NULL } },\r |
3abe9331 |
203 | { id := 1, content := { MySeq := { field1 := -42, field2 := omit }} },\r |
204 | { id := 2, content := { MyEnum := second} },\r |
51fa56b9 |
205 | { id := 3, content := { INTEGER := -42 } },\r |
206 | { id := 4, content := { NULL := NULL } }\r |
3abe9331 |
207 | );\r |
208 | \r |
209 | // Referencing fields of open types (contains both lowercase and uppercase examples)\r |
210 | v_message_id1_lower.content.mySeq := { field1 := 41, field2 := omit };\r |
211 | v_message_id1_upper.content.MySeq := { field1 := 41, field2 := omit };\r |
212 | v_message_id2_lower.content.myEnum := second;\r |
213 | v_message_id2_upper.content.MyEnum := second;\r |
214 | v_message_id3_lower.content.iNTEGER := 15;\r |
215 | v_message_id3_upper.content.INTEGER := 15;\r |
51fa56b9 |
216 | v_message_id4_lower.content.nULL := NULL;\r |
217 | v_message_id4_upper.content.NULL := NULL;\r |
3abe9331 |
218 | vt_message_id1_lower.content.mySeq := { field1 := 41, field2 := omit };\r |
219 | vt_message_id1_upper.content.MySeq := { field1 := 41, field2 := omit };\r |
220 | vt_message_id2_lower.content.myEnum := second;\r |
221 | vt_message_id2_upper.content.MyEnum := second;\r |
222 | vt_message_id3_lower.content.iNTEGER := 15;\r |
223 | vt_message_id3_upper.content.INTEGER := 15;\r |
51fa56b9 |
224 | vt_message_id4_lower.content.nULL := NULL;\r |
225 | vt_message_id4_upper.content.NULL := NULL;\r |
3abe9331 |
226 | if (c_message_id1_lower.content.mySeq == { field1 := 41, field2 := omit } and\r |
227 | c_message_id1_upper.content.MySeq == { field1 := 41, field2 := omit } and\r |
228 | c_message_id2_lower.content.myEnum == second and\r |
229 | c_message_id2_upper.content.MyEnum == second and\r |
230 | c_message_id3_lower.content.iNTEGER == 15 and\r |
51fa56b9 |
231 | c_message_id3_upper.content.INTEGER == 15 and\r |
232 | c_message_id4_lower.content.nULL == NULL and // NULL != NULL !?\r |
233 | c_message_id4_upper.content.NULL == NULL) {\r |
3abe9331 |
234 | log("a");\r |
235 | }\r |
236 | if (v_message_id1_lower.content.mySeq == { field1 := 41, field2 := omit } and\r |
237 | v_message_id1_upper.content.MySeq == { field1 := 41, field2 := omit } and\r |
238 | v_message_id2_lower.content.myEnum == second and\r |
239 | v_message_id2_upper.content.MyEnum == second and\r |
240 | v_message_id3_lower.content.iNTEGER == 15 and\r |
51fa56b9 |
241 | v_message_id3_upper.content.INTEGER == 15 and\r |
242 | v_message_id4_lower.content.nULL == NULL and\r |
243 | v_message_id4_upper.content.NULL == NULL) {\r |
3abe9331 |
244 | log("b");\r |
245 | }\r |
246 | if (match({ field1 := 41, field2 := omit }, t_message_id1_lower.content.mySeq) and\r |
247 | match({ field1 := 41, field2 := omit }, t_message_id1_lower.content.MySeq) and\r |
248 | match(second, t_message_id2_lower.content.myEnum) and\r |
249 | match(second, t_message_id2_lower.content.MyEnum) and\r |
250 | match(15, t_message_id3_lower.content.iNTEGER) and\r |
51fa56b9 |
251 | match(15, t_message_id3_lower.content.INTEGER) and\r |
252 | match(NULL, t_message_id4_lower.content.nULL) and\r |
253 | match(NULL, t_message_id4_lower.content.NULL)) {\r |
3abe9331 |
254 | log("c");\r |
255 | }\r |
256 | if (match({ field1 := 41, field2 := omit }, vt_message_id1_upper.content.mySeq) and\r |
257 | match({ field1 := 41, field2 := omit }, vt_message_id1_upper.content.MySeq) and\r |
258 | match(second, vt_message_id2_upper.content.myEnum) and\r |
259 | match(second, vt_message_id2_upper.content.MyEnum) and\r |
260 | match(15, vt_message_id3_upper.content.iNTEGER) and\r |
51fa56b9 |
261 | match(15, vt_message_id3_upper.content.INTEGER) and\r |
262 | match(NULL, vt_message_id4_upper.content.nULL) and\r |
263 | match(NULL, vt_message_id4_upper.content.NULL)) {\r |
3abe9331 |
264 | log("d");\r |
265 | }\r |
266 | }\r |
267 | \r |
268 | }\r |