Commit | Line | Data |
---|---|---|
970ed795 EL |
1 | /****************************************************************************** |
2 | * Copyright (c) 2000-2014 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 Txerenum { | |
9 | ||
10 | modulepar boolean Txerenum_verbose := false; | |
11 | #define verbose Txerenum_verbose | |
12 | ||
13 | #include "../macros.ttcnin" | |
14 | ||
15 | import from AsnValues all; | |
16 | type component TENUM {} | |
17 | ||
18 | type enumerated enumeger { Fred, Barney, Wilma, Betty } | |
19 | ||
20 | DECLARE_XER_ENCODERS (enumeger, enum); | |
21 | DECLARE_EXER_ENCODERS(enumeger, enum); | |
22 | DECLARE_XER_ENCODERS (renum, renum); | |
23 | DECLARE_EXER_ENCODERS(renum, renum); | |
24 | ||
25 | type record renum { | |
26 | enumeger e optional | |
27 | } | |
28 | ||
29 | const charstring e_freddy := "<enumeger><Fred/></enumeger>\n"; | |
30 | const charstring e_barney := "<enumeger><Barney/></enumeger>\n"; | |
31 | const charstring e_wilma := "<enumeger><Wilma/></enumeger>\n"; | |
32 | const charstring e_betty := "<enumeger><Betty/></enumeger>\n"; | |
33 | ||
34 | // GLOBAL-DEFAULTS MODIFIED-ENCODINGS implied for TTCN module, | |
35 | // hence TextEnumerated (X.693 amd1 clause 10.2.7 c) | |
36 | const charstring exer_freddy := "<enumeger>Fred</enumeger>\n\n"; | |
37 | const charstring exer_barney := "<enumeger>Barney</enumeger>\n\n"; | |
38 | const charstring exer_wilma := "<enumeger>Wilma</enumeger>\n\n"; | |
39 | const charstring exer_betty := "<enumeger>Betty</enumeger>\n\n"; | |
40 | ||
41 | testcase encode_enum() runs on TENUM | |
42 | { | |
43 | var enumeger szaki := Fred; | |
44 | var universal charstring expected := e_freddy; | |
45 | CHECK_METHOD(cxer_enc_enum, szaki, expected); | |
46 | CHECK_METHOD(bxer_enc_enum, szaki, expected & lf); | |
47 | expected := exer_freddy; | |
48 | CHECK_METHOD(exer_enc_enum, szaki, expected); | |
49 | ||
50 | szaki := Barney; | |
51 | expected := e_barney; | |
52 | CHECK_METHOD(cxer_enc_enum, szaki, expected); | |
53 | CHECK_METHOD(bxer_enc_enum, szaki, expected & lf); | |
54 | expected := exer_barney; | |
55 | CHECK_METHOD(exer_enc_enum, szaki, expected); | |
56 | ||
57 | szaki := Wilma; | |
58 | expected := e_wilma; | |
59 | CHECK_METHOD(cxer_enc_enum, szaki, expected); | |
60 | CHECK_METHOD(bxer_enc_enum, szaki, expected & lf); | |
61 | expected := exer_wilma; | |
62 | CHECK_METHOD(exer_enc_enum, szaki, expected); | |
63 | ||
64 | szaki := Betty; | |
65 | expected := e_betty; | |
66 | CHECK_METHOD(cxer_enc_enum, szaki, expected); | |
67 | CHECK_METHOD(bxer_enc_enum, szaki, expected & lf); | |
68 | expected := exer_betty; | |
69 | CHECK_METHOD(exer_enc_enum, szaki, expected); | |
70 | } | |
71 | ||
72 | testcase decode_enum() runs on TENUM | |
73 | { | |
74 | var enumeger expected := Fred; | |
75 | CHECK_DECODE2( enum, e_freddy, enumeger, expected); | |
76 | CHECK_DECODE(exer_dec_enum, exer_freddy, enumeger, expected); | |
77 | ||
78 | expected := Barney; | |
79 | CHECK_DECODE2( enum, e_barney, enumeger, expected); | |
80 | CHECK_DECODE(exer_dec_enum, exer_barney, enumeger, expected); | |
81 | ||
82 | expected := Wilma; | |
83 | CHECK_DECODE2( enum, e_wilma, enumeger, expected); | |
84 | CHECK_DECODE(exer_dec_enum, exer_wilma, enumeger, expected); | |
85 | ||
86 | expected := Betty; | |
87 | CHECK_DECODE2( enum, e_betty, enumeger, expected); | |
88 | CHECK_DECODE(exer_dec_enum, exer_betty, enumeger, expected); | |
89 | } | |
90 | ||
91 | const charstring e_mpty := "<renum/>\n"; | |
92 | testcase encode_enum_omit() runs on TENUM | |
93 | { | |
94 | var renum rec := { omit }; | |
95 | var universal charstring expected := e_mpty; | |
96 | CHECK_METHOD(cxer_enc_renum, rec, expected); | |
97 | CHECK_METHOD(bxer_enc_renum, rec, expected & lf); | |
98 | CHECK_METHOD(exer_enc_renum, rec, expected & lf); | |
99 | } | |
100 | ||
101 | testcase decode_enum_omit() runs on TENUM | |
102 | { | |
103 | var renum expected := { omit }; | |
104 | CHECK_DECODE2( renum, e_mpty, renum, expected); | |
105 | CHECK_DECODE(exer_dec_renum, e_mpty, renum, expected); | |
106 | } | |
107 | ||
108 | // - - - - - - - - - - - verdicttype acts like an enum - - - - - - - - - - - | |
109 | ||
110 | DECLARE_XER_ENCODERS(verdicttype, verdi) | |
111 | DECLARE_EXER_ENCODERS(verdicttype, verdi) | |
112 | ||
113 | const verdicttype nix := none; | |
114 | const verdicttype ok := pass; | |
115 | const verdicttype dunno:= inconc; | |
116 | const verdicttype epic := fail; | |
117 | const verdicttype yikes:= error; | |
118 | ||
119 | const universal charstring str_none := "<verdicttype>none</verdicttype>\n"; | |
120 | const universal charstring str_ok := "<verdicttype>pass</verdicttype>\n"; | |
121 | const universal charstring str_dunno:= "<verdicttype>inconc</verdicttype>\n"; | |
122 | const universal charstring str_epic := "<verdicttype>fail</verdicttype>\n"; | |
123 | const universal charstring str_yikes:= "<verdicttype>error</verdicttype>\n"; | |
124 | ||
125 | testcase encode_verdict() runs on TENUM | |
126 | { | |
127 | CHECK_METHOD(bxer_enc_verdi, nix , str_none ); | |
128 | CHECK_METHOD(bxer_enc_verdi, ok , str_ok ); | |
129 | CHECK_METHOD(bxer_enc_verdi, dunno, str_dunno); | |
130 | CHECK_METHOD(bxer_enc_verdi, epic , str_epic ); | |
131 | CHECK_METHOD(bxer_enc_verdi, yikes, str_yikes); | |
132 | // TODO other values | |
133 | } | |
134 | ||
135 | testcase decode_verdict() runs on TENUM | |
136 | { | |
137 | CHECK_DECODE(bxer_dec_verdi, str_none , verdicttype, nix ); | |
138 | CHECK_DECODE(bxer_dec_verdi, str_ok , verdicttype, ok ); | |
139 | CHECK_DECODE(bxer_dec_verdi, str_dunno, verdicttype, dunno); | |
140 | CHECK_DECODE(bxer_dec_verdi, str_epic , verdicttype, epic ); | |
141 | CHECK_DECODE(bxer_dec_verdi, str_yikes, verdicttype, yikes); | |
142 | } | |
143 | ||
144 | control { | |
145 | execute(encode_enum()); | |
146 | execute(decode_enum()); | |
147 | execute(encode_enum_omit()) | |
148 | execute(decode_enum_omit()) | |
149 | execute(encode_verdict()); | |
150 | execute(decode_verdict()); | |
151 | } | |
152 | ||
153 | } | |
154 | with { | |
155 | encode "XML"; | |
156 | extension "version R8E"; | |
157 | } |