/******************************************************************************
 * 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:6.3.2, Ensure that the IUT rejects assignments having mismatch between undefined and omitted elements 
 ** @verdict  pass reject
 ***************************************************/

module NegSem_060302_structured_types_013 {

    type record RecordType {
        integer  a,
        integer  b optional
    }

    type set SetType {
        integer  a,
        integer  b optional
    }

    type record length (1..2) of integer ShortIntegerList;
    type record of integer IntegerList;

    type set length (1..2) of integer ShortUnorderedIntegerList;
    type set of integer UnorderedIntegerList;


    type component GeneralComp {
    }

    testcase TC_NegSem_060302_structured_types_013() runs on GeneralComp {

        var IntegerList v_list1:={1,-};
        var ShortIntegerList v_list2;
        var RecordType v_rec1;
        var UnorderedIntegerList v_ulist1:={1,-};
        var ShortUnorderedIntegerList v_ulist2;
        var SetType v_set1;

        var integer v_matcher[2] := {1,-};
	
        var boolean v_check1;
    
        v_list2:=v_list1;
        v_rec1:=v_list2;
        v_ulist2:=v_ulist1;
        v_set1:=v_ulist2;

        v_check1 := match(v_set1,{ a:= 1, b:= -});   //mismatch between undefined and omitted elements

		setverdict(fail,"reason:", SetType:{ a:= 1, b:= -});
    }

    control{
        execute(TC_NegSem_060302_structured_types_013());
    }

}
