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 ******************************************************************************/
10 modulepar boolean EnumTest_verbose := false;
11 #define verbose EnumTest_verbose
13 #include "../macros.ttcnin"
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) }
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) }
24 type record of PrimesUnder31 Primes;
25 type record of NumbersUnder31 Numbers;
27 type record of PrimesUnder31 PrimesList with { variant "list" };
28 type record of NumbersUnder31 NumbersList with { variant "list" };
32 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
34 DECLARE_XER_ENCODERS(PrimesUnder31, p31)
35 DECLARE_EXER_ENCODERS(PrimesUnder31, p31)
37 DECLARE_XER_ENCODERS(Primes, p)
38 DECLARE_EXER_ENCODERS(Primes, p)
40 DECLARE_XER_ENCODERS(PrimesList, pl)
41 DECLARE_EXER_ENCODERS(PrimesList, pl)
43 DECLARE_XER_ENCODERS(NumbersUnder31, n31)
44 DECLARE_EXER_ENCODERS(NumbersUnder31, n31)
46 DECLARE_XER_ENCODERS(Numbers, n)
47 DECLARE_EXER_ENCODERS(Numbers, n)
49 DECLARE_XER_ENCODERS(NumbersList, nrl)
50 DECLARE_EXER_ENCODERS(NumbersList, nrl)
52 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
54 const PrimesUnder31 p7 := int7;
55 const NumbersUnder31 n23 := int23;
57 const universal charstring p7_str_b :=
58 "<PrimesUnder31><int7/></PrimesUnder31>\n\n";
60 const universal charstring p7_str :=
61 "<PrimesUnder31>int7</PrimesUnder31>\n\n";
63 const universal charstring n23_str_b :=
64 "<NumbersUnder31><int23/></NumbersUnder31>\n\n";
66 const universal charstring n23_str :=
67 "<NumbersUnder31>23</NumbersUnder31>\n\n";
69 testcase bxer_enc_enum() runs on SAP
71 CHECK_METHOD(bxer_enc_p31, p7 , p7_str_b);
72 CHECK_METHOD(bxer_enc_n31, n23, n23_str_b);
75 testcase bxer_dec_enum() runs on SAP
77 CHECK_DECODE(bxer_dec_p31, p7_str_b , PrimesUnder31 , p7);
78 CHECK_DECODE(bxer_dec_n31, n23_str_b, NumbersUnder31, n23);
81 testcase exer_enc_enum() runs on SAP
83 CHECK_METHOD(exer_enc_p31, p7 , p7_str);
84 CHECK_METHOD(exer_enc_n31, n23, n23_str);
87 testcase exer_dec_enum() runs on SAP
89 CHECK_DECODE(exer_dec_p31, p7_str , PrimesUnder31 , p7);
90 CHECK_DECODE(exer_dec_n31, n23_str, NumbersUnder31, n23);
93 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
96 const Numbers n0 := {}
98 const Primes p10 := { int2, int5 }
99 const Numbers n42 := { int2, int3, int7 }
101 const universal charstring p10_str_b :=
103 "\t<int2/><int5/>\n" &
106 const universal charstring p10_str :=
108 "\t<PrimesUnder31>int2</PrimesUnder31>\n" &
109 "\t<PrimesUnder31>int5</PrimesUnder31>\n" &
112 const universal charstring p10_str_ex :=
114 "\t<PrimesUnder31>\n" &
116 "\t</PrimesUnder31>\n" &
117 "\t<PrimesUnder31>int5</PrimesUnder31>\n" &
125 const universal charstring n42_str_b :=
127 "\t<int2/><int3/><int7/>\n" &
130 const universal charstring n42_str :=
132 "\t<NumbersUnder31>2</NumbersUnder31>\n" &
133 "\t<NumbersUnder31>3</NumbersUnder31>\n" &
134 "\t<NumbersUnder31>7</NumbersUnder31>\n" &
137 testcase bxer_enc_recofenum() runs on SAP
139 CHECK_METHOD(bxer_enc_p, p10, p10_str_b);
140 CHECK_METHOD(bxer_enc_n, n42, n42_str_b);
143 testcase bxer_dec_recofenum() runs on SAP
145 CHECK_DECODE(bxer_dec_p, p10_str_b, Primes , p10);
146 CHECK_DECODE(bxer_dec_n, n42_str_b, Numbers, n42);
149 testcase exer_enc_recofenum() runs on SAP
151 CHECK_METHOD(exer_enc_p, p10, p10_str);
152 CHECK_METHOD(exer_enc_n, n42, n42_str);
155 testcase exer_dec_recofenum() runs on SAP
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);
162 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
164 const PrimesList pl10 := { int2, int5 }
165 const NumbersList nl42 := { int2, int3, int7 }
167 const universal charstring pl10_str_b :=
169 "\t<int2/><int5/>\n" &
172 const universal charstring nl42_str_b :=
174 "\t<int2/><int3/><int7/>\n" &
175 "</NumbersList>\n\n";
177 testcase bxer_enc_listofenum() runs on SAP
179 CHECK_METHOD(bxer_enc_pl, pl10, pl10_str_b);
180 CHECK_METHOD(bxer_enc_nrl, nl42, nl42_str_b);
183 testcase bxer_dec_listofenum() runs on SAP
185 CHECK_DECODE(bxer_dec_p, p10_str_b, Primes , p10);
186 CHECK_DECODE(bxer_dec_n, n42_str_b, Numbers, n42);
189 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
192 execute(bxer_enc_enum());
193 execute(bxer_dec_enum());
195 execute(exer_enc_enum());
196 execute(exer_dec_enum());
198 execute(bxer_enc_recofenum());
199 execute(bxer_dec_recofenum());
201 execute(exer_enc_recofenum());
202 execute(exer_dec_recofenum());
204 execute(bxer_enc_listofenum());
205 execute(bxer_dec_listofenum());
209 with { encode "XML" }