| RoomModel InitializationTest { |
| |
| import room.basic.types.* from "Types.room" |
| |
| import room.basic.etunit.* 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}" |
| |
| |
| } |