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

//Restriction e)
/*The individual members of the SubSet'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, individual members shall not resolve to AnyValueOrNone and individual fields of
the template in the all from clause shall not resolve to AnyElementsOrNone or permutation.*/

module NegSem_B010207_subset_008 {

  	type set of integer SoI;
    type record of integer RoI;

    type port loopbackPort message {
	  inout SoI
	}


type component GeneralComp {
	  port loopbackPort messagePort
}

testcase TC_NegSem_B010207_subset_008() runs on GeneralComp {

    var SoI v_testMessage;

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

 template SoI mw_matchingTemplate:= subset(all from Template);    //error: forbidden matching mechanism.

 v_testMessage:={2};

 messagePort.send(v_testMessage);

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

control{
    execute(TC_NegSem_B010207_subset_008());
}

}
