Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*****************************************************************
** @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());
}
}