diff options
Diffstat (limited to 'tests/org.eclipse.etrice.generator.java.tests/targetModels/DynamicActorTest7.room')
-rw-r--r-- | tests/org.eclipse.etrice.generator.java.tests/targetModels/DynamicActorTest7.room | 375 |
1 files changed, 375 insertions, 0 deletions
diff --git a/tests/org.eclipse.etrice.generator.java.tests/targetModels/DynamicActorTest7.room b/tests/org.eclipse.etrice.generator.java.tests/targetModels/DynamicActorTest7.room new file mode 100644 index 000000000..84cf22e12 --- /dev/null +++ b/tests/org.eclipse.etrice.generator.java.tests/targetModels/DynamicActorTest7.room @@ -0,0 +1,375 @@ +RoomModel DynamicActorTest7 { + + import room.basic.etunit.* from "Tests.room" + import room.basic.types.* from "Types.room" + + LogicalSystem JavaGenTests { + SubSystemRef da7Test : SubSystem_DynamicActorTest7 + } + + SubSystemClass SubSystem_DynamicActorTest7 { + ActorRef main : Appl + + LogicalThread defaultThread + } + + ActorClass Appl { + Structure { + ActorRef cont: Container + } + Behavior { } + } + + ActorClass Container { + Structure { + usercode1 { + "import java.io.File;" + } + usercode2 { + "private static final String FIRST_OPT_OBJ = \"firstOpt.obj\";" + "private static final String SECOND_OPT_OBJ = \"secondOpt.obj\";" + } + conjugated Port op: PStep + conjugated Port opa [*]: PStep + + Attribute caseId: int32 + + optional ActorRef opt: Optional + optional ActorRef optarr [*]: Optional + + Binding op and opt.fct + Binding opa and optarr.fct + } + Behavior { + ctor { + "caseId = etUnit_openAll(\"log/testlog\", \"DynamicActorTest7\", \"org.eclipse.etrice.generator.common.tests.DynamicActorTest7\", \"DynamicActorTest7_case\");" + } + dtor { + "etUnit_closeAll(caseId);" + } + Operation clean() { + "File f = new File(FIRST_OPT_OBJ);" + "if (f.exists())" + "\tf.delete();" + } + StateMachine { + Transition init: initial -> Init { } + Transition tr0: Init -> DestroyAndCreate { + triggers { + <hello: op> + } + action { + "System.out.println(\"received \"+transitionData);" + } + } + Transition tr1: DestroyAndCreate -> DestroyAndRestore { + triggers { + <hello: op> + } + action { + "System.out.println(\"received \"+transitionData);" + } + } + Transition tr2: DestroyAndRestore -> LoadInArray { + triggers { + <hello: op> + } + action { + "System.out.println(\"received \"+transitionData);" + } + } + Transition tr3: LoadInArray -> ReceivedHello { + triggers { + <hello: opa> + } + action { + "System.out.println(\"received \"+transitionData);" + } + } + Transition tr4: ReceivedHello -> Done { + triggers { + <hello: opa> + } + action { + "System.out.println(\"received \"+transitionData);" + } + } + State Init { + entry { + "clean();" + "FilePersistor.createAndLoad(opt, getThread(), FIRST_OPT_OBJ, \"Optional1\");" + "op.step();" + "op.step();" + "op.sayHello();" + } + } + State DestroyAndCreate { + entry { + "FilePersistor.saveAndDestroy(opt, FIRST_OPT_OBJ);" + "FilePersistor.createAndLoad(opt, getThread(), SECOND_OPT_OBJ, \"Optional2\");" + "op.step();" + "op.step();" + "op.sayHello();" + } + } + State DestroyAndRestore { + entry { + "FilePersistor.saveAndDestroy(opt, SECOND_OPT_OBJ);" + "FilePersistor.createAndLoad(opt, getThread(), FIRST_OPT_OBJ, \"Optional1\");" + "op.sayHello();" + } + } + State Done { + entry { + "IRTObject object = getObject(\"/JavaGenTests/da7Test/main/cont/optarr/optarr:0/sub\");" + "EXPECT_TRUE(caseId, \"object 0 of optarr is an instance of actor class Sub1\", object instanceof Sub1);" + "" + "Sub1 inst = (Sub1) object;" + "EXPECT_EQUAL_INT32(caseId, \"state\", Sub1.STATE_Step3_StepA, inst.getState());" + "EXPECT_EQUAL_INT32(caseId, \"current value of ival\", 123, inst.getIval());" + "EXPECT_EQUAL_INT16(caseId, \"current value of sval\", (short)456, inst.getSval());" + "EXPECT_EQUAL_INT8(caseId, \"current value of bval\", (byte)3, inst.getBval());" + "EXPECT_TRUE(caseId, \"changed string\", \"changed\".equals(inst.getSome()[1].getStr()));" + "EXPECT_EQUAL_FLOAT32(caseId, \"current vaue of\", 3.14159f, inst.getDerived().getSome().getFval()[2], 0.001f);" + "EXPECT_EQUAL_UINT8(caseId, \"current value of cval\", 'x', inst.getCval());" + "" + "etUnit_testFinished(caseId);" + } + } + State LoadInArray { + entry { + "FilePersistor.createAndLoad(optarr, getThread(), FIRST_OPT_OBJ, \"Optional1\");" + "FilePersistor.createAndLoad(optarr, getThread(), SECOND_OPT_OBJ, \"Optional2\");" + "opa.sayHello();" + } + } + State ReceivedHello + } + } + } + + abstract ActorClass Optional { + Interface { + Port fct: PStep + } + Structure { } + Behavior { } + } + + ActorClass Optional1 extends Optional { + Structure { + ActorRef ^sub: Sub1 + Binding fct and ^sub.fct + } + Behavior { } + } + + ActorClass Optional2 extends Optional { + Structure { + ActorRef ^sub: Sub2 + Binding fct and ^sub.fct + } + Behavior { } + } + + ActorClass Sub1Base { + Structure { + Attribute cval: char + } + } + + ActorClass Sub1 extends Sub1Base { + Interface { + Port fct: PStep + } + Structure { + external Port fct + conjugated Port dp: PStep + + Attribute ival: int32 + Attribute sval: int16 + Attribute bval: int8 + Attribute some[3]: SomeData + Attribute other: OtherData + Attribute derived: DerivedData + + ActorRef deep: DeepSub1 + Binding dp and deep.fct + } + Behavior { + StateMachine { + Transition init: initial -> Step1 { } + Transition tr0: Step1 -> Step2 { + triggers { + <step: fct> + } + action { + "dp.step();" + } + } + Transition tr1: Step2 -> Step3 { + triggers { + <step: fct> + } + action { + "dp.step();" + } + } + Transition tr2: my tp0 -> my tp0 { + triggers { + <sayHello: fct> + } + action { + "fct.hello(getClassName()+\", state=\"+stateStrings[getState()]+\", path= \"+getInstancePath());" + } + } + handler TransitionPoint tp0 + State Step1 { + entry { + "ival = 1;" + "sval = 2;" + "bval = 3;" + "cval = 'x';" + } + } + State Step2 { + entry { + "ival = 123;" + "some[1].str = \"changed\";" + "derived.some.fval[2] = 3.14159f;" + } + } + State Step3 { + subgraph { + Transition init: initial -> StepA { } + Transition tr0: StepA -> StepB { + triggers { + <step: fct> + } + action { + "dp.step();" + } + } + Transition tr1: StepB -> StepC { + triggers { + <step: fct> + } + action { + "dp.step();" + } + } + State StepA { + entry { + "sval = 456;" + } + } + State StepB { + entry { + "bval = 13;" + } + } + State StepC + } + } + } + } + } + + ActorClass DeepSub1 { + Interface { + Port fct: PStep + } + Structure { + external Port fct + } + Behavior { + StateMachine { + Transition init: initial -> Step1 { } + Transition tr0: Step1 -> Step2 { + triggers { + <step: fct> + } + } + Transition tr1: Step2 -> Step3 { + triggers { + <step: fct> + } + } + Transition tr2: Step3 -> Step5 { + triggers { + <step: fct> + } + } + Transition tr3: Step5 -> Step6 { + triggers { + <step: fct> + } + } + Transition tr4: Step6 -> Step7 { + triggers { + <step: fct> + } + } + State Step1 + State Step2 + State Step3 + State Step5 + State Step6 + State Step7 + } + } + } + + ActorClass Sub2 { + Interface { + Port fct: PStep + } + Structure { + external Port fct + } + Behavior { + StateMachine { + Transition init: initial -> Ready { } + Transition tr0: Ready -> Ready { + triggers { + <step: fct> + } + } + Transition tr1: Ready -> Ready { + triggers { + <sayHello: fct> + } + action { + "fct.hello(getClassName()+\", state=\"+stateStrings[getState()]+\", path= \"+getInstancePath());" + } + } + State Ready + } + } + } + + ProtocolClass PStep { + incoming { + Message step() + Message sayHello() + } + outgoing { + Message hello(txt: string) + } + } + + DataClass SomeData { + Attribute fval[3]: float32 = "1.0" + Attribute dval: float64 = "123.4" + Attribute str: string = "\"Text\"" + } + + DataClass OtherData { + Attribute some: SomeData + Attribute bval: boolean = "false" + } + + DataClass DerivedData extends OtherData { + Attribute cval[3]: char = "{'a', 'b', 'c'}" + } +}
\ No newline at end of file |