diff --git a/regression_test/templateRecof/TmultiplePermutations.ttcn b/regression_test/templateRecof/TmultiplePermutations.ttcn index 5dff58dcbacbdca19a5c5f30b018c4b9da82f898..e4e900fa4b254929923e1b90a9cb8450594304a3 100644 --- a/regression_test/templateRecof/TmultiplePermutations.ttcn +++ b/regression_test/templateRecof/TmultiplePermutations.ttcn @@ -19,11 +19,17 @@ type record of integer RoI; type record of float RoF; type record of charstring RoCS; +type record of RoI RoRoI; +type record of RoF RoRoF; +type record of RoCS RoRoCS; + type record Roios { RoI roi, octetstring os } +modulepar template RoI mpt_roi := { }; + type component CT_empty { }; type component CT_perm { var template RoI vt_comp_perm := { permutation(1,2,3) }; @@ -37,74 +43,193 @@ function f_do_nothing(in template RoI p_roi) runs on CT_empty return template Ro return p_roi; } -modulepar { - template RoI mpt_roi := { }; + +function f_roi_match_test(inout RoRoI pl_matching_values, in template RoI t_roi) { + var integer vl_size := sizeof(pl_matching_values); + for(var integer i:= 0; i < vl_size ; i:=i+1) { + if(not match(pl_matching_values[i],t_roi)) { + setverdict(fail, i, ": ",match(pl_matching_values[i],t_roi) ); + break; //? + } + } + setverdict(pass); } -// Testing permutation with template variable in a component -testcase tc_mul_perm_component1() runs on CT_perm { +function f_roi_no_match_test(inout RoRoI pl_matching_values, in template RoI t_roi) { + var integer vl_size := sizeof(pl_matching_values); + for(var integer i:= 0; i < vl_size ; i:=i+1) { + if( match(pl_matching_values[i],t_roi)) { + setverdict(fail," i: ", match( pl_matching_values[i],t_roi) ); + break; //? + } + } + setverdict(pass); +} + +//float +function f_rof_match_test(inout RoRoF pl_matching_values, in template RoF t_rof) { + var integer vl_size := sizeof(pl_matching_values); + for(var integer i:= 0; i < vl_size ; i:=i+1) { + if(not match(pl_matching_values[i],t_rof)) { + setverdict(fail, i, match(pl_matching_values[i],t_rof) ); + break; //? + } + } + setverdict(pass); +} + +function f_rof_no_match_test(inout RoRoF pl_matching_values, in template RoF t_rof) { + var integer vl_size := sizeof(pl_matching_values); + for(var integer i:= 0; i < vl_size ; i:=i+1) { + if( match(pl_matching_values[i],t_rof)) { + setverdict(fail); + break; //? + } + } + setverdict(pass); +} + +//charstring +function f_rocs_match_test(inout RoRoCS pl_matching_values, in template RoCS t_rocs) { + var integer vl_size := sizeof(pl_matching_values); + for(var integer i:= 0; i < vl_size ; i:=i+1) { + if(not match(pl_matching_values[i],t_rocs)) { + setverdict(fail, i,":", match(pl_matching_values[i],t_rocs) ); + break; //? + } + } setverdict(pass); } -testcase tc_mul_perm_component2() runs on CT_perm { +function f_rocs_no_match_test(inout RoRoCS pl_matching_values, in template RoCS t_rocs) { + var integer vl_size := sizeof(pl_matching_values); + for(var integer i:= 0; i < vl_size ; i:=i+1) { + if( match(pl_matching_values[i],t_rocs)) { + setverdict(fail,i, ":", match(pl_matching_values[i],t_rocs)); + break; //? + } + } setverdict(pass); } +//**** Test cases **** + +// Testing permutation with template variable in a component +testcase tc_mul_perm_component1() runs on CT_perm { + vt_comp_perm := { permutation(4,5,6) }; + var RoRoI vl_maching := { {4,5,6}, {4,6,5}, {5,4,6},{5,6,4}, {6,4,5},{6,5,4} } + var RoRoI vl_notmaching := {{}, {2}, {4},{4,5}, {4,5,7}, {4,5,6,6}, {4,5,6,7},{10,11,4,5,6} } + f_roi_match_test(vl_maching,vt_comp_perm); + f_roi_no_match_test(vl_notmaching, vt_comp_perm); + setverdict(pass); + +} + + // Testing multiple permutations on a template variable testcase tc_mul_perm_var() runs on CT_empty { - var template RoI vt_roi := { permutation(2) }; + var template RoI vt_roi := { permutation(4,5,6) }; + var RoRoI vl_maching := { {3,4,7}, {3,7,4},{4,3,7}, {4,7,3}, {7,4,3},{7,3,4} } + var RoRoI vl_notmaching := {{2}, {2,3,4,7}, {}} vt_roi := { permutation(3,4,7) }; + f_roi_match_test(vl_maching,vt_roi); + f_roi_no_match_test(vl_notmaching, vt_roi); setverdict(pass); } testcase tc_mul_perm_temp() runs on CT_empty { var template RoI vt_roi := { permutation(5,2) }; vt_roi := t_perm1; - vt_roi := t_perm2; + vt_roi := t_perm2; //{1,2,permutation(5,?))} + var RoRoI vl_maching := { {1,2,5,6}, {1,2,6,5}, {1,2,99,5} } + var RoRoI vl_notmaching := { {2}, {6,5,4,3,2,1}, {1,2,6,6} } + f_roi_match_test(vl_maching,vt_roi); + f_roi_no_match_test(vl_notmaching, vt_roi); setverdict(pass); } testcase tc_mul_perm_var2() runs on CT_empty { var template RoI vt_roi1 := { permutation(1,2,3,4) }; var template RoI vt_roi2 := { permutation(5,6) }; - vt_roi2 := valueof(vt_roi1) & { 10, 20, 30 }; - vt_roi2 := t_perm2; + vt_roi2 := valueof(vt_roi1) & { 10, 20, 30 }; //result := { 1,2,3,4,10,20,30} ??? + // log(vt_roi2); //{ 1, 2, 3, 4, 10, 20, 30 } + // log(t_perm2); // + vt_roi2 := t_perm2; //{1,2,permutation(5,?))} + // log(vt_roi2); vt_roi1 := vt_roi2; + // log(vt_roi1); vt_roi1 := vt_roi1; + log(vt_roi1); //{ 1, 2, permutation(5, ?) } + var RoRoI vl_maching := { {1,2,5,6}, {1,2,6,5}, {1,2,99,5} } + var RoRoI vl_notmaching := { {2}, {6,5,4,3,2,1}, {1,2,6,6} } + f_roi_match_test(vl_maching,vt_roi1); + f_roi_no_match_test(vl_notmaching, vt_roi1); setverdict(pass); } +//float: testcase tc_mul_perm_var_f() runs on CT_empty { var template RoF vt_rof := { 1.0, 0.0, permutation(9.5, *) }; vt_rof := { 0.0, permutation(1.0, 2.0, ?), 10.0, permutation(2.73, 3.14, *) }; - vt_rof := { permutation( (0.0 .. 1.0) ) }; + + vt_rof := { -1.0, permutation( (0.0 .. 1.0), 2.0, 3.0 ) }; //??? + var RoRoF vl_maching := { {-1.0, 0.0, 2.0, 3.0}, {-1.0, 0.2, 3.0, 2.0} } + var RoRoF vl_notmaching := { {}, {-1.0}, {0.0}, {-1.0, 0.2, 3.0} , {-1.0, 0.0, 2.0, 3.0, 4.0} } + f_rof_match_test(vl_maching,vt_rof); + f_rof_no_match_test(vl_notmaching, vt_rof); setverdict(pass); } +//charstring testcase tc_mul_perm_var_cs() runs on CT_empty { var template RoCS vt_rocs := { "one", "two", permutation("six", "seven", "eight") }; vt_rocs := { permutation("cat", "dog", pattern "a*d" length (4..10) ) }; vt_rocs := { permutation( ("a".."f") ) }; + vt_rocs := { permutation("cat", "dog", pattern "a*d" length (4..10) ) }; + var RoRoCS vl_maching := { {"cat", "dog", "axxd"}, { "dog", "cat", "a12345678d"} } + var RoRoCS vl_notmaching := { {}, {"cat", "dog", "axd"}, { "dog", "cat", "a123456789d"} } + f_rocs_match_test(vl_maching,vt_rocs); + f_rocs_no_match_test(vl_notmaching, vt_rocs); setverdict(pass); } testcase tc_mul_perm_func() runs on CT_empty { var template RoI vt_roi := { 1, 2, permutation(6,7,8) }; vt_roi := f_do_nothing(vt_roi); + var RoRoI vl_maching := { {1,2,6,7,8}, {1,2,6,8,7}, {1,2,8,7,6} } //etc + var RoRoI vl_notmaching := { {}, {2}, {2,1,6,7,8}, {1,2,6,7,9},{1,2,6,7,8,9} } setverdict(pass); } testcase tc_mul_perm_modulepar() runs on CT_empty { var template RoI vt_roi := { permutation(8,9) }; - vt_roi := mpt_roi; + vt_roi := mpt_roi;//{ permutation(1,2,3), 10 } vt_roi := { permutation(8,9,10) }; + var RoRoI vl_maching := { {8,9,10},{8,10,9},{9,8,10}} //etc + var RoRoI vl_notmaching := { {}, {8}, {8,9,10,11} } + f_roi_match_test(vl_maching,vt_roi); + f_roi_no_match_test(vl_notmaching, vt_roi); + setverdict(pass); +} + +testcase tc_mul_perm_modulepar2() runs on CT_empty { + var template RoI vt_roi := { permutation(8,9) }; + vt_roi := mpt_roi;//{ permutation(1,2,3), 10 } + var RoRoI vl_maching := { {1,2,3,10},{1,3,2,10}} //etc + var RoRoI vl_notmaching := { {}, {1}, {1,2,10},{10,1,2,3} } + f_roi_match_test(vl_maching,vt_roi); + f_roi_no_match_test(vl_notmaching, vt_roi); setverdict(pass); } testcase tc_mul_perm_all_from() runs on CT_empty { var template RoI vt_roi := { 1, 2, permutation(3, 4, all from t_simple ) }; vt_roi := { permutation(-2, -1, all from t_simple) }; - vt_roi := { -2, -1, permutation(all from t_simple) }; + vt_roi := { -2, -1, permutation(all from t_simple) };// {-2,-1, permutation(6,7,8)} + var RoRoI vl_maching := { {-2,-1,6,7,8}, {-2,-1,8,7,6} } //etc + var RoRoI vl_notmaching := { {}, {2}, {2,1,6,7,8}, {-2,-1},{-2,-1,6,8,9}, {-2,-1,8,7,6,6} } + f_roi_match_test(vl_maching,vt_roi); + f_roi_no_match_test(vl_notmaching, vt_roi); setverdict(pass); } @@ -119,13 +244,18 @@ testcase tc_mul_perm_var3() runs on CT_empty { testcase tc_mul_perm_field() runs on CT_empty { var template Roios vt_roios := { { permutation (1, 2, 3) } , 'DEAD'O }; vt_roios.roi := { 1, permutation(2, 3) }; - vt_roios.roi := { permutation(7, lengthof(vt_roios.roi)), 19 }; - setverdict(pass); + vt_roios.roi := { permutation(7, lengthof(vt_roios.roi)), 19 }; //perm(7,3),19} + var template Roios vt_expected := { { permutation(7,3),19}, 'DEAD'O } + log(vt_roios); + if( log2str(vt_roios) == log2str(vt_expected)) { + setverdict(pass); + } else { + setverdict(fail) + } } control { execute(tc_mul_perm_component1()); - execute(tc_mul_perm_component2()); execute(tc_mul_perm_var()); execute(tc_mul_perm_temp()); execute(tc_mul_perm_var2()); @@ -133,6 +263,7 @@ control { execute(tc_mul_perm_var_cs()); execute(tc_mul_perm_func()); execute(tc_mul_perm_modulepar()); + execute(tc_mul_perm_modulepar2()); execute(tc_mul_perm_all_from()); execute(tc_mul_perm_var3()); execute(tc_mul_perm_field());