Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 05a85ba8f9a9f32f4482f06657d5d0428aef9770 (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
RoomModel InitializationTest {

	import room.basic.types.* from "Types.room"

	import room.basic.test.* from "Tests.room"

	async ActorClass InitializationTest {
		@TestInstance
		Structure {
			usercode1 {
				"struct structType {"
				"	int32 number;"
				"	structType* refStruct;"
				"} typedef structType;"
				""
				"class ClassType {"
				"public:"
				"	ClassType(bool boolAttr, int32 number) : boolAttr(boolAttr), number(number) {}"
				""
				"	bool boolAttr;"
				"	int32 number;"
				"};"
			}
			Attribute caseId : int16

			// c/c++ struct
			Attribute structAttr1: structType
			Attribute structAttr2: structType = "{2, NULL}"
			Attribute arrayStructAttr[2]: structType = "{{1, NULL}, {2, NULL}}"

			// static array
			Attribute arrayInt32Attr1[5]: int32
			Attribute arrayInt32Attr2[5]: int32 = ""
			Attribute arrayInt32Attr3[5]: int32 = "1"
			Attribute arrayInt32Attr4[5]: int32 = "{1, 2, 3, 4, 5}"

			// data class
			Attribute dataClassAttr1 : SubDataClass
			Attribute dataClassAttr2 : SubDataClass = "true, 2"
			// Attribute arrayDataClassAttr[2]: SubDataClass  // = "..." init NOT possible

			// external class
			Attribute extClassAttr1 : ClassType
			Attribute extClassAttr2 : ClassType = "true, 2"
			// Attribute arrayExtClassAttr[2] : ClassType // = "..." init NOT possible
		}
		Behavior {
			ctor {
				"caseId = etUnit_openAll(\"log/testlog\", \"InitializationTest\", \"org.eclipse.etrice.generator.cpp.tests.InitializationTest\", \"InitializationTest_case\");"
				"testInitValues(caseId);"
			}
			dtor {
				"etUnit_closeAll(caseId);"
			}
			Operation testInitValues(caseId : int16) {
				"// c/c++ struct"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, structAttr1.number);"
				"EXPECT_TRUE(caseId, \"<|MODEL_LOCATION|>\", structAttr1.refStruct == NULL);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, structAttr2.number);"
				"EXPECT_TRUE(caseId, \"<|MODEL_LOCATION|>\", structAttr2.refStruct == NULL);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, arrayStructAttr[0].number);"
				"EXPECT_TRUE(caseId, \"<|MODEL_LOCATION|>\", arrayStructAttr[0].refStruct == NULL);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, arrayStructAttr[1].number);"
				"EXPECT_TRUE(caseId, \"<|MODEL_LOCATION|>\", arrayStructAttr[1].refStruct == NULL);"
				"// static array"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 0, arrayInt32Attr1[0]);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, arrayInt32Attr3[0]);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, arrayInt32Attr4[0]);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 5, arrayInt32Attr4[4]);"
				"// data class"
				"EXPECT_FALSE(caseId, \"<|MODEL_LOCATION|>\", dataClassAttr1.boolAttr);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 0, dataClassAttr1.number);"
				"EXPECT_TRUE(caseId, \"<|MODEL_LOCATION|>\", dataClassAttr2.boolAttr);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, dataClassAttr2.number);"
				"// external class"
				"EXPECT_FALSE(caseId, \"<|MODEL_LOCATION|>\", extClassAttr1.boolAttr);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 0, extClassAttr1.number);"
				"EXPECT_TRUE(caseId, \"<|MODEL_LOCATION|>\", extClassAttr2.boolAttr);"
				"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, extClassAttr2.number);"
			}

		StateMachine {
				State finish {
					entry {
						"etUnit_testFinished(caseId);"
					}
				}
				Transition init: initial -> finish
			}
		}
	}

	DataClass BaseDataClass {
		Attribute boolAttr : boolean
	}

	DataClass SubDataClass extends BaseDataClass {
		Attribute number : int32
	}

	ExternalType ClassType -> "ClassType" default "false, 0"
	ExternalType structType -> "structType" default "{1, NULL}"


}

Back to the top