/****************************************************************************** * Copyright (c) 2000-2014 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html ******************************************************************************/ module TucharstrOper { type component ucharstrOper_comptype { } type universal charstring myustr0 type myustr0 myustr1 type myustr0 myustr2 (char(0, 0, 0, 1)..char(0, 0, 1, 0)) type myustr0 myustr3 (char(0, 0, 0, 0), char(0, 0, 0, 1), char(0, 0, 1, 0)) type myustr0 myustr4 (char(0, 0, 0, 0) & char(0, 0, 0, 0), c_myustr0) type myustr0 myustr5 (c_myustr0..c_myustr0) length(lengthof(c_myustr0)) type universal charstring myustr6 (pattern "abc?\q{0, 0, 0, 65}") type myustr0 myustr7 (pattern "abc*xyz") type myustr7 myustr8 length(0) // It should be an empty set. type myustr1 myustr9 length(2) type universal charstring MyUCharString1 ("a".."z") type universal charstring MyUCharString2 (char(0, 0, 1, 111)..char(0, 0, 1, 113)) type universal charstring myustr10 (myustr2, myustr3) type universal charstring myustr11 length(0..infinity) // Full set. const myustr0 c_myustr0 := char(0, 0, 0, 0) const myustr7 c_myustr1 := "abcxyz" const myustr10 c_myustr2 := char(0, 0, 0, 1) template myustr0 t_myustr0 := char(0, 0, 0, 0) template myustr7 t_myustr1 := "abc" & c_myustr1 & "xyz" template myustr3 t_myustr2 := pattern char(0, 0, 0, 1) template myustr10 t_myustr3 := c_myustr2 template myustr2 t_myustr4 := char(0, 0, 0, 1) length(1) function f_ustr1() return myustr7 { if (lengthof(t_myustr1) > lengthof(c_myustr1)) { return valueof(t_myustr1) } else { return c_myustr1 } } testcase ucharstrSubtypes() runs on ucharstrOper_comptype { var template myustr2 vt_myustr1 := char(0, 0, 0, 1) // Value range. var template myustr3 vt_myustr2 := vt_myustr1 // Value list. var template myustr5 vt_myustr3 := char(0, 0, 0, 0) // Length and value range. var template myustr9 vt_myustr4 := valueof(vt_myustr3) & valueof(vt_myustr3) // Length only. var myustr2 v_myustr1 := char(0, 0, 0, 1) var myustr3 v_myustr2 := v_myustr1 var myustr5 v_myustr3 := char(0, 0, 0, 0) var myustr9 v_myustr4 := v_myustr3 & v_myustr3 if (valueof(vt_myustr1) == v_myustr1 and v_myustr2 == valueof(vt_myustr2)) { setverdict(pass) } else { setverdict(fail) } if (valueof(vt_myustr3) == v_myustr3 and v_myustr4 == valueof(vt_myustr4)) { setverdict(pass) } else { setverdict(fail) } if (f_ustr1() == "abc" & c_myustr1 & "xyz") { setverdict(pass) } else { setverdict(fail) } } testcase ucharstrIsvalue() runs on ucharstrOper_comptype { var universal charstring us := "foo"; var universal charstring un; var template universal charstring ust := "bar"; if ( isvalue(us) ) { setverdict(pass); } else { setverdict(fail); }; if ( isvalue(un) ) { setverdict(fail); } else { setverdict(pass); }; if ( isvalue(ust) ) { setverdict(pass); } else { setverdict(fail); }; } testcase ucharstrIsbound() runs on ucharstrOper_comptype { var universal charstring us := "foo"; var universal charstring un; var template universal charstring ust := "bar"; if ( isbound(un) ) { setverdict(fail); } else { setverdict(pass); }; if ( isbound(un[0]) ) { setverdict(fail); } else { setverdict(pass); }; if ( isbound(us) ) { setverdict(pass); } else { setverdict(fail); }; if ( isbound(ust) ) { setverdict(pass); } else { setverdict(fail); }; } testcase CR_TR00018474() runs on ucharstrOper_comptype { // Indexing of string template variables. var template universal charstring vtu1 := "fisherman" var template universal charstring vtu2 := char(0, 0, 0, 65) & "F" & char(0, 0, 0, 65) vtu1[0] := "F" 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) } vtu1[0] := "F" // Indexed assignment notation cannot be used here. vtu1[1] := "i" // Still works, nothing special. 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) } vtu2[0] := "B" if (match("BF" & char(0, 0, 0, 65), vtu2)) { setverdict(pass) } else { setverdict(fail) } } control { const universal charstring cl_1 := char(0, 0, 0, 0) const universal charstring cl_2 := "abcxyz" var universal charstring vl_1 := char(0, 0, 0, 0) var universal charstring vl_2 := "abcxyz" execute(ucharstrSubtypes()); execute(ucharstrIsvalue()); execute(ucharstrIsbound()); execute(CR_TR00018474()); } }