Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: d59508a84b7a37dc10778d25360367b39d730ec6 (plain) (blame)
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"
		}
	}

}

Back to the top