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 Txerboolean_verbose := false;
11 #define verbose Txerboolean_verbose
13 #include "../macros.ttcnin"
15 import from AsnValues all;
16 type component Tboolean {}
18 external function flatten(inout universal charstring par) ;
20 DECLARE_XER_ENCODERS(boolean , boolean);
21 DECLARE_EXER_ENCODERS(boolean,boolean)
22 DECLARE_XER_ENCODERS(rboolean, rboolean);
23 DECLARE_EXER_ENCODERS(rboolean,rboolean)
24 DECLARE_XER_ENCODERS(uboolean, uboolean);
25 DECLARE_EXER_ENCODERS(uboolean,uboolean)
26 DECLARE_XER_ENCODERS(rofboolean, rofboolean);
27 DECLARE_EXER_ENCODERS(rofboolean,rofboolean)
29 type record rboolean {
37 type record of boolean rofboolean; // NOT roflboolean !
39 testcase encode_bool() runs on Tboolean
41 var boolean plain := false;
42 var universal charstring expected := "<BOOLEAN><false/></BOOLEAN>";
43 CHECK_METHOD(cxer_enc_boolean, plain, expected);
44 CHECK_METHOD(bxer_enc_boolean, plain, expected & lf);
45 expected := "<BOOLEAN>false</BOOLEAN>";
46 CHECK_METHOD(exer_enc_boolean, plain, expected & lf);
49 expected := "<BOOLEAN><true/></BOOLEAN>"
50 CHECK_METHOD(cxer_enc_boolean, plain, expected);
51 CHECK_METHOD(bxer_enc_boolean, plain, expected & lf);
52 expected := "<BOOLEAN>true</BOOLEAN>";
53 CHECK_METHOD(exer_enc_boolean, plain, expected & lf);
56 testcase decode_bool() runs on Tboolean
58 var universal charstring input := "<BOOLEAN><false/></BOOLEAN>";
59 var boolean expected := false;
60 CHECK_DECODE(cxer_dec_boolean, input, boolean, expected);
62 input := "<BOOLEAN><true/></BOOLEAN>";
64 CHECK_DECODE(cxer_dec_boolean, input, boolean, expected);
67 testcase decode_textbool() runs on Tboolean
69 var universal charstring input := "<BOOLEAN>0</BOOLEAN>";
70 var boolean expected := false;
71 CHECK_DECODE(cxer_dec_boolean, input, boolean, expected);
73 input := "<BOOLEAN>1</BOOLEAN>";
75 CHECK_DECODE(cxer_dec_boolean, input, boolean, expected);
78 testcase encode_bool_omit() runs on Tboolean
80 var rboolean rec := { omit }
81 var universal charstring expected, unexpected;
83 expected := "<rboolean/>\n";
84 CHECK_METHOD(cxer_enc_rboolean, rec, expected);
85 CHECK_METHOD(bxer_enc_rboolean, rec, expected & lf);
86 CHECK_METHOD(exer_enc_rboolean, rec, expected & lf);
88 rec.b := true; // not omit anymore
89 expected := "<rboolean><b><true/></b></rboolean>\n";
90 CHECK_METHOD(cxer_enc_rboolean, rec, expected);
91 expected := "<rboolean>\n\t<b><true/></b>\n</rboolean>\n\n"
92 CHECK_METHOD(bxer_enc_rboolean, rec, expected);
93 expected := "<rboolean>\n\t<b>true</b>\n</rboolean>\n\n"
94 CHECK_METHOD(exer_enc_rboolean, rec, expected);
97 testcase decode_bool_omit() runs on Tboolean
99 var rboolean expected := { omit };
100 const charstring rbool_empty := "<rboolean/>\n";
101 CHECK_DECODE(cxer_dec_rboolean, rbool_empty, rboolean, expected);
102 CHECK_DECODE(bxer_dec_rboolean, rbool_empty, rboolean, expected);
104 const charstring rbool_t := "<rboolean><b><true/></b></rboolean>\n";
105 expected := { true };
106 CHECK_DECODE(cxer_dec_rboolean, rbool_t, rboolean, expected);
107 CHECK_DECODE(bxer_dec_rboolean, rbool_t, rboolean, expected);
109 const charstring rbool_f := "<rboolean><b><false/></b></rboolean>\n";
110 expected := { false };
111 CHECK_DECODE(cxer_dec_rboolean, rbool_f, rboolean, expected);
112 CHECK_DECODE(bxer_dec_rboolean, rbool_f, rboolean, expected);
115 testcase encode_bool_choice() runs on Tboolean
117 var uboolean rec := { b := false }
118 var universal charstring expected;
120 expected := "<uboolean>\n\t<b><false/></b>\n</uboolean>\n\n";
121 CHECK_METHOD(bxer_enc_uboolean, rec, expected);
123 CHECK_METHOD(cxer_enc_uboolean, rec, expected & lf);
124 expected := "<uboolean>\n\t<b>false</b>\n</uboolean>\n\n";
125 CHECK_METHOD(exer_enc_uboolean, rec, expected);
127 rec.b := true; // not omit anymore
128 expected := "<uboolean>\n\t<b><true/></b>\n</uboolean>\n\n";
129 CHECK_METHOD(bxer_enc_uboolean, rec, expected);
131 CHECK_METHOD(cxer_enc_uboolean, rec, expected & lf);
132 expected := "<uboolean>\n\t<b>true</b>\n</uboolean>\n\n";
133 CHECK_METHOD(exer_enc_uboolean, rec, expected);
136 testcase decode_bool_choice() runs on Tboolean
138 const charstring x0 := "<uboolean>\n\t<b><false/></b>\n</uboolean>\n\n";
139 var uboolean expected := { b := false }
140 CHECK_DECODE(bxer_dec_uboolean, x0, uboolean, expected);
141 CHECK_DECODE(cxer_dec_uboolean, x0, uboolean, expected);
143 const charstring x1 := "<uboolean>\n\t<b><true/></b>\n</uboolean>\n\n";
144 expected := { b := true }
145 CHECK_DECODE(bxer_dec_uboolean, x1, uboolean, expected);
146 CHECK_DECODE(cxer_dec_uboolean, x1, uboolean, expected);
149 const rofboolean a0 := {};
150 const charstring abstr_empty := "<rofboolean/>\n\n";
152 const rofboolean a1 := { false }
153 const charstring abstr1 :=
157 const charstring abstr1_exer :=
159 "\t<BOOLEAN>false</BOOLEAN>\n" &
162 const rofboolean a3 := { true, false, true }
163 const charstring abstr3 :=
165 "\t<true/><false/><true/>\n" &
167 const charstring abstr3_exer :=
169 "\t<BOOLEAN>true</BOOLEAN>\n" &
170 "\t<BOOLEAN>false</BOOLEAN>\n" &
171 "\t<BOOLEAN>true</BOOLEAN>\n" &
175 testcase encode_bool_array() runs on Tboolean
177 var universal charstring expected := abstr_empty;
178 CHECK_METHOD(bxer_enc_rofboolean, a0, expected);
179 CHECK_METHOD(exer_enc_rofboolean, a0, expected);
181 CHECK_METHOD(cxer_enc_rofboolean, a0, expected & lf);
184 CHECK_METHOD(bxer_enc_rofboolean, a1, expected);
186 CHECK_METHOD(cxer_enc_rofboolean, a1, expected & lf);
187 expected := abstr1_exer;
188 CHECK_METHOD(exer_enc_rofboolean, a1, expected);
191 CHECK_METHOD(bxer_enc_rofboolean, a3, expected);
193 CHECK_METHOD(cxer_enc_rofboolean, a3, expected & lf);
194 expected := abstr3_exer;
195 CHECK_METHOD(exer_enc_rofboolean, a3, expected);
198 testcase decode_bool_array() runs on Tboolean
200 var rofboolean expected := a0;
201 CHECK_DECODE2 (rofboolean, abstr_empty, rofboolean, expected);
202 CHECK_DECODE(exer_dec_rofboolean, abstr_empty, rofboolean, expected);
205 CHECK_DECODE2( rofboolean, abstr1 , rofboolean, expected);
206 CHECK_DECODE(exer_dec_rofboolean, abstr1_exer, rofboolean, expected);
209 CHECK_DECODE2 (rofboolean, abstr3 , rofboolean, expected);
210 CHECK_DECODE(exer_dec_rofboolean, abstr3_exer, rofboolean, expected);
215 execute(encode_bool());
216 execute(decode_bool());
217 execute(decode_textbool());
218 execute(encode_bool_omit());
219 execute(decode_bool_omit());
220 execute(encode_bool_choice());
221 execute(decode_bool_choice());
222 execute(encode_bool_array());
223 execute(decode_bool_array());
229 extension "version R8B";