blob: 8ee89275752516b19630a647ca30bdaf7a0096ce [file] [log] [blame]
RoomModel DynamicConfigTest {
import etrice.api.types.char
import etrice.api.types.boolean
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_DynamicConfigTest {
SubSystemRef main: SubSystem_DynamicConfigTest
}
SubSystemClass SubSystem_DynamicConfigTest {
ActorRef testee: Testee_ac
ActorRef timingService: ATimerService
LayerConnection ref testee satisfied_by timingService.timer
LogicalThread defaultThread
}
ActorClass Testee_ac {
Structure {
usercode1 '''
import java.util.HashMap;
import java.util.Map;
import org.eclipse.etrice.runtime.java.config.IConfigSource;'''
SAP timer: PTimer
Attribute caseId: int32
Attribute testId: int32 = "1"
// no dynConfig
Attribute sString: string
// dynConfig
Attribute aInt8: int8
Attribute aInt16: int16
Attribute aInt32: int32
Attribute aInt64: int64
Attribute aBool: boolean
Attribute aFloat32: float32
Attribute aFloat64: float64
Attribute aChar: char
Attribute aString: string
Attribute aInt8_array [2]: int8
Attribute aInt16_array [2]: int16
Attribute aInt32_array [2]: int32
Attribute aInt64_array [2]: int64
Attribute aBool_array [2]: boolean
Attribute aFloat32_array [2]: float32
Attribute aFloat64_array [2]: float64
Attribute aChar_array [2]: char
Attribute dc: Data_dc
}
Behavior {
ctor '''
etUnit_open("log", "DynamicConfigTest");
etUnit_openTestSuite("org.eclipse.etrice.generator.java.tests.DynamicConfigTest");
caseId = etUnit_openTestCase("DynamicConfigTest_case_Testee_ac");'''
dtor '''
etUnit_closeTestCase(caseId);
etUnit_closeTestSuite();
etUnit_close();'''
StateMachine {
Transition t0: initial -> ChangeConfigValid {
}
Transition t1: ChangeConfigValid -> Test {
triggers {
<timeout: timer>
}
action '''testId++;'''
}
Transition t2: Test -> ChangeConfigInvalid {
triggers {
<timeout: timer guard '''testId==2'''>
}
}
Transition t3: ChangeConfigInvalid -> Test {
triggers {
<timeout: timer>
}
action '''testId++;'''
}
Transition t4: Test -> Done {
triggers {
<timeout: timer guard '''testId==4'''>
}
}
Transition tr0: Test -> ChangeConfigValid {
triggers {
<timeout: timer guard '''testId==3'''>
}
}
State ChangeConfigValid {
entry '''
IConfigSource source = ConfigSourceTestInstance.getInstance();
String path = this.getInstancePath();
Map<String, Object> testValues = new HashMap<String, Object>();
testValues.put(path+"/aInt8", 50);
testValues.put(path+"/aInt16", 51);
testValues.put(path+"/aInt32", 52);
testValues.put(path+"/aInt64", 53);
testValues.put(path+"/aFloat32", 5.4f);
testValues.put(path+"/aFloat64", 5.5);
testValues.put(path+"/aChar", 'B');
testValues.put(path+"/aString", "Do-NOT-UPDATE-me");
testValues.put(path+"/aBool", true);
testValues.put(path+"/dc/nested/aInt32", 56);
testValues.put(path+"/dc/aString", "Okay");
testValues.put(path+"/aInt8_array", new Byte[]{50,40});
testValues.put(path+"/aInt16_array", new Short[]{51,41});
testValues.put(path+"/aInt32_array", new Integer[]{52,42});
testValues.put(path+"/aInt64_array", new Long[]{53L,43L});
testValues.put(path+"/aFloat32_array", new Float[]{5.4f, 4.4f});
testValues.put(path+"/aFloat64_array", new Double[]{5.5, 4.5});
testValues.put(path+"/aChar_array", "BB");
testValues.put(path+"/aBool_array", new Boolean[]{true, false});
source.writeValues(testValues);
timer.startTimer(400);'''
}
State ChangeConfigInvalid {
entry '''
getAStringLock().forbidUpdate();
IConfigSource source = ConfigSourceTestInstance.getInstance();
String path = this.getInstancePath();
Map<String, Object> testValues = new HashMap<String, Object>();
testValues.put(path+"/aInt8", 128);
testValues.put(path+"/aInt16", 61);
testValues.put(path+"/aInt32", -2);
testValues.put(path+"/aInt64", Long.MAX_VALUE);
testValues.put(path+"/aFloat32", -100f);
testValues.put(path+"/aFloat64", 100d);
testValues.put(path+"/aChar", "string");
testValues.put(path+"/aString", "VALID-String");
testValues.put(path+"/aBool", "true");
testValues.put(path+"/dc/aString", 0.89898);
testValues.put(path+"/dc/nested/aInt32", 62);
testValues.put(path+"/aInt8_array", 128);
testValues.put(path+"/aInt16_array", new Short[]{-1,-2});
testValues.put(path+"/aInt32_array", new Integer[]{60,59});
testValues.put(path+"/aInt64_array", new Long[]{60000L,60000L});
testValues.put(path+"/aFloat32_array", new Float[]{0f, -2f});
testValues.put(path+"/aFloat64_array", "string");
testValues.put(path+"/aChar_array", "BBB");
testValues.put(path+"/aBool_array", 500);
source.writeValues(testValues);
timer.startTimer(400);'''
}
State Test {
entry '''
EXPECT_EQUAL_INT8(caseId, "1:Testee_ac", (byte)50, getAInt8());
EXPECT_EQUAL_INT16(caseId, "2:Testee_ac", (short)51, getAInt16());
EXPECT_EQUAL_INT32(caseId, "3:Testee_ac", 52, getAInt32());
EXPECT_TRUE(caseId, "4:Testee_ac", getAInt64() == 53L);
EXPECT_EQUAL_FLOAT32(caseId, "5:Testee_ac", 5.4f, getAFloat32(), 0.1f);
EXPECT_TRUE(caseId, "6:Testee_ac", getAFloat64() == 5.5);
EXPECT_TRUE(caseId, "7:Testee_ac", getAChar() == 'B');
EXPECT_TRUE(caseId, "8:Testee_ac", "Do-NOT-UPDATE-me".equals(getAString()));
EXPECT_TRUE(caseId, "9:Testee_ac", getABool() == true);
EXPECT_TRUE(caseId, "10:Testee_ac", getAInt8_array()[0] == 50 && getAInt8_array()[1] == 40);
EXPECT_TRUE(caseId, "11:Testee_ac", getAInt16_array()[0] == 51 && getAInt16_array()[1] == 41);
EXPECT_TRUE(caseId, "12:Testee_ac", getAInt32_array()[0] == 52 && getAInt32_array()[1] == 42);
EXPECT_TRUE(caseId, "13:Testee_ac", getAInt64_array()[0] == 53L && getAInt64_array()[1] == 43L);
EXPECT_EQUAL_FLOAT32(caseId, "14.1:Testee_ac", 5.4f, getAFloat32_array()[0], 0.1f);
EXPECT_EQUAL_FLOAT32(caseId, "14.2:Testee_ac", 4.4f, getAFloat32_array()[1], 0.1f);
EXPECT_TRUE(caseId, "15:Testee_ac", getAFloat64_array()[0] == 5.5 && getAFloat64_array()[1] == 4.5);
EXPECT_TRUE(caseId, "16:Testee_ac", String.valueOf(getAChar_array()).equals("BB"));
EXPECT_TRUE(caseId, "18:Testee_ac", getABool_array()[0] == true && getABool_array()[1] == false);
EXPECT_TRUE(caseId, "19:Testee_ac", "Okay".equals(getDc().getAString()));
EXPECT_TRUE(caseId, "20:Testee_ac", getDc().getNested().getAInt32() == 56);
timer.startTimer(1);'''
}
State Done {
entry ''' etUnit_testFinished(caseId);'''
}
}
}
}
DataClass Data_dc {
Attribute aString: string
Attribute nested: Data_nested_dc
}
DataClass Data_nested_dc {
Attribute aInt32: int32
}
}