| RoomModel StaticConfigTest { |
| |
| import etrice.api.types.boolean |
| import etrice.api.types.char |
| import etrice.api.types.int8 |
| import etrice.api.types.int16 |
| import etrice.api.types.int32 |
| import etrice.api.types.int64 |
| import etrice.api.types.float32 |
| import etrice.api.types.float64 |
| import etrice.api.types.string |
| import etrice.api.timer.PTimer |
| import etrice.api.timer.ATimerService |
| |
| LogicalSystem System_StaticConfigTest { |
| SubSystemRef main: SubSystem_StaticConfigTest |
| } |
| |
| SubSystemClass SubSystem_StaticConfigTest { |
| LayerConnection ref top satisfied_by timer.timer |
| ActorRef top: Top_ac |
| ActorRef timer: ATimerService |
| |
| LogicalThread defaultThread |
| } |
| |
| ActorClass Top_ac { |
| Structure { |
| ActorRef testee_1: Testee_1_ac |
| ActorRef tester: Tester_ac |
| LayerConnection ref testee_1 satisfied_by tester.spp |
| SAP timer: PTimer |
| } |
| Behavior { |
| ctor ''' |
| etUnit_open("log", "StaticConfigTest"); |
| etUnit_openTestSuite("org.eclipse.etrice.generator.c.tests.StaticConfigTest");''' |
| dtor ''' |
| etUnit_closeTestSuite(); |
| etUnit_close();''' |
| StateMachine { |
| Transition init: initial -> state0 { |
| action '''timer.startTimeout(1000);''' |
| } |
| Transition tr0: state0 -> state0 { |
| triggers { |
| <timeout: timer> |
| } |
| action '''etUnit_testFinished(-1);''' |
| } |
| State state0 |
| } |
| } |
| } |
| |
| ActorClass Tester_ac { |
| Interface { |
| SPP spp: TestProtocolWithDataClass |
| } |
| Structure { |
| ServiceImplementation of spp |
| Attribute caseId: int32 |
| |
| // none config test |
| Attribute data_3: Data_3_dc |
| ActorRef testee_super2: Testee_Super2_ac |
| } |
| Behavior { |
| StateMachine { |
| Transition init: initial -> s1 { |
| } |
| State s1 { |
| entry ''' |
| caseId = etUnit_openTestCase("AttrConfigTest_case_Tester_ac"); |
| Data_3_dc_varCheck3(&(data_3), caseId); |
| etUnit_closeTestCase(caseId);''' |
| } |
| } |
| } |
| } |
| |
| ActorClass Testee_1_ac { |
| Interface { |
| conjugated Port conj_port: TestProtocolAttributes |
| } |
| Structure { |
| usercode1 '''#include "etUnit/etUnit.h"''' |
| external Port conj_port |
| Attribute caseId: int32 |
| Attribute data_1: Data_1_dc |
| Attribute enumval1: Enum_1 = "one" |
| Attribute enumval2: Enum_2 = "four" |
| ActorRef testee_2: Testee_2_ac |
| } |
| Behavior { |
| StateMachine { |
| Transition init: initial -> s1 { |
| } |
| State s1 { |
| entry ''' |
| caseId = etUnit_openTestCase("AttrConfigTest_case_Testee_1_ac"); |
| Data_1_dc_varCheck1(&(data_1), caseId); |
| EXPECT_FALSE(caseId,"testee_1:data_1:1", data_1.bool_c); |
| EXPECT_TRUE(caseId,"testee_1:data_1:2", data_1.int8_c == 24); |
| EXPECT_TRUE(caseId,"testee_1:data_1:3", data_1.int16_c == 48); |
| EXPECT_TRUE(caseId,"testee_1:data_1:4", data_1.int32_c == 96); |
| EXPECT_TRUE(caseId,"testee_1:data_1:5", data_1.int64_c == 192); |
| EXPECT_EQUAL_FLOAT32(caseId,"testee_1:data_1:6", 9.6f, data_1.float32_c, 0.1f); |
| EXPECT_EQUAL_FLOAT64(caseId,"testee_1:data_1:7", 19.2, data_1.float64_c, 0.1); |
| EXPECT_TRUE(caseId,"testee_1:data_1:8", data_1.char_c == 'C'); |
| EXPECT_TRUE(caseId,"testee_1:varCheck:8.1", strcmp(data_1.string_c, ":)") == 0 ); |
| EXPECT_TRUE(caseId,"testee_1:data_1:10", data_1.bool_i); |
| EXPECT_TRUE(caseId,"testee_1:data_1:11", data_1.int8_i == 2); |
| EXPECT_TRUE(caseId,"testee_1:data_1:12", data_1.int16_i == 4); |
| EXPECT_TRUE(caseId,"testee_1:data_1:13", data_1.int32_i == 8); |
| EXPECT_TRUE(caseId,"testee_1:data_1:14", data_1.int64_i == 16); |
| EXPECT_EQUAL_FLOAT32(caseId,"testee_1:data_1:15", 1.6f, data_1.float32_i, 0.1f); |
| EXPECT_EQUAL_FLOAT64(caseId,"testee_1:data_1:16", 3.2, data_1.float64_i, 0.1); |
| EXPECT_TRUE(caseId,"testee_1:data_1:17", data_1.char_i == 'I'); |
| EXPECT_TRUE(caseId,"testee_1:varCheck:18", strcmp(data_1.string_i, ":]") == 0 ); |
| EXPECT_TRUE(caseId,"testee_1:data_1:19", data_1.bool_array_c[0] == ET_TRUE && data_1.bool_array_c[1] == ET_FALSE); |
| EXPECT_TRUE(caseId,"testee_1:data_1:20", data_1.int8_array_c[0] == 24 && data_1.int8_array_c[1] == 48); |
| EXPECT_TRUE(caseId,"testee_1:data_1:21", data_1.int16_array_c[0] == 48 && data_1.int16_array_c[1] == 96); |
| EXPECT_TRUE(caseId,"testee_1:data_1:22", data_1.int32_array_c[0] == 96 && data_1.int32_array_c[1] == 192); |
| EXPECT_TRUE(caseId,"testee_1:data_1:23", data_1.int64_array_c[0] == 192 && data_1.int64_array_c[1] == 384); |
| EXPECT_EQUAL_FLOAT32(caseId, "testee_1:data_1:24_1", 9.6f, data_1.float32_array_c[0], 0.1f); |
| EXPECT_EQUAL_FLOAT32(caseId, "testee_1:data_1:24_2", 9.6f, data_1.float32_array_c[1], 0.1f); |
| EXPECT_EQUAL_FLOAT64(caseId, "testee_1:data_1:25_1", 19.2, data_1.float64_array_c[0], 0.1); |
| EXPECT_EQUAL_FLOAT64(caseId, "testee_1:data_1:25_2", 19.2, data_1.float64_array_c[1], 0.1); |
| EXPECT_TRUE(caseId,"testee_1:data_1:26", strcmp(data_1.char_array_c, "Claz") == 0); |
| EXPECT_TRUE(caseId,"testee_1:data_1:27", data_1.bool_array_i[0] == ET_TRUE && data_1.bool_array_i[1] == ET_TRUE); |
| EXPECT_TRUE(caseId,"testee_1:data_1:28", data_1.int8_array_i[0] == 2 && data_1.int8_array_i[1] == 6); |
| EXPECT_TRUE(caseId,"testee_1:data_1:29", data_1.int16_array_i[0] == 4 && data_1.int16_array_i[1] == 12); |
| EXPECT_TRUE(caseId,"testee_1:data_1:30", data_1.int32_array_i[0] == 8 && data_1.int32_array_i[1] == 24); |
| EXPECT_TRUE(caseId,"testee_1:data_1:31", data_1.int64_array_i[0] == 16 && data_1.int64_array_i[1] == 48); |
| EXPECT_EQUAL_FLOAT32(caseId, "testee_1:data_1:32_1", 1.6f, data_1.float32_array_i[0], 0.1f); |
| EXPECT_EQUAL_FLOAT32(caseId, "testee_1:data_1:32_2", 1.6f, data_1.float32_array_i[1], 0.1f); |
| EXPECT_EQUAL_FLOAT64(caseId, "testee_1:data_1:33_1", 3.2, data_1.float64_array_i[0], 0.1); |
| EXPECT_EQUAL_FLOAT64(caseId, "testee_1:data_1:33_2", 3.2, data_1.float64_array_i[1], 0.1); |
| EXPECT_TRUE(caseId,"testee_1:data_1:34", strcmp(data_1.char_array_i, "Inst") == 0); |
| EXPECT_TRUE(caseId,"testee_1:data_1:35", data_1.data_2.int32_c == 42); |
| EXPECT_TRUE(caseId,"testee_1:data_1:36", data_1.data_2.int32_i == 43); |
| EXPECT_TRUE(caseId,"testee_1:conj_port:36", ((TestProtocolAttributesConjPort_var*)self->constData->conj_port.varData)->array2_r[0] == 11); |
| EXPECT_TRUE(caseId,"testee_1:conj_port:37", ((TestProtocolAttributesConjPort_var*)self->constData->conj_port.varData)->array2_r[1] == 22); |
| EXPECT_TRUE(caseId,"testee_1:conj_port:38", ((TestProtocolAttributesConjPort_var*)self->constData->conj_port.varData)->array2_c[0] == 16); |
| EXPECT_TRUE(caseId,"testee_1:conj_port:39", ((TestProtocolAttributesConjPort_var*)self->constData->conj_port.varData)->array2_c[1] == 32); |
| EXPECT_TRUE(caseId,"testee_1:conj_port:40", ((TestProtocolAttributesConjPort_var*)self->constData->conj_port.varData)->array2_i[0] == 1); |
| EXPECT_TRUE(caseId,"testee_1:conj_port:41", ((TestProtocolAttributesConjPort_var*)self->constData->conj_port.varData)->array2_i[1] == 2); |
| etUnit_testFinished(caseId); |
| EXPECT_TRUE(caseId,"testee_1:enumval1", enumval1 == Enum_1.two); |
| EXPECT_TRUE(caseId,"testee_1:enumval2", enumval2 == Enum_2.three); |
| etUnit_closeTestCase(caseId);''' |
| } |
| } |
| } |
| } |
| |
| ActorClass Testee_Super2_ac { |
| Interface { |
| Port reg_port: TestProtocolAttributes |
| } |
| Structure { |
| usercode1 '''#include "etUnit/etUnit.h"''' |
| external Port reg_port |
| Attribute caseId: int32 |
| |
| // test |
| Attribute data_2: Data_2_dc |
| Attribute float64_super_r: float64 = "1.1" |
| Attribute float64_super_c: float64 = "1.1" |
| Attribute float64_super_i: float64 = "1.1" |
| } |
| Behavior { |
| ctor '''testInstanceConfig();''' |
| Operation testInstanceConfig() ''' |
| caseId = etUnit_openTestCase("AttrConfigTest_case_Testee_Super2_ac"); |
| EXPECT_EQUAL_FLOAT64(caseId, "Testee_Super2_ac:1", 1.1, float64_super_r, 0.1); |
| EXPECT_EQUAL_FLOAT64(caseId, "Testee_Super2_ac:2", 2.2, float64_super_c, 0.1); |
| EXPECT_EQUAL_FLOAT64(caseId, "Testee_Super2_ac:3", 3.3, float64_super_i, 0.1); |
| EXPECT_EQUAL_FLOAT32(caseId, "Testee_Super2_ac:7", 25.0f, ((TestProtocolAttributesPort_var*) self->constData->reg_port.varData)->float_i, 0.1f); |
| EXPECT_EQUAL_FLOAT32(caseId, "Testee_Super2_ac:5", 4.0f, ((TestProtocolAttributesPort_var*) self->constData->reg_port.varData)->float_r, 0.1f); |
| EXPECT_EQUAL_FLOAT32(caseId, "Testee_Super2_ac:6", 3.0f, ((TestProtocolAttributesPort_var*) self->constData->reg_port.varData)->float_c, 0.1f); |
| etUnit_closeTestCase(caseId);''' |
| } |
| } |
| |
| ActorClass Testee_2_ac extends Testee_Super2_ac { |
| Structure { |
| SAP sap: TestProtocolWithDataClass |
| Attribute int32_own_r: int32 = "11" |
| Attribute int32_own_c: int32 = "11" |
| Attribute int32_own_i: int32 = "11" |
| } |
| Behavior { |
| override Operation testInstanceConfig() ''' |
| caseId = etUnit_openTestCase("AttrConfigTest_case_Testee_2_ac"); |
| EXPECT_EQUAL_FLOAT64(caseId, "Testee_2_ac:2", 4.4, float64_super_i, 0.1); |
| EXPECT_EQUAL_FLOAT32(caseId, "Testee_2_ac:9", 50.0f, ((TestProtocolAttributesPort_var*) self->constData->reg_port.varData)->float_i, 0.1f);''' |
| StateMachine { |
| Transition init: initial -> s1 { |
| } |
| State s1 { |
| entry ''' |
| EXPECT_EQUAL_FLOAT64(caseId, "Testee_2_ac:1", 2.2, float64_super_c, 0.1); |
| EXPECT_TRUE(caseId, "Testee_2_ac:3", int32_own_r == 11); |
| EXPECT_TRUE(caseId, "Testee_2_ac:4", int32_own_c == 12); |
| EXPECT_TRUE(caseId, "Testee_2_ac:5", int32_own_i == 13); |
| EXPECT_EQUAL_FLOAT32(caseId, "Testee_2_ac:6", 4.0f, ((TestProtocolAttributesPort_var*) self->constData->reg_port.varData)->float_r, 0.1f); |
| EXPECT_EQUAL_FLOAT32(caseId, "Testee_2_ac:7", 3.0f, ((TestProtocolAttributesPort_var*) self->constData->reg_port.varData)->float_c, 0.1f); |
| Data_3_dc_varCheck3(&(((TestProtocolWithDataClassConjPort_var*)self->constData->sap.varData)->sap_data_3), caseId); |
| EXPECT_TRUE(caseId, "Testee_2_ac:sap:10", ((TestProtocolWithDataClassConjPort_var*)self->constData->sap.varData)->sap_data_2.int32_r == 1); |
| EXPECT_TRUE(caseId, "Testee_2_ac:sap:11", ((TestProtocolWithDataClassConjPort_var*)self->constData->sap.varData)->sap_data_2.int32_c == 2); |
| EXPECT_TRUE(caseId, "Testee_2_ac:sap:12", ((TestProtocolWithDataClassConjPort_var*)self->constData->sap.varData)->sap_data_2.int32_i == 3); |
| etUnit_closeTestCase(caseId);''' |
| } |
| } |
| } |
| } |
| |
| ProtocolClass TestProtocolAttributes { |
| incoming { |
| Message dummy() |
| } |
| regular PortClass |
| { |
| Attribute float_r: float32 = "4" |
| Attribute float_c: float32 = "16" |
| Attribute float_i: float32 = "256" |
| } |
| conjugated PortClass |
| { |
| Attribute array2_r [2]: int64 = "{11,22}" |
| Attribute array2_c [2]: int64 = "{0,0}" |
| Attribute array2_i [2]: int64 = "{0,0}" |
| } |
| } |
| |
| ProtocolClass TestProtocolWithDataClass { |
| usercode1 ''' |
| #include "Data_2_dc.h" |
| #include "Data_3_dc.h"''' |
| incoming { |
| Message dummy() |
| } |
| |
| // SAP |
| conjugated PortClass |
| { |
| Attribute sap_data_2: Data_2_dc |
| |
| // none config test |
| Attribute sap_data_3: Data_3_dc |
| } |
| } |
| |
| ExternalType extType -> "int" default "999" |
| |
| DataClass Data_Super1_dc { |
| |
| // PrimitiveType |
| Attribute bool_r: boolean = "false" |
| Attribute bool_c: boolean = "false" |
| Attribute bool_i: boolean = "false" |
| |
| // Array |
| Attribute bool_array_r [2]: boolean = "{ ET_FALSE, false }" |
| Attribute bool_array_c [2]: boolean = "{ false, false }" |
| Attribute bool_array_i [2]: boolean = "{ false, false }" |
| } |
| |
| DataClass Data_1_dc extends Data_Super1_dc { |
| usercode1 '''#include "etUnit/etUnit.h"''' |
| |
| Attribute int8_r: int8 = "8" |
| Attribute int8_c: int8 = "8" |
| Attribute int8_i: int8 = "8" |
| Attribute int16_r: int16 = "16" |
| Attribute int16_c: int16 = "16" |
| Attribute int16_i: int16 = "16" |
| Attribute int32_r: int32 = "32" |
| Attribute int32_c: int32 = "32" |
| Attribute int32_i: int32 = "32" |
| Attribute int64_r: int64 = "64" |
| Attribute int64_c: int64 = "64" |
| Attribute int64_i: int64 = "64" |
| Attribute float32_r: float32 = "3.2" |
| Attribute float32_c: float32 = "3.2" |
| Attribute float32_i: float32 = "3.2" |
| Attribute float64_r: float64 = "6.4" |
| Attribute float64_c: float64 = "6.4" |
| Attribute float64_i: float64 = "6.4" |
| Attribute char_r: char = "R" |
| Attribute char_c: char = 'R' |
| Attribute char_i: char = "R" |
| Attribute string_r: string = ":/" |
| Attribute string_c: string = ":/" |
| Attribute string_i: string = ":/" |
| |
| // Array |
| Attribute int8_array_r [2]: int8 = "{ 8, 16 }" |
| Attribute int8_array_c [2]: int8 = "{ 8, 16 }" |
| Attribute int8_array_i [2]: int8 = "{ 8, 16 }" |
| Attribute int16_array_r [2]: int16 = "{ 16, 32 }" |
| Attribute int16_array_c [2]: int16 = "{ 16, 32 }" |
| Attribute int16_array_i [2]: int16 = "{ 16, 32 }" |
| Attribute int32_array_r [2]: int32 = "{ 32, 64 }" |
| Attribute int32_array_c [2]: int32 = "{ 32, 64 }" |
| Attribute int32_array_i [2]: int32 = "{ 32, 64 }" |
| Attribute int64_array_r [2]: int64 = "{ 64, 128 }" |
| Attribute int64_array_c [2]: int64 = "{ 64, 128 }" |
| Attribute int64_array_i [2]: int64 = "{ 64, 128 }" |
| Attribute float32_array_r [2]: float32 = "{ 3.2, 6.4 }" |
| Attribute float32_array_c [2]: float32 = "{ 3.2, 6.4 }" |
| Attribute float32_array_i [2]: float32 = "{ 3.2, 6.4 }" |
| Attribute float64_array_r [2]: float64 = "{ 6.4, 12.8 }" |
| Attribute float64_array_c [2]: float64 = "{ 6.4, 12.8 }" |
| Attribute float64_array_i [2]: float64 = "{ 6.4, 12.8 }" |
| Attribute char_array_r [5]: char = "ROOM" |
| Attribute char_array_c [5]: char = "ROOM" |
| Attribute char_array_i [5]: char = "ROOM" |
| |
| // ComplexType |
| Attribute data_2: Data_2_dc |
| |
| Operation varCheck1(caseId: int32) ''' |
| Data_2_dc_varCheck2(&(data_2), caseId); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:1", bool_r == ET_FALSE); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:2", int8_r == 8); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:3", int16_r == 16); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:4", int32_r == 32); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:5", int64_r == 64); |
| EXPECT_EQUAL_FLOAT32(caseId,"Data_1_dc:varCheck:6", 3.2f, float32_r, 0.1f); |
| EXPECT_EQUAL_FLOAT64(caseId,"Data_1_dc:varCheck:7", 6.4, float64_r, 0.1); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:8", char_r == 'R'); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:8", strcmp(string_r, ":/") == 0 ); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:10", bool_array_r[0] == ET_FALSE && bool_array_r[1] == ET_FALSE); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:11", int8_array_r[0] == 8 && int8_array_r[1] == 16); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:12", int16_array_r[0] == 16 && int16_array_r[1] == 32); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:13", int32_array_r[0] == 32 && int32_array_r[1] == 64); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:24", int64_array_r[0] == 64 && int64_array_r[1] == 128); |
| EXPECT_EQUAL_FLOAT32(caseId, "Data_1_dc:varCheck:25_1", 3.2f, float32_array_r[0], 0.1f); |
| EXPECT_EQUAL_FLOAT32(caseId, "Data_1_dc:varCheck:25_2", 6.4f, float32_array_r[1], 0.1f); |
| EXPECT_EQUAL_FLOAT64(caseId, "Data_1_dc:varCheck:26_1", 6.4, float64_array_r[0], 0.1); |
| EXPECT_EQUAL_FLOAT64(caseId, "Data_1_dc:varCheck:26_2", 12.8, float64_array_r[1], 0.1); |
| EXPECT_TRUE(caseId,"Data_1_dc:varCheck:27", strcmp(char_array_r, "ROOM")==0);''' |
| } |
| |
| DataClass Data_2_dc { |
| usercode1 '''#include "etUnit/etUnit.h"''' |
| Attribute int32_r: int32 = "1" |
| Attribute int32_c: int32 = "1" |
| Attribute int32_i: int32 = "1" |
| Operation varCheck2(caseId: int32): void '''EXPECT_TRUE(caseId, "Data_2_dc:1", int32_r == 1);''' |
| } |
| |
| DataClass Data_3_dc { |
| usercode1 '''#include "etUnit/etUnit.h"''' |
| |
| // none config test |
| Attribute primitive_ref: int32 ref |
| Attribute primitive_ref_array [2]: int32 ref |
| Attribute dataClass_array [2]: Data_2_dc |
| Attribute dataClass_ref: Data_2_dc ref |
| Attribute dataClass_ref_array [2]: Data_2_dc ref |
| Attribute ext_type: extType |
| Attribute ext_type_array [2]: extType |
| Attribute ext_type_ref: extType ref |
| Attribute ext_type_ref_array [2]: extType ref |
| Operation varCheck3(caseId: int32): void ''' |
| EXPECT_TRUE(caseId, "Data_3_dc:1", primitive_ref == NULL); |
| EXPECT_TRUE(caseId, "Data_3_dc:2", primitive_ref_array[0] == NULL && primitive_ref_array[1] == NULL); |
| EXPECT_TRUE(caseId, "Data_3_dc:3", dataClass_ref == NULL); |
| EXPECT_TRUE(caseId, "Data_3_dc:4", dataClass_array[0].int32_r == 1 && dataClass_array[0].int32_c == 1 && dataClass_array[0].int32_i == 1); |
| EXPECT_TRUE(caseId, "Data_3_dc:4", dataClass_array[1].int32_r == 1 && dataClass_array[1].int32_c == 1 && dataClass_array[1].int32_i == 1); |
| EXPECT_TRUE(caseId, "Data_3_dc:5", dataClass_ref == NULL); |
| EXPECT_TRUE(caseId, "Data_3_dc:6", dataClass_ref_array[0] == NULL && dataClass_ref_array[1] == NULL); |
| EXPECT_TRUE(caseId, "Data_3_dc:7", ext_type == 999); |
| EXPECT_TRUE(caseId, "Data_3_dc:8", ext_type_array[0] == 999 && ext_type_array[1] == 999); |
| EXPECT_TRUE(caseId, "Data_3_dc:9", ext_type_ref == NULL); |
| EXPECT_TRUE(caseId, "Data_3_dc:10", ext_type_ref_array[0] == NULL && dataClass_ref_array[1] == NULL);''' |
| } |
| |
| Enumeration Enum_1 { |
| zero, |
| one, |
| two |
| } |
| |
| Enumeration Enum_2 of int16 { |
| three = 3, |
| four |
| } |
| } |