/****************************************************************************** * 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 ToctetstrOper {type component octetstrOper_comptype { }; const octetstring ToctetstrOper_const1:='AA11'O; testcase octetstrAssign() runs on octetstrOper_comptype { var octetstring x1:='0BF2'O; var octetstring x2,x3,x4; x4:='AA'O; x2:='AB54'O; x3:=''O; x4:='AABB'O; if (x1=='0BF2'O) {setverdict(pass);} //at declaration else {setverdict(fail);} if (x2=='AB54'O) {setverdict(pass);} //later else {setverdict(fail);} if (x3==''O) {setverdict(pass);} //empty string else {setverdict(fail);} if (x4=='AABB'O) {setverdict(pass);} //with different size else {setverdict(fail);} } testcase octetstrAssignElem() runs on octetstrOper_comptype { var octetstring x1,x2,x3,x4,x5,x6,x7; x1:='AAAAAA'O; x4:='777777'O; x2:='BBBBBB'O; x5:='AABBCC'O; x6:='AABBCC'O; x3:='66'O; x3:=x5[1]; x1[1]:='0C'O; x4[1]:=x2[2]; x7:='66'O; x5[0]:=x7; x6[3]:='DD'O; if (x6[0]=='AA'O) {setverdict(pass);} //accessing of an element else {setverdict(fail);} if (x3=='BB'O) {setverdict(pass);} //change string to element else {setverdict(fail);} if (x1=='AA0CAA'O) {setverdict(pass);} //change element to value else {setverdict(fail);} if (x4=='77BB77'O) {setverdict(pass);} //change element to element else {setverdict(fail);} if (x5=='66BBCC'O) {setverdict(pass);} //change element to string else {setverdict(fail);} if (x6=='AABBCCDD'O) {setverdict(pass);} //adding element else {setverdict(fail);} } testcase octetstrLengthof() runs on octetstrOper_comptype { var octetstring x1:='AABB'O; var octetstring x2,x3,x4,x5; x2:='AABB'O; x4:='AA'O; x5:='AABB'O; x3:=''O; x4:='AABB'O; x5[2]:='CC'O; if (lengthof(x1)==2) {setverdict(pass);} //at declaration else {setverdict(fail);} if (lengthof(x2)==2) {setverdict(pass);} //later else {setverdict(fail);} if (lengthof(x3)==0) {setverdict(pass);} //empty string else {setverdict(fail);} if (lengthof(x4)==2) {setverdict(pass);} //change of size else {setverdict(fail);} if (lengthof(x5)==3) {setverdict(pass);} //add element else {setverdict(fail);} } testcase octetstrConst() runs on octetstrOper_comptype { const octetstring ToctetstrOper_const3:='DD22'O; if (ToctetstrOper_const1=='AA11'O) {setverdict(pass);} //definition part else {setverdict(fail);} if (ToctetstrOper_const3=='DD22'O) {setverdict(pass);} //testcase else {setverdict(fail);} } testcase octetstrComp_str_str() runs on octetstrOper_comptype {var octetstring x1,x2,x3; x1:='A1B2'O; x2:='A1B2'O; x3:='A1B2C3'O; if (x1==x2) {setverdict(pass);} //equality, equals else {setverdict(fail);} if (not(x3==x2)) {setverdict(pass);} //equality, not equals else {setverdict(fail);} if (x1!=x3) {setverdict(pass);} //non-equality, not equals else {setverdict(fail);} if (not(x1!=x2)) {setverdict(pass);} //non-equality, equals else {setverdict(fail);} } testcase octetstrComp_el_str() runs on octetstrOper_comptype {var octetstring x1,x2,x3; x1:='A1B2'O; x2:='A1'O; x3:='B2'O; if (x1[1]==x3) {setverdict(pass);} //equality, equals else {setverdict(fail);} if (not(x1[0]==x3)) {setverdict(pass);} //equality, not equals else {setverdict(fail);} if (x1[0]!=x3) {setverdict(pass);} //non-equality, not equals else {setverdict(fail);} if (not(x1[1]!=x3)) {setverdict(pass);} //non-equality, equals else {setverdict(fail);} } testcase octetstrComp_str_el() runs on octetstrOper_comptype {var octetstring x1,x2; x1:='A1B2'O; x2:='A1'O; if (x2==x1[0]) {setverdict(pass);} //equality, equals else {setverdict(fail);} if (not(x2==x1[1])) {setverdict(pass);} //equality, not equals else {setverdict(fail);} if (x2!=x1[1]) {setverdict(pass);} //non-equality, not equals else {setverdict(fail);} if (not(x2!=x1[0])) {setverdict(pass);} //non-equality, equals else {setverdict(fail);} } testcase octetstrComp_el_el() runs on octetstrOper_comptype {var octetstring x1,x2; x1:='A1B2'O; x2:='A1B2'O; if (x1[1]==x2[1]) {setverdict(pass);} //equality, equals else {setverdict(fail);} if (not(x1[0]==x2[1])) {setverdict(pass);} //equality, not equals else {setverdict(fail);} if (x1[1]!=x2[0]) {setverdict(pass);} //non-equality, not equals else {setverdict(fail);} if (not(x1[1]!=x2[1])) {setverdict(pass);} //non-equality, equals else {setverdict(fail);} } testcase octetstrConcat() runs on octetstrOper_comptype {var octetstring x1,x2,x3,x4,x5,x6; x1:='A1B2'O; x2:='C3D4'O; x3:= x1 & x2; x4:=x1&x2[1]; x5:=x1[1]&x2; x6:=x1[0]&x2[1]; if ((x3=='A1B2C3D4'O)and(lengthof(x3)==4)) {setverdict(pass);} //string&string else {setverdict(fail);} if ((x4=='A1B2D4'O)and(lengthof(x4)==3)) {setverdict(pass);} //string&element else {setverdict(fail);} if ((x5=='B2C3D4'O)and(lengthof(x5)==3)) {setverdict(pass);} //element&string else {setverdict(fail);} if ((x6=='A1D4'O)and(lengthof(x6)==2)) {setverdict(pass);} //element&element else {setverdict(fail);} } testcase octetstrNot_str() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='0123456789ABCDEF'O; x2:=not4b(x1); if (x2=='FEDCBA9876543210'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrNot_el() runs on octetstrOper_comptype { var octetstring x1,x2,x3; x1:='A1B2C3'O; x2:=not4b(x1[1]); x3:=not4b(x1[2]); if ((x2=='4D'O)and(x3=='3C'O)) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrAnd_str_str() runs on octetstrOper_comptype { var octetstring x1,x2,x3; x1:='8DE9A3'O; x2:='7352B6'O; x3:=x1 and4b x2; if (x3=='0140A2'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrAnd_el_str() runs on octetstrOper_comptype { var octetstring x1,x2,x3,x4; x1:='A3A3'O; x2:='B6'O; x3:=x1[0] and4b 'B6'O; x4:=x1[0] and4b x2; if (x3=='A2'O) {setverdict(pass);} //element_value else {setverdict(fail);} if (x4=='A2'O) {setverdict(pass);} //element_string else {setverdict(fail);} } testcase octetstrAnd_str_el() runs on octetstrOper_comptype { var octetstring x1,x2,x3,x4; x1:='A3A3'O; x2:='B6'O; x3:='B6'O and4b x1[0]; x4:=x2 and4b x1[1]; if (x3=='A2'O) {setverdict(pass);} //value_element else {setverdict(fail);} if (x4=='A2'O) {setverdict(pass);} //string_element else {setverdict(fail);} } testcase octetstrAnd_el_el() runs on octetstrOper_comptype { var octetstring x1,x2,x3; x1:='A3A3'O; x2:='B6B6'O; x3:=x2[0] and4b x1[0]; if (x3=='A2'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrOr_str_str() runs on octetstrOper_comptype { var octetstring x1,x2,x3; x1:='8DE9A3'O; x2:='7352B6'O; x3:=x1 or4b x2; if (x3=='FFFBB7'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrOr_el_str() runs on octetstrOper_comptype { var octetstring x1,x2,x3,x4; x1:='A3A3'O; x2:='B6'O; x3:=x1[0] or4b 'B6'O; x4:=x1[1] or4b x2; if (x3=='B7'O) {setverdict(pass);} //element_value else {setverdict(fail);} if (x4=='B7'O) {setverdict(pass);} //element_string else {setverdict(fail);} } testcase octetstrOr_str_el() runs on octetstrOper_comptype { var octetstring x1,x2,x3,x4; x1:='A3A3'O; x2:='B6'O; x3:='B6'O or4b x1[0]; x4:=x2 or4b x1[1]; if (x3=='B7'O) {setverdict(pass);} //value_element else {setverdict(fail);} if (x4=='B7'O) {setverdict(pass);} //string_element else {setverdict(fail);} } testcase octetstrOr_el_el() runs on octetstrOper_comptype { var octetstring x1,x2,x3; x1:='3333'O; x2:='B6B6'O; x3:=x2[0] or4b x1[1]; if ((x3=='B7'O)) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrXor_str_str() runs on octetstrOper_comptype { var octetstring x1,x2,x3; x1:='ACDE9833'O; x2:='B8352765'O; x3:=x1 xor4b x2; log(x3); if (x3=='14EBBF56'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrXor_el_str() runs on octetstrOper_comptype { var octetstring x1,x2,x3,x4; x1:='A3A3'O; x2:='B6'O; x3:=x1[0] xor4b 'B6'O; x4:=x1[1] xor4b x2; if (x3=='15'O) {setverdict(pass);} //element_value else {setverdict(fail);} if (x4=='15'O) {setverdict(pass);} //element_string else {setverdict(fail);} } testcase octetstrXor_str_el() runs on octetstrOper_comptype { var octetstring x1,x2,x3,x4; x1:='C3C3'O; x2:='86'O; x3:='86'O xor4b x1[0]; x4:=x2 xor4b x1[1]; if (x3=='45'O) {setverdict(pass);} //value_element else {setverdict(fail);} if (x4=='45'O) {setverdict(pass);} //string_element else {setverdict(fail);} } testcase octetstrXor_el_el() runs on octetstrOper_comptype { var octetstring x1,x2,x3; x1:='D3D3'O; x2:='3636'O; x3:=x2[0] xor4b x1[1]; if ((x3=='E5'O)) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrShiftRight1() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 >> 1; if (x2=='00ABCD'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrShiftRight2() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 >> 2; if (x2=='0000AB'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrShiftRightSum() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 >> (1+1); if (x2=='0000AB'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrShiftRightEmpty() runs on octetstrOper_comptype { var octetstring x1,x2; x1:=''O; x2:=x1 >> (1); if (x2==''O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrShiftLeft1() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 << 1; if (x2=='CDEF00'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrShiftLeft2() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 << 2; if (x2=='EF0000'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrShiftLeftSum() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 << (1+1); if (x2=='EF0000'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrShiftLeftEmpty() runs on octetstrOper_comptype { var octetstring x1,x2; x1:=''O; x2:=x1 << (1); if (x2==''O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrRotateRight1() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 @> 1; if (x2=='EFABCD'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrRotateRight2() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 @> 2; if (x2=='CDEFAB'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrRotateRightSum() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 @> (1+1); if (x2=='CDEFAB'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrRotateRightEmpty() runs on octetstrOper_comptype { var octetstring x1,x2; x1:=''O; x2:=x1 @> (1); if (x2==''O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrRotateLeft1() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 <@ 1; if (x2=='CDEFAB'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrRotateLeft2() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 <@ 2; if (x2=='EFABCD'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrRotateLeftSum() runs on octetstrOper_comptype { var octetstring x1,x2; x1:='ABCDEF'O; x2:=x1 <@ (1+1); if (x2=='EFABCD'O) {setverdict(pass);} else {setverdict(fail);} } testcase octetstrRotateLeftEmpty() runs on octetstrOper_comptype { var octetstring x1,x2; x1:=''O; x2:=x1 <@ (1); if (x2==''O) {setverdict(pass);} else {setverdict(fail);} } const integer c_myval1 := 16 type octetstring myostr1 type octetstring myostr2 length(1) type octetstring myostr3 length(0..1) type octetstring myostr4 ('00'O, '01'O, '10'O, '11'O) length(1) // Extending restrictions shouldn't be allowed. type myostr4 myostr5 (int2oct(c_myval1, 1)) length(1) type octetstring myostr6 length(0..infinity) type octetstring myostr7 (''O, '00'O, '01'O) type octetstring myostr8 (myostr3, myostr4) const myostr8 c_myostr1 := '00'O template myostr8 t_myostr1 := '00'O template myostr6 t_myostr2 := '0011'O length(2) template myostr4 t_myostr3 := t_myostr1 length(1) function f_ostr1() return myostr6 { var myostr3 v_myostr1 := '00'O return v_myostr1 & '11'O } testcase octetstrSubtypes() runs on octetstrOper_comptype { var template myostr2 vt_myostr1 := '00'O // Length only. var template myostr3 vt_myostr2 := ''O // Length with range. var template myostr4 vt_myostr3 := vt_myostr1 // Value list with length. var template myostr7 vt_myostr4 := vt_myostr2 // Value list only. var myostr2 v_myostr1 := '00'O var myostr3 v_myostr2 := ''O var myostr4 v_myostr3 := v_myostr1 var myostr7 v_myostr4 := v_myostr2 if (valueof(vt_myostr1) == v_myostr1 and v_myostr2 == valueof(vt_myostr2)) { setverdict(pass) } else { setverdict(fail) } if (valueof(vt_myostr3) == v_myostr3 and v_myostr4 == valueof(vt_myostr4)) { setverdict(pass) } else { setverdict(fail) } if (f_ostr1() == '0011'O and '00'O & '11'O == f_ostr1()) { setverdict(pass) } else { setverdict(fail) } } testcase octetstrIsvalue() runs on octetstrOper_comptype{ var octetstring ostr0; var octetstring ostr1 := '1234'O; var template octetstring tostr; if ( isvalue(ostr0) ) { setverdict(fail); } else { setverdict(pass); }; if ( isvalue(ostr1) ) { setverdict(pass); } else { setverdict(fail); }; if ( isvalue(tostr) ) { setverdict(fail); } else { setverdict(pass); }; } testcase octetstrIsbound() runs on octetstrOper_comptype{ var octetstring ostr0; var octetstring ostr1 := '1234'O; var template octetstring tostr; if ( isbound(ostr0) ) { setverdict(fail); } else { setverdict(pass); }; if ( isbound(ostr0[0]) ) { setverdict(fail); } else { setverdict(pass); }; if ( isbound(ostr1) ) { setverdict(pass); } else { setverdict(fail); }; if ( isbound(tostr) ) { setverdict(fail); } else { setverdict(pass); }; } testcase tc_simple_octetstring_unbound() runs on octetstrOper_comptype { var octetstring vl_o1; if(ispresent(vl_o1)){setverdict(fail)} else {setverdict(pass)} //fail var octetstring vl_o2:='ABBA'O; if(ispresent(vl_o2)) {setverdict(pass)} else {setverdict(fail)} //not logged var octetstring vl_o3; if(isbound(vl_o3)){setverdict(fail)} else {setverdict(pass)} vl_o3:='ABBA'O; if(isbound(vl_o3)) {setverdict(pass)} else {setverdict(fail)} } control { const octetstring cl_1:='AA11'O; var octetstring vl_1; execute(octetstrAssign()); execute(octetstrAssignElem()); execute(octetstrLengthof()); execute(octetstrConst()); execute(octetstrComp_str_str()); execute(octetstrComp_el_str()); execute(octetstrComp_str_el()); execute(octetstrComp_el_el()); execute(octetstrConcat()); execute(octetstrNot_str()); execute(octetstrNot_el()); execute(octetstrAnd_str_str()); execute(octetstrAnd_el_str()); execute(octetstrAnd_str_el()); execute(octetstrAnd_el_el()); execute(octetstrOr_str_str()); execute(octetstrOr_el_str()); execute(octetstrOr_str_el()); execute(octetstrOr_el_el()); execute(octetstrXor_str_str()); execute(octetstrXor_el_str()); execute(octetstrXor_str_el()); execute(octetstrXor_el_el()); execute(octetstrShiftRight1()); execute(octetstrShiftRight2()); execute(octetstrShiftRightSum()); execute(octetstrShiftRightEmpty()); execute(octetstrShiftLeft1()); execute(octetstrShiftLeft2()); execute(octetstrShiftLeftSum()); execute(octetstrShiftLeftEmpty()); execute(octetstrRotateRight1()); execute(octetstrRotateRight2()); execute(octetstrRotateRightSum()); execute(octetstrRotateRightEmpty()); execute(octetstrRotateLeft1()); execute(octetstrRotateLeft2()); execute(octetstrRotateLeftSum()); execute(octetstrRotateLeftEmpty()); execute(octetstrSubtypes()); execute(octetstrIsvalue()); execute(octetstrIsbound()); execute(tc_simple_octetstring_unbound()); } }