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 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 |