/***************************************************************** ** @author STF 433 ** @version 0.0.1 ** @purpose 1:15.6.2, ? shall be returned for mandatory subfields and * shall be returned for optional subfields. ** @verdict pass accept, ttcn3verdict:pass *****************************************************************/ //on hold till resolution of CR6711 module Sem_150602_ReferencingRecordAndSetFields_004 { type component GeneralComp { } type record MyRecordTwo { integer g1, MyRecordTwo g2 optional } type record MyRecordOne { integer f1 optional, MyRecordTwo f2 optional } testcase TC_Sem_150602_ReferencingRecordAndSetFields_004() runs on GeneralComp { var template MyRecordOne m_R1 := { f1 := 0, f2 := ? } // m_R2.g1 is mandatory, therefore it shall be ? // m_R2.g2 is optional, therefore it shall be * var template MyRecordTwo m_R2 := m_R1.f2; var template(value) MyRecordTwo m_value := { g1 := 5, g2 := omit } // match against {?, *} - use dotted notation to cover other expansion thread var boolean v_matchRes := match(m_value, MyRecordTwo:{m_R1.f2.g1, m_R1.f2.g2}); if (v_matchRes) { setverdict(pass); } else { setverdict(fail, "match against {?, *} - use dotted notation to cover other expansion thread"); } } control{ execute(TC_Sem_150602_ReferencingRecordAndSetFields_004()); } }