Commit | Line | Data |
---|---|---|
970ed795 | 1 | /****************************************************************************** |
d44e3c4f | 2 | * Copyright (c) 2000-2016 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 | |
d44e3c4f | 7 | * |
8 | * Contributors: | |
9 | * Balasko, Jeno | |
10 | * Kovacs, Ferenc | |
11 | * Szabados, Kristof | |
12 | * | |
970ed795 EL |
13 | ******************************************************************************/ |
14 | module TucharstrOper | |
15 | { | |
16 | type component ucharstrOper_comptype { } | |
17 | ||
18 | type universal charstring myustr0 | |
19 | type myustr0 myustr1 | |
20 | type myustr0 myustr2 (char(0, 0, 0, 1)..char(0, 0, 1, 0)) | |
21 | type myustr0 myustr3 (char(0, 0, 0, 0), char(0, 0, 0, 1), char(0, 0, 1, 0)) | |
22 | type myustr0 myustr4 (char(0, 0, 0, 0) & char(0, 0, 0, 0), c_myustr0) | |
23 | type myustr0 myustr5 (c_myustr0..c_myustr0) length(lengthof(c_myustr0)) | |
24 | type universal charstring myustr6 (pattern "abc?\q{0, 0, 0, 65}") | |
25 | type myustr0 myustr7 (pattern "abc*xyz") | |
26 | type myustr7 myustr8 length(0) // It should be an empty set. | |
27 | type myustr1 myustr9 length(2) | |
28 | type universal charstring MyUCharString1 ("a".."z") | |
29 | type universal charstring MyUCharString2 (char(0, 0, 1, 111)..char(0, 0, 1, 113)) | |
30 | type universal charstring myustr10 (myustr2, myustr3) | |
31 | type universal charstring myustr11 length(0..infinity) // Full set. | |
32 | ||
33 | const myustr0 c_myustr0 := char(0, 0, 0, 0) | |
34 | const myustr7 c_myustr1 := "abcxyz" | |
35 | const myustr10 c_myustr2 := char(0, 0, 0, 1) | |
36 | ||
37 | template myustr0 t_myustr0 := char(0, 0, 0, 0) | |
38 | template myustr7 t_myustr1 := "abc" & c_myustr1 & "xyz" | |
39 | template myustr3 t_myustr2 := pattern char(0, 0, 0, 1) | |
40 | template myustr10 t_myustr3 := c_myustr2 | |
41 | template myustr2 t_myustr4 := char(0, 0, 0, 1) length(1) | |
42 | ||
43 | function f_ustr1() return myustr7 { | |
44 | if (lengthof(t_myustr1) > lengthof(c_myustr1)) { return valueof(t_myustr1) } | |
45 | else { return c_myustr1 } | |
46 | } | |
47 | ||
48 | testcase ucharstrSubtypes() runs on ucharstrOper_comptype { | |
49 | var template myustr2 vt_myustr1 := char(0, 0, 0, 1) // Value range. | |
50 | var template myustr3 vt_myustr2 := vt_myustr1 // Value list. | |
51 | var template myustr5 vt_myustr3 := char(0, 0, 0, 0) // Length and value range. | |
52 | var template myustr9 vt_myustr4 := valueof(vt_myustr3) & valueof(vt_myustr3) // Length only. | |
53 | var myustr2 v_myustr1 := char(0, 0, 0, 1) | |
54 | var myustr3 v_myustr2 := v_myustr1 | |
55 | var myustr5 v_myustr3 := char(0, 0, 0, 0) | |
56 | var myustr9 v_myustr4 := v_myustr3 & v_myustr3 | |
57 | ||
58 | if (valueof(vt_myustr1) == v_myustr1 and v_myustr2 == valueof(vt_myustr2)) { setverdict(pass) } | |
59 | else { setverdict(fail) } | |
60 | if (valueof(vt_myustr3) == v_myustr3 and v_myustr4 == valueof(vt_myustr4)) { setverdict(pass) } | |
61 | else { setverdict(fail) } | |
62 | if (f_ustr1() == "abc" & c_myustr1 & "xyz") { setverdict(pass) } | |
63 | else { setverdict(fail) } | |
64 | } | |
65 | ||
66 | testcase ucharstrIsvalue() runs on ucharstrOper_comptype { | |
67 | var universal charstring us := "foo"; | |
68 | var universal charstring un; | |
69 | var template universal charstring ust := "bar"; | |
70 | ||
71 | if ( isvalue(us) ) { setverdict(pass); } else { setverdict(fail); }; | |
72 | if ( isvalue(un) ) { setverdict(fail); } else { setverdict(pass); }; | |
73 | if ( isvalue(ust) ) { setverdict(pass); } else { setverdict(fail); }; | |
74 | } | |
75 | ||
76 | testcase ucharstrIsbound() runs on ucharstrOper_comptype { | |
77 | var universal charstring us := "foo"; | |
78 | var universal charstring un; | |
79 | var template universal charstring ust := "bar"; | |
80 | ||
81 | if ( isbound(un) ) { setverdict(fail); } else { setverdict(pass); }; | |
82 | if ( isbound(un[0]) ) { setverdict(fail); } else { setverdict(pass); }; | |
83 | if ( isbound(us) ) { setverdict(pass); } else { setverdict(fail); }; | |
84 | if ( isbound(ust) ) { setverdict(pass); } else { setverdict(fail); }; | |
85 | } | |
86 | ||
87 | testcase CR_TR00018474() runs on ucharstrOper_comptype { | |
88 | // Indexing of string template variables. | |
89 | var template universal charstring vtu1 := "fisherman" | |
90 | var template universal charstring vtu2 := char(0, 0, 0, 65) & "F" & char(0, 0, 0, 65) | |
91 | vtu1[0] := "F" | |
92 | if (match(char(0, 0, 0, 70) & char(0, 0, 0, 105) & char(0, 0, 0, 115) & char(0, 0, 0, 104) & char(0, 0, 0, 101) & char(0, 0, 0, 114) & char(0, 0, 0, 109) & char(0, 0, 0, 97) & char(0, 0, 0, 110), vtu1)) { setverdict(pass) } else { setverdict(fail) } | |
93 | vtu1[0] := "F" // Indexed assignment notation cannot be used here. | |
94 | vtu1[1] := "i" // Still works, nothing special. | |
95 | if (match(char(0, 0, 0, 70) & char(0, 0, 0, 105) & char(0, 0, 0, 115) & char(0, 0, 0, 104) & char(0, 0, 0, 101) & char(0, 0, 0, 114) & char(0, 0, 0, 109) & char(0, 0, 0, 97) & char(0, 0, 0, 110), vtu1)) { setverdict(pass) } else { setverdict(fail) } | |
96 | vtu2[0] := "B" | |
97 | if (match("BF" & char(0, 0, 0, 65), vtu2)) { setverdict(pass) } else { setverdict(fail) } | |
98 | } | |
99 | ||
100 | control { | |
101 | const universal charstring cl_1 := char(0, 0, 0, 0) | |
102 | const universal charstring cl_2 := "abcxyz" | |
103 | var universal charstring vl_1 := char(0, 0, 0, 0) | |
104 | var universal charstring vl_2 := "abcxyz" | |
105 | ||
106 | execute(ucharstrSubtypes()); | |
107 | execute(ucharstrIsvalue()); | |
108 | execute(ucharstrIsbound()); | |
109 | execute(CR_TR00018474()); | |
110 | } | |
111 | } |