/****************************************************************************** * 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 TtemplateEnum { type component templateEnum_mycomp {}; type enumerated templateEnum_myenum {xx1,xx2,xx3,xx4,xx5,xx6,xx7}; type record templateEnum_rec { templateEnum_myenum x1, templateEnum_myenum x2, templateEnum_myenum x3 optional }; template templateEnum_rec templateEnum_tSpec :={ //specific values x1:=xx1, x2:=xx2, x3:=xx3 }; template templateEnum_rec templateEnum_tList :={ //specific value and value list x1:=xx1, x2:=(xx2,xx3,xx6), x3:=xx3 }; template templateEnum_rec templateEnum_tComp :={ //specific value and compl. list x1:=xx1, x2:=complement (xx2,xx3,xx6), x3:=xx3 }; template templateEnum_rec templateEnum_tOmit :={ //omitting values x1:=xx1, x2:=xx2, x3:=omit } ; template templateEnum_rec templateEnum_tAny :={ //specific and any value x1:=xx1, x2:=xx2, x3:=? } ; template templateEnum_rec templateEnum_tAnyorNone :={ //specific and AnyorNone value x1:=xx1, x2:=xx2, x3:=* }; template templateEnum_rec templateEnum_tIfpresent :={ //specific value and ifpresent x1:=xx1, x2:=xx2, x3:=xx3 ifpresent }; testcase templateEnumSpec() runs on templateEnum_mycomp { var templateEnum_rec x1,x2; //specific value x1:={ x1:=xx1, x2:=xx2, x3:=xx3 }; x2:={ x1:=xx2, x2:=xx2, x3:=xx3 }; //match if (match(x1,templateEnum_tSpec)) {setverdict(pass);} else {setverdict(fail);} //no match if (not(match(x2,templateEnum_tSpec))) {setverdict(pass);} else {setverdict(fail);} } testcase templateEnumList() runs on templateEnum_mycomp { var templateEnum_rec x1,x2,x3; //value list x1:={ x1:=xx1, x2:=xx6, x3:=xx3 }; x2:={ x1:=xx1, x2:=xx7, x3:=xx3 }; x3:={ x1:=xx2, x2:=xx6, x3:=xx3 }; //match if (match(x1,templateEnum_tList)) {setverdict(pass);} else {setverdict(fail);} //no match: out of list if (not(match(x2,templateEnum_tList))) {setverdict(pass);} else {setverdict(fail);} //no match: other field if (not(match(x3,templateEnum_tList))) {setverdict(pass);} else {setverdict(fail);} } testcase templateEnumComp() runs on templateEnum_mycomp { var templateEnum_rec x1,x2,x3; //complemented list x1:={ x1:=xx1, x2:=xx7, x3:=xx3 }; x2:={ x1:=xx1, x2:=xx6, x3:=xx3 }; x3:={ x1:=xx2, x2:=xx7, x3:=xx3 }; //match if (match(x1,templateEnum_tComp)) {setverdict(pass);} else {setverdict(fail);} //no match: in the list if (not(match(x2,templateEnum_tComp))) {setverdict(pass);} else {setverdict(fail);} //no match: other field if (not(match(x3,templateEnum_tComp))) {setverdict(pass);} else {setverdict(fail);} } testcase templateEnumOmit() runs on templateEnum_mycomp { var templateEnum_rec x1,x2,x3; //omitting value x1:={ x1:=xx1, x2:=xx2, x3:=omit }; x2:={ x1:=xx1, x2:=xx2, x3:=xx3 }; x3:={ x1:=xx2, x2:=xx2, x3:=omit }; //match if (match(x1,templateEnum_tOmit)) {setverdict(pass);} else {setverdict(fail);} //no match: not omitted if (not(match(x2,templateEnum_tOmit))) {setverdict(pass);} else {setverdict(fail);} //no match: other field if (not(match(x3,templateEnum_tOmit))) {setverdict(pass);} else {setverdict(fail);} } testcase templateEnumAny() runs on templateEnum_mycomp { var templateEnum_rec x1,x2,x3; //any value x1:={ x1:=xx1, x2:=xx2, x3:=xx3 }; x2:={ x1:=xx2, x2:=xx2, x3:=xx3 }; x3:={ x1:=xx1, x2:=xx2, x3:=omit }; //match if (match(x1,templateEnum_tAny)) {setverdict(pass);} else {setverdict(fail);} //no match: field omitted if (not(match(x2,templateEnum_tAny))) {setverdict(pass);} else {setverdict(fail);} //no match: other field if (not(match(x3,templateEnum_tAny))) {setverdict(pass);} else {setverdict(fail);} } testcase templateEnumAnyorNone() runs on templateEnum_mycomp { var templateEnum_rec x1,x2,x3; //AnyorNone value x1:={ x1:=xx1, x2:=xx2, x3:=omit }; x2:={ x1:=xx1, x2:=xx2, x3:=xx3 }; x3:={ x1:=xx2, x2:=xx2, x3:=omit }; //match: omitted if (match(x1,templateEnum_tAnyorNone)) {setverdict(pass);} else {setverdict(fail);} //match: value if (match(x2,templateEnum_tAnyorNone)) {setverdict(pass);} else {setverdict(fail);} //no match: other field if (not(match(x3,templateEnum_tAnyorNone))) {setverdict(pass);} else {setverdict(fail);} } testcase templateEnumIfpresent() runs on templateEnum_mycomp { var templateEnum_rec x1,x2,x3,x4; //ifpresent x1:={ x1:=xx1, x2:=xx2, x3:=xx3 }; x2:={ x1:=xx1, x2:=xx2, x3:=omit }; x3:={ x1:=xx2, x2:=xx2, x3:=omit }; x4:={ x1:=xx1, x2:=xx2, x3:=xx4 }; //match: present and match if (match(x1,templateEnum_tIfpresent)) {setverdict(pass);} else {setverdict(fail);} //match: not present if (match(x2,templateEnum_tIfpresent)) {setverdict(pass);} else {setverdict(fail);} //no match: present and not match if (not(match(x3,templateEnum_tIfpresent))) {setverdict(pass);} else {setverdict(fail);} //no match: other field if (not(match(x4,templateEnum_tIfpresent))) {setverdict(pass);} else {setverdict(fail);} } control { execute(templateEnumSpec()); execute(templateEnumList()); execute(templateEnumComp()); execute(templateEnumOmit()); execute(templateEnumAny()); execute(templateEnumAnyorNone()); execute(templateEnumIfpresent()); } }