diff --git a/regression_test/charstrOper/TcharstrOper.ttcn b/regression_test/charstrOper/TcharstrOper.ttcn index f7f0bf757b196f538272c1fdfe83c399aecb6966..5a8ff5dcc759622924c772d90d2373977ba7e753 100644 --- a/regression_test/charstrOper/TcharstrOper.ttcn +++ b/regression_test/charstrOper/TcharstrOper.ttcn @@ -602,6 +602,88 @@ testcase tc_charstring_IndexMistakes() runs on charstrOper_comptype { } } +// === String_Element tests === + +type component CT{ + port CSPort CS + timer T +} + +type port CSPort message { + inout charstring +} with { extension "internal" } + +function f_cs(in charstring cs) return charstring { + return cs; +} + +testcase tc_cs() runs on CT { + var charstring vl_cs1 := "Hi", vl_cs2 + vl_cs2 := f_cs(vl_cs1[0]); + if( vl_cs2 == "H") {setverdict(pass)} else { setverdict(fail)} +} + +//cs in altstep + +altstep as_cs(in charstring str) runs on CT { + var template charstring vl_str := ? + var charstring r; + [] CS.receive(vl_str) -> value r { if ( r == str) { setverdict(pass) } } + [] T.timeout { setverdict(fail, "timeout")} +} + +testcase tc_altstep_cs() runs on CT { + var charstring vl_str := "Hi"; + connect(self:CS, self:CS); + T.start(1.0); + CS.send(vl_str); + as_cs(vl_str); + T.stop; +} + +testcase tc_altstep_cs_idx() runs on CT { + var charstring vl_str := "Hi" + connect(self:CS, self:CS); + T.start(1.0); + CS.send(vl_str[0]); + as_cs(vl_str[0]); + T.stop; +} + +altstep as_cs_template(in template charstring str) runs on CT { + var template charstring vl_str := ?; + var charstring r; + [] CS.receive(vl_str) -> value r { if ( r == valueof(str)) { setverdict(pass) } } + [] T.timeout { setverdict(fail, "timeout")} +} + +testcase tc_altstep_cs_template() runs on CT { + var template charstring vl_str := "Hi"; + connect(self:CS, self:CS); + T.start(1.0); + CS.send(vl_str); + as_cs_template(vl_str); + T.stop; +} + +// cs in value list +testcase tc__value_list_cs() runs on CT { + var charstring vl_cs1 := "ABab", vl_cs2 + var template charstring vlt_cs := (vl_cs1[0], vl_cs1[1]); + vl_cs2 := "A"; + if( match(vl_cs2,vlt_cs)) {setverdict(pass)} else { setverdict(fail)} + vl_cs2 := "B"; + if( match(vl_cs2,vlt_cs)) {setverdict(pass)} else { setverdict(fail)} +} + +testcase tc__match_cs_idx() runs on CT { + var charstring vl_cs1 := "ABab"; + var template charstring vlt_cs := ("A","B"); //ok + if( match(vl_cs1[0],vlt_cs)) {setverdict(pass)} else { setverdict(fail)} +} + + + control { const charstring cl_1:="asd1"; var charstring vl_1; @@ -634,6 +716,13 @@ control { execute(tc_simple_charstring_template_pattern()); execute(tc_charstring_Uninit()); execute(tc_charstring_IndexMistakes()); + + execute(tc_cs()); + execute(tc_altstep_cs()); + execute(tc_altstep_cs_idx()); + execute(tc_altstep_cs_template()); + execute(tc__value_list_cs()); + execute(tc__match_cs_idx()); } }