diff --git a/regression_test/boolOper/TboolOper.ttcn b/regression_test/boolOper/TboolOper.ttcn index 0407b7b31cf74f3a90304ff6ffe06878c09b3cf6..902c170538673129554c32d38b4b4ec0f712fdc6 100644 --- a/regression_test/boolOper/TboolOper.ttcn +++ b/regression_test/boolOper/TboolOper.ttcn @@ -1,21 +1,24 @@ /****************************************************************************** - * Copyright (c) 2000-2019 Ericsson Telecom AB - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html - * - * Contributors: - * Balasko, Jeno - * Baranyi, Botond - * Kovacs, Ferenc - * Raduly, Csaba - * Szabados, Kristof - * Szabo, Janos Zoltan – initial implementation - * - ******************************************************************************/ +* Copyright (c) 2000-2019 Ericsson Telecom AB +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +* +* Contributors: +* Balasko, Jeno +* Baranyi, Botond +* Kovacs, Ferenc +* Raduly, Csaba +* Szabados, Kristof +* Szabo, Janos Zoltan – initial implementation +* +******************************************************************************/ module TboolOper -{const boolean TboolOper_const1:=true; +{ + +modulepar boolean tsp_uninit; +const boolean TboolOper_const1:=true; type component boolOper_comptype { }; testcase boolAssign() runs on boolOper_comptype @@ -25,23 +28,23 @@ testcase boolAssign() runs on boolOper_comptype x2:=false; x3:=x2; if (x1) {setverdict(pass);} //at declaration, value - else {setverdict(fail);} + else {setverdict(fail);} if (x4) {setverdict(pass);} //at declaration, variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x2)) {setverdict(pass);} //later, value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x3)) {setverdict(pass);} //later, variable - else {setverdict(fail);} + else {setverdict(fail);} } testcase boolConst() runs on boolOper_comptype { -const boolean TboolOper_const3:=false; -if (TboolOper_const1) {setverdict(pass);} //definition part - else {setverdict(fail);} -//if (TboolOper_const2==2) {setverdict(pass);} //control part -// else {setverdict(fail);} -if (not(TboolOper_const3)) {setverdict(pass);} //testcase - else {setverdict(fail);} + const boolean TboolOper_const3:=false; + if (TboolOper_const1) {setverdict(pass);} //definition part + else {setverdict(fail);} + //if (TboolOper_const2==2) {setverdict(pass);} //control part + // else {setverdict(fail);} + if (not(TboolOper_const3)) {setverdict(pass);} //testcase + else {setverdict(fail);} } testcase boolCompEq() runs on boolOper_comptype @@ -50,21 +53,21 @@ testcase boolCompEq() runs on boolOper_comptype x2:=true; x3:=false; if (x1==x2) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x3==x2)) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x1==true) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x1==false)) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (true==x1) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(false==x1)) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (true==true) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(true==false)) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} } testcase boolCompNotEq() runs on boolOper_comptype @@ -73,21 +76,21 @@ testcase boolCompNotEq() runs on boolOper_comptype x2:=false; x3:=true; if (x1!=x2) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x1!=x3)) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x1!=false) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x1!=true)) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (true!=x2) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(false!=x2)) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (true!=false) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(false!=false)) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} } testcase boolNot() runs on boolOper_comptype @@ -99,13 +102,13 @@ testcase boolNot() runs on boolOper_comptype x5:=not(true); x6:=not(false); if (not(x3)) {setverdict(pass);} //variable - else {setverdict(fail);} + else {setverdict(fail);} if (x4) {setverdict(pass);} //variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x5)) {setverdict(pass);} //value - else {setverdict(fail);} + else {setverdict(fail);} if (x6) {setverdict(pass);} //value - else {setverdict(fail);} + else {setverdict(fail);} } testcase boolAnd() runs on boolOper_comptype @@ -129,37 +132,37 @@ testcase boolAnd() runs on boolOper_comptype x17:=false and true; x18:=false and false; if (x3) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x4)) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x5)) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x6)) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x7) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x8)) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x9)) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x10)) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (x11) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x12)) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x13)) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x14)) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x15) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x16)) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x17)) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x18)) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} } testcase boolOr() runs on boolOper_comptype @@ -183,37 +186,37 @@ testcase boolOr() runs on boolOper_comptype x17:=false or true; x18:=false or false; if (x3) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x4) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x5) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x6)) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x7) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (x8) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (x9) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x10)) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (x11) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x12) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x13) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x14)) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x15) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (x16) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (x17) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x18)) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} } testcase boolXor() runs on boolOper_comptype @@ -237,44 +240,208 @@ testcase boolXor() runs on boolOper_comptype x17:=false xor true; x18:=false xor false; if (not(x3)) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x4) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x5) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x6)) {setverdict(pass);} //variable_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x7)) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (x8) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (x9) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x10)) {setverdict(pass);} //variable_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x11)) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x12) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (x13) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x14)) {setverdict(pass);} //value_variable - else {setverdict(fail);} + else {setverdict(fail);} if (not(x15)) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (x16) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (x17) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} if (not(x18)) {setverdict(pass);} //value_value - else {setverdict(fail);} + else {setverdict(fail);} +} + +testcase boolUninitXor() runs on boolOper_comptype { + var boolean x1,x2,x3; + x1:=true; + @try { + x3:=x1 xor x2; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:=x2 xor x1; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:= true xor x2; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:=x2 xor true; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } +} + +testcase boolUninitOr() runs on boolOper_comptype { + var boolean x1,x2,x3; + x1:=false; + @try { + x3:=x1 or x2; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:=x2 or x1; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:= false or x2; + if(x3 != true) {setverdict(fail, "true or DTE expected")} + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:=x2 or true; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } +} + +testcase boolUninitAnd() runs on boolOper_comptype { + var boolean x1,x2,x3; + x1:=true; + @try { + x3:=x1 and x2; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:=x2 and x1; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:= true and x2; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x3:=x2 and true; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } +} + +testcase boolUninitNot() runs on boolOper_comptype { + var boolean x1,x2; + @try { + x2:= not x1; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } +} + +testcase boolUninitTemplate() runs on boolOper_comptype { + var template boolean x2; + var boolean x1; + @try { + x2:= x1; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x2:= not x1; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + + @try { + x1:= valueof(x2); + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } +} + +testcase boolUninitModulepar() runs on boolOper_comptype { + var template boolean x2; + var boolean x1 := true; + @try { + x2:= tsp_uninit; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + @try { + x2:= not tsp_uninit; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } + + @try { + x2:= tsp_uninit or x1; + setverdict(fail, "This line should not reached. DTE expected") + } @catch(e) { + //check e + setverdict(pass); + } } type boolean myb1 type boolean myb2 (true) type boolean myb3 (false) -// FATAL_ERROR() with R8B: `type boolean myb3 (true, valueof(t_myb1))'. -type boolean myb4 (c_myb1, not c_myb1 and c_myb1) +// FATAL_ERROR() with R8B: `type boolean myb3 (true, valueof(t_myb1));' +type boolean myb4 (c_myb1, not c_myb1 and c_myb1); type myb3 myb5 type boolean myb6 (myb2, myb3) @@ -326,7 +493,7 @@ type record TestRecord { testcase boolShortCircuit() runs on boolOper_comptype { // create a union variable, make sure the boolean field is not chosen var TestUnion myUnion := { t := 1 }; - + // reference the boolean field in the 2nd part of a condition using 'and' or 'or' // only the first part of the condition should be evaluated, since // evaluating the 2nd part would produce a DTE (because the field isn't chosen) @@ -347,7 +514,7 @@ testcase boolShortCircuit() runs on boolOper_comptype { // create a record variable, make sure the boolean field is omitted var TestRecord myRec := { t := 1, b := omit }; - + // reference the boolean field in the 2nd part of a condition, same as with the union field // (referencing the boolean field would cause a DTE again, because it is omitted) if (ispresent(myRec.b) and myRec.b) { @@ -394,6 +561,12 @@ control { execute(boolIsvalue()); execute(boolShortCircuit()); execute(boolCompEqOmit()); + execute(boolUninitXor()); + execute(boolUninitOr()); + execute(boolUninitAnd()); + execute(boolUninitNot()); + execute(boolUninitTemplate()); + execute(boolUninitModulepar()); } }