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 ******************************************************************************/
9 // This module tests that the compiler allows both uppercase and lowercase
10 // first letters for the name of an open type alternative
11 module Open_type_use {
13 import from IO_based_message language "ASN.1:2002" all;
15 // Constants (lowercase first letter)
16 const MyMessage c_message_id1_lower := {
18 content := { mySeq := { field1 := 42, field2 := omit }}
21 const MyMessage c_message_id2_lower := {
23 content := { myEnum := first}
26 const MyMessage c_message_id3_lower := {
28 content := { iNTEGER := 42 }
31 // Constants (uppercase first letter)
32 const MyMessage c_message_id1_upper := {
34 content := { MySeq := { field1 := 42, field2 := omit }}
37 const MyMessage c_message_id2_upper := {
39 content := { MyEnum := first}
42 const MyMessage c_message_id3_upper := {
44 content := { INTEGER := 42 }
47 // Templates (lowercase first letter)
48 template MyMessage t_message_id1_lower := {
50 content := { mySeq := { field1 := 42, field2 := omit }}
53 template MyMessage t_message_id2_lower := {
55 content := { myEnum := first}
58 template MyMessage t_message_id3_lower := {
60 content := { iNTEGER := 42 }
63 // Templates (uppercase first letter)
64 template MyMessage t_message_id1_upper := {
66 content := { MySeq := { field1 := 42, field2 := omit }}
69 template MyMessage t_message_id2_upper := {
71 content := { MyEnum := first}
74 template MyMessage t_message_id3_upper := {
76 content := { INTEGER := 42 }
79 // Value list template (contains both lowercase and uppercase examples)
80 template MyMessage t_message_value_list := (
81 { id := 1, content := { mySeq := { field1 := 42, field2 := omit }} },
82 { id := 2, content := { myEnum := first} },
83 { id := 3, content := { iNTEGER := 42 } },
84 { id := 1, content := { MySeq := { field1 := -42, field2 := omit }} },
85 { id := 2, content := { MyEnum := second} },
86 { id := 3, content := { INTEGER := -42 } }
89 // Dummy function to declare variables in
91 // Variables (lowercase first letter)
92 var MyMessage v_message_id1_lower := {
94 content := { mySeq := { field1 := 42, field2 := omit }}
97 var MyMessage v_message_id2_lower := {
99 content := { myEnum := first}
102 var MyMessage v_message_id3_lower := {
104 content := { iNTEGER := 42 }
107 // Variables (uppercase first letter)
108 var MyMessage v_message_id1_upper := {
110 content := { MySeq := { field1 := 42, field2 := omit }}
113 var MyMessage v_message_id2_upper := {
115 content := { MyEnum := first}
118 var MyMessage v_message_id3_upper := {
120 content := { INTEGER := 42 }
123 // Template variables (lowercase first letter)
124 var template MyMessage vt_message_id1_lower := {
126 content := { mySeq := { field1 := 42, field2 := omit }}
129 var template MyMessage vt_message_id2_lower := {
131 content := { myEnum := first}
134 var template MyMessage vt_message_id3_lower := {
136 content := { iNTEGER := 42 }
139 // Template variables (uppercase first letter)
140 var template MyMessage vt_message_id1_upper := {
142 content := { MySeq := { field1 := 42, field2 := omit }}
145 var template MyMessage vt_message_id2_upper := {
147 content := { MyEnum := first}
150 var template MyMessage vt_message_id3_upper := {
152 content := { INTEGER := 42 }
155 // Value list template variable (contains both lowercase and uppercase examples)
156 var template MyMessage vt_message_value_list := (
157 { id := 1, content := { mySeq := { field1 := 42, field2 := omit }} },
158 { id := 2, content := { myEnum := first} },
159 { id := 3, content := { iNTEGER := 42 } },
160 { id := 1, content := { MySeq := { field1 := -42, field2 := omit }} },
161 { id := 2, content := { MyEnum := second} },
162 { id := 3, content := { INTEGER := -42 } }
165 // Referencing fields of open types (contains both lowercase and uppercase examples)
166 v_message_id1_lower.content.mySeq := { field1 := 41, field2 := omit };
167 v_message_id1_upper.content.MySeq := { field1 := 41, field2 := omit };
168 v_message_id2_lower.content.myEnum := second;
169 v_message_id2_upper.content.MyEnum := second;
170 v_message_id3_lower.content.iNTEGER := 15;
171 v_message_id3_upper.content.INTEGER := 15;
172 vt_message_id1_lower.content.mySeq := { field1 := 41, field2 := omit };
173 vt_message_id1_upper.content.MySeq := { field1 := 41, field2 := omit };
174 vt_message_id2_lower.content.myEnum := second;
175 vt_message_id2_upper.content.MyEnum := second;
176 vt_message_id3_lower.content.iNTEGER := 15;
177 vt_message_id3_upper.content.INTEGER := 15;
178 if (c_message_id1_lower.content.mySeq == { field1 := 41, field2 := omit } and
179 c_message_id1_upper.content.MySeq == { field1 := 41, field2 := omit } and
180 c_message_id2_lower.content.myEnum == second and
181 c_message_id2_upper.content.MyEnum == second and
182 c_message_id3_lower.content.iNTEGER == 15 and
183 c_message_id3_upper.content.INTEGER == 15) {
186 if (v_message_id1_lower.content.mySeq == { field1 := 41, field2 := omit } and
187 v_message_id1_upper.content.MySeq == { field1 := 41, field2 := omit } and
188 v_message_id2_lower.content.myEnum == second and
189 v_message_id2_upper.content.MyEnum == second and
190 v_message_id3_lower.content.iNTEGER == 15 and
191 v_message_id3_upper.content.INTEGER == 15) {
194 if (match({ field1 := 41, field2 := omit }, t_message_id1_lower.content.mySeq) and
195 match({ field1 := 41, field2 := omit }, t_message_id1_lower.content.MySeq) and
196 match(second, t_message_id2_lower.content.myEnum) and
197 match(second, t_message_id2_lower.content.MyEnum) and
198 match(15, t_message_id3_lower.content.iNTEGER) and
199 match(15, t_message_id3_lower.content.INTEGER)) {
202 if (match({ field1 := 41, field2 := omit }, vt_message_id1_upper.content.mySeq) and
203 match({ field1 := 41, field2 := omit }, vt_message_id1_upper.content.MySeq) and
204 match(second, vt_message_id2_upper.content.myEnum) and
205 match(second, vt_message_id2_upper.content.MyEnum) and
206 match(15, vt_message_id3_upper.content.iNTEGER) and
207 match(15, vt_message_id3_upper.content.INTEGER)) {