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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
RoomModel OperationInheritanceTest {
import room.basic.types.* from "Types.room"
import room.basic.test.* from "Tests.room"
async ActorClass OperationInheritanceTest extends BaseActor {
@TestInstance
Structure {
Attribute testDataClass: SubDataClass
}
Behavior {
ctor {
"caseId = etUnit_openAll(\"log/testlog\", \"OperationInheritanceTest\", \"org.eclipse.etrice.generator.common.tests.OperationInheritanceTest\", \"OperationInheritanceTest_case\");"
"ctorRefine = 2;"
}
dtor {
"// sub dtor"
"etUnit_closeAll(caseId);"
}
override Operation overriddenOperation() {
"valueSub = 2;"
}
StateMachine {
Transition init: initial -> finish {
action {
"baseOperation();"
"overriddenOperation();"
"// c: not supported yet"
"//testDataClass.baseOperation();"
"//testDataClass.overriddenOperation(caseId);"
""
"// refine ctor, override operations"
"// -- ActorClass"
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, ctorBase);"
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, ctorRefine);"
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, valueBase);"
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, valueSub);"
""
"// -- DataClass"
// c: not supported yet
"//EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, testDataClass.ctorBase);"
"//EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, testDataClass.ctorRefine);"
"//EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, testDataClass.valueBase);"
"//EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, testDataClass.valueSub);"
"//EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 0, testDataClass.doNotCallOverride);"
"etUnit_testFinished(caseId);"
}
}
State finish
}
}
}
abstract async ActorClass BaseActor {
Structure {
Attribute caseId : int32
Attribute ctorBase: int32 = "0"
Attribute ctorRefine: int32 = "0"
Attribute valueBase: int32 = "0"
Attribute valueSub: int32 = "0"
}
Behavior {
ctor {
"ctorBase = 1;"
"ctorRefine = 1;"
}
dtor {
"// base dtor"
}
Operation overriddenOperation() {
"EXPECT_FALSE(caseId, \"<|MODEL_LOCATION|>\", true);"
}
Operation baseOperation() {
"valueBase = 1;"
}
}
}
DataClass BaseDataClass {
Operation overriddenOperation() {
"doNotCallOverride = 1;"
}
Operation baseOperation() {
"valueBase = 1;"
}
ctor {
"ctorBase = 1;"
"ctorRefine = 1;"
}
dtor {
"// base dtor"
}
Attribute ctorBase: int32 = "0"
Attribute ctorRefine: int32 = "0"
Attribute valueBase: int32 = "0"
Attribute valueSub: int32 = "0"
Attribute doNotCallOverride: int32 = "0"
}
DataClass SubDataClass extends BaseDataClass {
override Operation overriddenOperation() {
"valueSub = 2;"
}
ctor {
"ctorRefine = 2;"
}
dtor {
"// sub dtor"
}
}
}
|