Sync with 5.1.0
[deliverable/titan.core.git] / regression_test / hexstrOper / ThexstrOper.ttcn
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 ThexstrOper
9 {
10 type component hexstrOper_comptype { }
11
12 type hexstring myhstr0
13 type hexstring myhstr1 length(1)
14 type hexstring myhstr2 length(0..1)
15 type hexstring myhstr3 ('0'H, '1'H, '00'H, '01'H, '10'H, '11'H) length(1)
16 type hexstring myhstr4 ('0'H, '1'H)
17 type hexstring myhstr5 (int2hex(0, 1) & ''H, int2hex(1, 1))
18 type myhstr5 myhstr6
19 type myhstr6 myhstr7 (c_myhstr1, int2hex(hex2int(c_myhstr1), 1))
20 type myhstr6 myhstr8 (int2hex(hex2int('0'H), 1))
21 type hexstring myhstr9 (myhstr2, myhstr3)
22 type hexstring myhstr10 length(0..infinity) // Full set.
23
24 const hexstring c_myhstr1 := '0'H
25 const myhstr9 c_myhstr2 := c_myhstr1
26
27 template hexstring t_myhstr1 := '0'H
28 template myhstr9 t_myhstr2 := t_myhstr1
29 template myhstr3 t_myhstr3 := '0'H length(1)
30 // TITAN doesn't allow patterns to be other than `charstring' or `universal
31 // charstring' types. It's denied by the grammar.
32
33 function f_hstr1() return myhstr6 {
34 return substr(replace(int2hex(0, 1) & int2hex(1, 1), 0, 1, '1'H), 0, 1)
35 }
36
37 testcase hexstrSubtypes() runs on hexstrOper_comptype {
38 var template myhstr1 vt_myhstr1 := '0'H // Simple length.
39 var template myhstr2 vt_myhstr2 := ''H // Length with range.
40 var template myhstr3 vt_myhstr3 := vt_myhstr1 // Values and length.
41 var template myhstr4 vt_myhstr4 := vt_myhstr1 // Values only.
42 var myhstr1 v_myhstr1 := '0'H
43 var myhstr2 v_myhstr2 := ''H
44 var myhstr3 v_myhstr3 := v_myhstr1
45 var myhstr4 v_myhstr4 := v_myhstr1
46
47 if (valueof(vt_myhstr1) == v_myhstr1 and v_myhstr2 == valueof(vt_myhstr2)) { setverdict(pass) }
48 else { setverdict(fail) }
49 if (valueof(vt_myhstr3) == v_myhstr3 and v_myhstr4 == valueof(vt_myhstr4)) { setverdict(pass) }
50 else { setverdict(fail) }
51 if (f_hstr1() == '1'H) { setverdict(pass) }
52 else { setverdict(fail) }
53 }
54
55 testcase hexstrIsvalue() runs on hexstrOper_comptype{
56 var hexstring hstr0;
57 var hexstring hstr1 := '1111'H;
58 var template hexstring thstr;
59
60 if ( isvalue(hstr0) ) { setverdict(fail); } else { setverdict(pass); };
61 if ( isvalue(hstr1) ) { setverdict(pass); } else { setverdict(fail); };
62 if ( isvalue(thstr) ) { setverdict(fail); } else { setverdict(pass); };
63 }
64
65 testcase hexstrIsbound() runs on hexstrOper_comptype {
66 var hexstring hstr0;
67 var hexstring hstr1 := '1111'H;
68 var template hexstring thstr;
69
70 if ( isbound(hstr0) ) { setverdict(fail); } else { setverdict(pass); };
71 if ( isbound(hstr0[0]) ) { setverdict(fail); } else { setverdict(pass); };
72 if ( isbound(hstr1) ) { setverdict(pass); } else { setverdict(fail); };
73 if ( isbound(thstr) ) { setverdict(fail); } else { setverdict(pass); };
74 }
75
76 testcase CR_TR00018474() runs on hexstrOper_comptype {
77 // Indexing of string template variables.
78 var template hexstring vth1 := 'AABBCCDDEE'H
79 var template hexstring vth2 := 'AABB?CC'H // It's a pattern, cannot be indexed.
80 vth1[0] := 'B'H
81 if (match('BABBCCDDEE'H, vth1)) { setverdict(pass) } else { setverdict(fail) }
82 vth1[0] := 'B'H // Indexed assignment notation cannot be used here.
83 vth1[1] := 'A'H // Still works, nothing special.
84 if (match('BABBCCDDEE'H, vth1)) { setverdict(pass) } else { setverdict(fail) }
85 }
86
87 control {
88 const hexstring cl_1 := '0'H
89 var hexstring vl_1;
90
91 execute(hexstrSubtypes());
92 execute(hexstrIsvalue());
93 execute(hexstrIsbound());
94 execute(CR_TR00018474());
95 }
96 }
This page took 0.032207 seconds and 5 git commands to generate.