/***************************************************
 ** @author   STF 487
 ** @version  0.0.1
 ** @purpose  1:B.1.2.6, Ensure that the IUT correctly handles template matching of superset definition
 ** @verdict  pass reject
 ***************************************************/

//Restriction e)
/*The individual members of the SuperSet's argument and the elements of the template in the all from clause
shall not be the matching mechanisms omit, SuperSet, SubSet and the matching attributes (length restriction
and ifpresent). In addition, the individual members shall not resolve to AnyValueOrNone and individual
elements of the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/

module NegSem_B010206_superset_009 {
    type record of integer RoI;
  	type set of integer SoI;

    type port loopbackPort message {
	  inout SoI
	}


type component GeneralComp {
	  port loopbackPort messagePort
}

testcase TC_NegSem_B010206_superset_009() runs on GeneralComp {

    var SoI v_testMessage;

 template RoI Template:= {permutation(1,2,3)};

 template SoI mw_matchingTemplate:= superset(all from Template);    //error

 v_testMessage:={2};

 messagePort.send(v_testMessage);

    alt {
     [] messagePort.receive(mw_matchingTemplate) {
        setverdict(pass);
     }
     [] messagePort.receive {
        setverdict(fail);
     }
    }
}

control{
    execute(TC_NegSem_B010206_superset_009());
}

}
