/******************************************************************************
 * Copyright (c) ETSI 2017.
 *
 * This file is subject to copyrights owned by ETSI. Non-exclusive permission
 * is hereby granted, free of charge, to copy, reproduce and amend this file
 * under the following conditions: It is provided "as is", without warranty of any
 * kind, expressed or implied.
 * 
 * ETSI shall never be liable for any claim, damages, or other liability arising
 * from its use or inability of use.This permission does not apply to any documentation
 * associated with this file for which ETSI keeps all rights reserved. The present
 * copyright notice shall be included in all copies of whole or part of this
 * file and shall not imply any sub-license right.
 *
 * Modified by: Adrien Kirjak
 *
 ** @version  0.0.1
 ** @purpose  1:B.1.2.7, Ensure that the IUT correctly handles template matching of subset definition
 ** @verdict  pass accept, ttcn3verdict:pass
 ***************************************************/

//Restriction c) The member type of the set of type associated with the SubSet and the member type of the template in the all from clause shall be compatible.

module Sem_B010207_subset_004 { 

  	type set of integer SoI;

    type port loopbackPort message {
	  	 inout SoI
	} with {extension "internal"}
	
	type component GeneralComp {	    	    
	  	port loopbackPort messagePort
	}	

	testcase TC_Sem_B010207_subset_004() runs on GeneralComp {

    	var SoI v_testMessage;

 		template SoI Template:= {1,2};

 		template SoI mw_matchingTemplate:= subset(all from Template);    //subset(1,2);

 		v_testMessage:={2};
 
		connect(self:messagePort, self:messagePort);
 		messagePort.send(v_testMessage);

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

	control{
		execute(TC_Sem_B010207_subset_004());
	}

}
 
