diff --git a/regression_test/intOper/TintOper.ttcn b/regression_test/intOper/TintOper.ttcn old mode 100644 new mode 100755 index c53018d5c45e89de6440731cbfecba82844e7372..7caf76fe5c9e106c6c5c93a54d5ede48bc80b6ab --- a/regression_test/intOper/TintOper.ttcn +++ b/regression_test/intOper/TintOper.ttcn @@ -15,7 +15,10 @@ * ******************************************************************************/ module TintOper -{const integer TintOper_const1:=2; +{ + +const integer TintOper_const1:=2; + type component intOper_comptype { }; type port PCOType message @@ -23,15 +26,18 @@ type port PCOType message inout integer inout eint1 inout rint1 -} +} with { extension "internal"} -type component bigIntOper_comptype { port PCOType comp_port } +type component bigIntOper_comptype { + port PCOType comp_port +} template integer tint1 := -12345678910111213141516 template integer tint2 := 123456789101112131415 template integer tint3 := -11111111111111111111111 template integer tint4 := 111111111111111111111 type enumerated eint1 {ec1(-1), ec2(2147483647), ec3(-2147483647)} + type record rint1 { integer f1, integer f2, @@ -60,6 +66,39 @@ testcase intAssign() runs on intOper_comptype else {setverdict(fail);} } +testcase intAssign_big() runs on intOper_comptype { + var integer x1 := 2147483647; + if ( x1 == 2147483647 ) {setverdict(pass,x1)} else {setverdict(fail, x1)} + x1 := 2147483648; + if ( x1 == 2147483647+1 ) {setverdict(pass,x1)} else {setverdict(fail, x1)} + x1 := x1; + if ( x1 == 2147483647+1 ) {setverdict(pass,x1)} else {setverdict(fail, x1)} + + var integer x2 := -2147483648; + if ( x2 == -2147483648 ) {setverdict(pass,x2)} else {setverdict(fail, x2)} + if ( x2 == -x1 ) {setverdict(pass,x2, x1)} else {setverdict(fail, x2,x1)} + + x2 := x2; + if ( x2 == -2147483648 ) {setverdict(pass,x2)} else {setverdict(fail, x2)} + x2 := x2+1; + if ( x2 == -2147483647 ) {setverdict(pass,x2)} else {setverdict(fail, x2)} + x2:=0; + if ( x2 == 0 ) {setverdict(pass,x2)} else {setverdict(fail, x2)} + x2 := -x1; + if ( x2 == -2147483648 ) {setverdict(pass,x2)} else {setverdict(fail, x2)} +} + +testcase intAssign_unbound() runs on intOper_comptype { + var integer x1; + var integer x2; + @try { + x2 := x1; + setverdict(fail,"This line should not be reached"); + } @catch(e) { + setverdict(pass, "Expected DTE: ",e) + } +} + testcase intConst() runs on intOper_comptype { const integer TintOper_const3:=5; if (TintOper_const1==2) {setverdict(pass);} //definition part @@ -274,6 +313,60 @@ testcase intAdd() runs on intOper_comptype else {setverdict(fail);} } +testcase intAdd_big1() runs on intOper_comptype { + var integer x1 := 2147483648; + var integer x2 := 1, x3, exp := 2147483649; + x3 := x2 + x1; + if (x3 == exp) { setverdict(pass)} else { setverdict(fail)} +} + +testcase intAdd_big2() runs on intOper_comptype { + var integer x1 := 2147483648; + var integer x2 := 1, x3, exp := 2147483649; + x3 := x1 + x2; + if (x3 == exp) { setverdict(pass)} else { setverdict(fail)} +} + +testcase intAdd_big3() runs on intOper_comptype { + var integer x1 := 2147483648; + var integer x2 := 2147483648, x3, exp := 4294967296; + x3 := x1 + x2; + if (x3 == exp) { setverdict(pass)} else { setverdict(fail)} +} + +testcase intAdd_unbound1() runs on intOper_comptype { + var integer x1; + var integer x2; + var integer x3; + //Both uninit + @try { + x3 := x1 + x2; + setverdict(fail,"This line should not be reached"); + } @catch(e) { + setverdict(pass, "Expected DTE: ",e) + } + //Second op uninit + x1:=1; + @try { + x3 := x1 + x2; + setverdict(fail,"This line should not be reached"); + } @catch(e) { + setverdict(pass, "Expected DTE: ",e) + } +} + +//First operand is uninit +testcase intAdd_unbound2() runs on intOper_comptype { + var integer x1, x2, x3; + x2:=1; + @try { + x3 := x1 + x2; + setverdict(fail,"This line should not be reached"); + } @catch(e) { + setverdict(pass, "Expected DTE: ",e) + } +} + testcase intSubs() runs on intOper_comptype { var integer x1,x2,x3,x4,x5,x6; x1:=125; @@ -292,6 +385,20 @@ testcase intSubs() runs on intOper_comptype else {setverdict(fail);} } +//runtime, big integer +testcase intSubs_big() runs on intOper_comptype +{ + var integer x1,x2,x3, exp + x1 := 4294967296; + x2 := 4294967297; + exp := -1 + if ( x1-x2 == -1) {setverdict(pass) } else { setverdict(fail) } + x3 := x1 -x2; + if ( x3 == -1) {setverdict(pass) } else { setverdict(fail) } + x3 := x2-x1; + if ( x3 == +1) {setverdict(pass) } else { setverdict(fail) } +} + testcase intMultipl() runs on intOper_comptype { var integer x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17; x1:=12; @@ -341,6 +448,18 @@ testcase intMultipl() runs on intOper_comptype else {setverdict(fail);} } +testcase intMultipl_big() runs on intOper_comptype { + var integer x1,x2,x3, exp + x1 := 4294967296; + x2 := 4294967297; + exp := 18446744078004518912; + if ( x1*x2 == exp) {setverdict(pass) } else { setverdict(fail) } + x3 := x1*x2; + if ( x3 == exp) {setverdict(pass) } else { setverdict(fail) } + x3 := x2*x1; + if ( x3 == exp) {setverdict(pass) } else { setverdict(fail) } +} + testcase intDiv() runs on intOper_comptype { var integer x1,x2,x3,x4,x5,x6,x7,x8; x1:=-125; @@ -365,6 +484,18 @@ testcase intDiv() runs on intOper_comptype else {setverdict(fail);} } +testcase intDiv_big() runs on intOper_comptype { + var integer x1,x2,x3, exp + x1 := 4294967296; + x2 := 4294967297; + exp := 18446744078004518912; + if ( x1/x2 == 0) {setverdict(pass) } else { setverdict(fail) } + x3 := x1/x2; + if ( x3 == 0) {setverdict(pass) } else { setverdict(fail) } + x3 := x2/x1; + if ( x3 == 1) {setverdict(pass) } else { setverdict(fail) } +} + testcase intMod() runs on intOper_comptype { var integer x1,x2,x3,x4,x5,x6; x1:=-125; @@ -396,6 +527,19 @@ testcase intMod() runs on intOper_comptype else {setverdict(fail);} } +testcase intMod_big() runs on intOper_comptype { + var integer x1,x2,x3, exp + x1 := 4294967296; + x2 := 4294967297; + exp := 18446744078004518912; + if ( (x1 mod x2) == 4294967296) {setverdict(pass) } else { setverdict(fail) } + x3 := x1 mod x2; + if ( x3 == 4294967296 ) {setverdict(pass) } else { setverdict(fail) } + x3 := x2 mod x1; + if ( x3 == 1) {setverdict(pass) } else { setverdict(fail) } + //TODO: neg numbers +} + testcase intRem() runs on intOper_comptype { var integer x1,x2,x3,x4,x5,x6; x1:=-125; @@ -830,6 +974,8 @@ testcase bigIntLongLong() runs on bigIntOper_comptype if (MyConverter()) { setverdict(pass) } else { setverdict(fail) } } +//***** Subtypes ***** + type component intOperSubtypes_comptype { } type integer myi1 @@ -846,6 +992,7 @@ type integer myi11 (-1, -0, 1) type integer myi12 (myi2, myi3) type myi12 myi13 (myi2) type myi4 myi14 (0..infinity) +type integer myi15 (1..3) const myi1 c_myi1 := 1 const myi2 c_myi2 := 1 @@ -916,6 +1063,66 @@ testcase intSubtypes() runs on intOperSubtypes_comptype else { setverdict(fail) } } +type record of integer RoI; + +//runtime test template checks +testcase intSubtypes_list() runs on intOperSubtypes_comptype { + var template myi2 vt_i2 := ? + var RoI vl_goodValues := {1,2,3} + var RoI vl_badValues := { -1, 0, 4} + log("Good values:") + for( var integer i:=0;i<sizeof(vl_goodValues);i:=i+1) { + if (match ( vl_goodValues[i], vt_i2 )) { + setverdict(pass, "i:", i); + } else { + setverdict(fail, "i:", i); + } + } + log("Bad values:") + for( var integer i:=0;i<sizeof(vl_badValues);i:=i+1) { + if (match ( vl_badValues[i], vt_i2 )) { + setverdict(pass, "i:", i); + } else { + setverdict(fail, "i:", i); + } + } + +} + +//runtime test template checks +testcase intSubtypes_range() runs on intOperSubtypes_comptype { + var template myi15 vt_i2 := ? + var RoI vl_goodValues := {1,2,3} + var RoI vl_badValues := { -1, 0, 4} + log("Good values:") + for( var integer i:=0;i<sizeof(vl_goodValues);i:=i+1) { + if (match ( vl_goodValues[i], vt_i2 )) { + setverdict(pass, "i:", i); + } else { + setverdict(fail, "i:", i); + } + } + log("Bad values:") + for( var integer i:=0;i<sizeof(vl_badValues);i:=i+1) { + if (match ( vl_badValues[i], vt_i2 )) { + setverdict(pass, "i:", i); + } else { + setverdict(fail, "i:", i); + } + } + +// //Assignment for subtyped var : it is not working! +// var myi2 vl_i; +// var integer vl_i1 := 1; +// vl_i := vl_i1; +// vl_i1 := 4 +// @try { +// vl_i := vl_i1; +// setverdict(fail,"This line should not be reached, vl_i:", vl_i); +// } @catch(e) { +// setverdict(pass, "Expected DTE: ",e) +// } +} testcase intIsvalue() runs on intOper_comptype { var integer i0, i1 := 1; @@ -982,7 +1189,12 @@ testcase tc_runtimeExprEval() runs on intOper_comptype { if(isbound(vt_i)) {setverdict(pass)} else {setverdict(fail)}; if(isbound(t_i(1,2))) {setverdict(pass)} else {setverdict(fail)}; if(isbound(t_i(1,2*vl_i))) {setverdict(pass)} else {setverdict(fail)}; - //if(isbound(t_i(1,2/vl_j))) {setverdict(pass)} else {setverdict(fail)}; //DTE + @try { + if(isbound(t_i(1,2/vl_j))) {setverdict(pass)} else {setverdict(fail)}; //DTE + setverdict(fail, "This line should not be reached") + } @catch(e){ + setverdict(pass, "Expected DTE: ",e) + } } testcase tc_simple_integer_unbound() runs on intOper_comptype { @@ -992,22 +1204,22 @@ testcase tc_runtimeExprEval() runs on intOper_comptype { testcase tc_simple_integer_value() runs on intOper_comptype { var integer vl_i:=5; - if(ispresent(vl_i)) {setverdict(pass)} else {setverdict(fail)} //pass, + if(ispresent(vl_i)) {setverdict(pass)} else {setverdict(fail)} //pass, } testcase tc_simple_integer_templ_asterix() runs on intOper_comptype { var template integer vtl_i :=*; - if(ispresent( vtl_i )) {setverdict(fail)}else {setverdict(pass)}; + if(ispresent( vtl_i )) {setverdict(fail)}else {setverdict(pass)}; } testcase tc_simple_integer_templ_qm() runs on intOper_comptype { var template integer vtl_i :=?; - if(ispresent( vtl_i )) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent( vtl_i )) {setverdict(pass)}else {setverdict(fail)}; } testcase tc_simple_integer_templ_value() runs on intOper_comptype { var template integer vtl_i:=5; - if(ispresent( vtl_i )) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent( vtl_i )) {setverdict(pass)}else {setverdict(fail)}; } testcase tc_runtimeExprEval_ispresent() runs on intOper_comptype { @@ -1024,6 +1236,8 @@ control { var integer vl_1; execute(intAssign()); + execute(intAssign_big()); + execute(intAssign_unbound()); execute(intConst()); execute(intCompEq()); execute(intCompNotEq()); @@ -1032,12 +1246,23 @@ control { execute(intCompGreat()); execute(intCompGreatEq()); execute(intAdd()); + execute(intAdd_big1()) + execute(intAdd_big2()) + execute(intAdd_big3()) + execute(intAdd_unbound1()); + execute(intAdd_unbound2()); execute(intSubs()); + execute(intSubs_big()) execute(intMultipl()); + execute(intMultipl_big()) execute(intDiv()); + execute(intDiv_big()); execute(intMod()); + execute(intMod_big()); execute(intRem()); execute(intSubtypes()); + execute(intSubtypes_list()); + execute(intSubtypes_range()); /* execute(intShiftRight1()); execute(intShiftRight2()); @@ -1063,7 +1288,7 @@ control { execute(HO29687()); execute(HO29695()); - + execute(tc_simple_integer()); execute(tc_runtimeExprEval()); execute(tc_simple_integer_unbound());