9b36aa7b12ef5ecb3a03011668bfc12e1c0def12
[deliverable/titan.core.git] / regression_test / XML / TTCNandXML / EnumTest.ttcnpp
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 EnumTest {
9
10 modulepar boolean EnumTest_verbose := false;
11 #define verbose EnumTest_verbose
12
13 #include "../macros.ttcnin"
14
15 type enumerated PrimesUnder31 { int2(2), int3(3), int5(5), int7(7), int11(11),
16 int13(13), int17(17), int19(19), int23(23), int29(29) }
17
18 type enumerated NumbersUnder31 { int2(2), int3(3), int5(5), int7(7), int11(11),
19 int13(13), int17(17), int19(19), int23(23), int29(29) }
20 with {
21 variant "useNumber"
22 }
23
24 type record of PrimesUnder31 Primes;
25 type record of NumbersUnder31 Numbers;
26
27 type record of PrimesUnder31 PrimesList with { variant "list" };
28 type record of NumbersUnder31 NumbersList with { variant "list" };
29
30 type component SAP {}
31
32 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
33
34 DECLARE_XER_ENCODERS(PrimesUnder31, p31)
35 DECLARE_EXER_ENCODERS(PrimesUnder31, p31)
36
37 DECLARE_XER_ENCODERS(Primes, p)
38 DECLARE_EXER_ENCODERS(Primes, p)
39
40 DECLARE_XER_ENCODERS(PrimesList, pl)
41 DECLARE_EXER_ENCODERS(PrimesList, pl)
42
43 DECLARE_XER_ENCODERS(NumbersUnder31, n31)
44 DECLARE_EXER_ENCODERS(NumbersUnder31, n31)
45
46 DECLARE_XER_ENCODERS(Numbers, n)
47 DECLARE_EXER_ENCODERS(Numbers, n)
48
49 DECLARE_XER_ENCODERS(NumbersList, nrl)
50 DECLARE_EXER_ENCODERS(NumbersList, nrl)
51
52 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
53
54 const PrimesUnder31 p7 := int7;
55 const NumbersUnder31 n23 := int23;
56
57 const universal charstring p7_str_b :=
58 "<PrimesUnder31><int7/></PrimesUnder31>\n\n";
59
60 const universal charstring p7_str :=
61 "<PrimesUnder31>int7</PrimesUnder31>\n\n";
62
63 const universal charstring n23_str_b :=
64 "<NumbersUnder31><int23/></NumbersUnder31>\n\n";
65
66 const universal charstring n23_str :=
67 "<NumbersUnder31>23</NumbersUnder31>\n\n";
68
69 testcase bxer_enc_enum() runs on SAP
70 {
71 CHECK_METHOD(bxer_enc_p31, p7 , p7_str_b);
72 CHECK_METHOD(bxer_enc_n31, n23, n23_str_b);
73 }
74
75 testcase bxer_dec_enum() runs on SAP
76 {
77 CHECK_DECODE(bxer_dec_p31, p7_str_b , PrimesUnder31 , p7);
78 CHECK_DECODE(bxer_dec_n31, n23_str_b, NumbersUnder31, n23);
79 }
80
81 testcase exer_enc_enum() runs on SAP
82 {
83 CHECK_METHOD(exer_enc_p31, p7 , p7_str);
84 CHECK_METHOD(exer_enc_n31, n23, n23_str);
85 }
86
87 testcase exer_dec_enum() runs on SAP
88 {
89 CHECK_DECODE(exer_dec_p31, p7_str , PrimesUnder31 , p7);
90 CHECK_DECODE(exer_dec_n31, n23_str, NumbersUnder31, n23);
91 }
92
93 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
94
95 const Primes p0 := {}
96 const Numbers n0 := {}
97
98 const Primes p10 := { int2, int5 }
99 const Numbers n42 := { int2, int3, int7 }
100
101 const universal charstring p10_str_b :=
102 "<Primes>\n" &
103 "\t<int2/><int5/>\n" &
104 "</Primes>\n\n";
105
106 const universal charstring p10_str :=
107 "<Primes>\n" &
108 "\t<PrimesUnder31>int2</PrimesUnder31>\n" &
109 "\t<PrimesUnder31>int5</PrimesUnder31>\n" &
110 "</Primes>\n\n";
111
112 const universal charstring p10_str_ex :=
113 "<Primes>\n" &
114 "\t<PrimesUnder31>\n" &
115 "\t\tint2\n" &
116 "\t</PrimesUnder31>\n" &
117 "\t<PrimesUnder31>int5</PrimesUnder31>\n" &
118 "</Primes>\n\n";
119
120
121 /*
122 "\n" &
123 */
124
125 const universal charstring n42_str_b :=
126 "<Numbers>\n" &
127 "\t<int2/><int3/><int7/>\n" &
128 "</Numbers>\n\n";
129
130 const universal charstring n42_str :=
131 "<Numbers>\n" &
132 "\t<NumbersUnder31>2</NumbersUnder31>\n" &
133 "\t<NumbersUnder31>3</NumbersUnder31>\n" &
134 "\t<NumbersUnder31>7</NumbersUnder31>\n" &
135 "</Numbers>\n\n";
136
137 testcase bxer_enc_recofenum() runs on SAP
138 {
139 CHECK_METHOD(bxer_enc_p, p10, p10_str_b);
140 CHECK_METHOD(bxer_enc_n, n42, n42_str_b);
141 }
142
143 testcase bxer_dec_recofenum() runs on SAP
144 {
145 CHECK_DECODE(bxer_dec_p, p10_str_b, Primes , p10);
146 CHECK_DECODE(bxer_dec_n, n42_str_b, Numbers, n42);
147 }
148
149 testcase exer_enc_recofenum() runs on SAP
150 {
151 CHECK_METHOD(exer_enc_p, p10, p10_str);
152 CHECK_METHOD(exer_enc_n, n42, n42_str);
153 }
154
155 testcase exer_dec_recofenum() runs on SAP
156 {
157 CHECK_DECODE(exer_dec_p, p10_str, Primes , p10);
158 //can't do it yet: CHECK_DECODE(exer_dec_p, p10_str_ex, Primes , p10);
159 CHECK_DECODE(exer_dec_n, n42_str, Numbers, n42);
160 }
161
162 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
163
164 const PrimesList pl10 := { int2, int5 }
165 const NumbersList nl42 := { int2, int3, int7 }
166
167 const universal charstring pl10_str_b :=
168 "<PrimesList>\n" &
169 "\t<int2/><int5/>\n" &
170 "</PrimesList>\n\n";
171
172 const universal charstring nl42_str_b :=
173 "<NumbersList>\n" &
174 "\t<int2/><int3/><int7/>\n" &
175 "</NumbersList>\n\n";
176
177 testcase bxer_enc_listofenum() runs on SAP
178 {
179 CHECK_METHOD(bxer_enc_pl, pl10, pl10_str_b);
180 CHECK_METHOD(bxer_enc_nrl, nl42, nl42_str_b);
181 }
182
183 testcase bxer_dec_listofenum() runs on SAP
184 {
185 CHECK_DECODE(bxer_dec_p, p10_str_b, Primes , p10);
186 CHECK_DECODE(bxer_dec_n, n42_str_b, Numbers, n42);
187 }
188
189 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
190
191 control {
192 execute(bxer_enc_enum());
193 execute(bxer_dec_enum());
194
195 execute(exer_enc_enum());
196 execute(exer_dec_enum());
197
198 execute(bxer_enc_recofenum());
199 execute(bxer_dec_recofenum());
200
201 execute(exer_enc_recofenum());
202 execute(exer_dec_recofenum());
203
204 execute(bxer_enc_listofenum());
205 execute(bxer_dec_listofenum());
206 }
207
208 }
209 with { encode "XML" }
210
This page took 0.036009 seconds and 4 git commands to generate.