blob: e8d4530e587383dc8f18ea22ef0f8ab2197a13b8 [file] [log] [blame]
RoomModel ContinuationTransitionTest {
import room.basic.types.* from "Types.room"
import room.basic.etunit.* from "Tests.room"
ActorClass ContinuationTransitionTest {
Structure {
ActorRef test1: TransitionChainsWithoutIfItem
ActorRef test2: TransitionChainsWithSameMsgData
ActorRef test3: TransitionChainsWithCompatibleData
ActorRef test4: TransitionChainsWithInCompatibleData
ActorRef test5 : TransitionChainWithoutIfItem_Sub
// not supported yet, TODO
//ActorRef test6 : TransitionChainWithData_Sub
}
}
ActorClass TransitionChainsWithoutIfItem {
Structure {
Port p0 : TestProtocol
}
Behavior {
StateMachine {
Transition continuationExit: exitPoint of substate -> endExit {
action {
"int x = 0;"
}
}
Transition init: initial -> entryPoint of substate
Transition tr0: my startEntry -> entryPoint of substate {
triggers {
<in1: p0>
}
}
TransitionPoint startEntry
State substate {
subgraph {
Transition continuationEntry: my entryPoint -> cp choicePoint {
action {
"int x = 0;"
}
}
Transition init: initial -> my exitPoint
Transition triggerExit: startExit -> my exitPoint {
triggers {
<in1: p0>
}
}
Transition continuationCpElse: cp choicePoint -> startExit {
action {
"int x = 0;"
}
}
Transition continuationCpCond: cp choicePoint -> endChoicePoint {
cond {
"true"
}
action {
"int x = 0;"
}
}
Transition triggerChoicePoint: my startChoicePoint -> cp choicePoint {
triggers {
<in2: p0>
}
}
ChoicePoint choicePoint
EntryPoint entryPoint
ExitPoint exitPoint
TransitionPoint startChoicePoint
State startExit
State endChoicePoint
}
}
State endExit
}
}
}
ActorClass TransitionChainsWithSameMsgData {
Structure {
Attribute caseId : int32
Port p0 : TestProtocol
}
Behavior {
StateMachine {
Transition init: initial -> startEntry2
Transition triggerEntry: my startEntry1 -> entryPoint of substate {
triggers {
<in1: p0>
}
}
Transition continuationExit: exitPoint of substate -> endExit {
action {
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, data);"
}
}
Transition tr0: startEntry2 -> entryPoint of substate {
triggers {
<in1: p0>
}
}
TransitionPoint startEntry1
State substate {
subgraph {
Transition continuationEntry: my entryPoint -> cp choicePoint {
action {
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, data);"
}
}
Transition triggerExit: startExit1 -> my exitPoint {
triggers {
<in1: p0>
}
}
Transition continuationCpElse: cp choicePoint -> startExit1 {
action {
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, data);"
}
}
Transition continuationCpCond: cp choicePoint -> startExit2 {
cond {
"true"
}
action {
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, data);"
}
}
Transition triggerChoicePoint: my startChoicePoint -> cp choicePoint {
triggers {
<in1: p0>
}
}
Transition tr0: startExit2 -> my exitPoint {
triggers {
<in1: p0>
}
}
ChoicePoint choicePoint
EntryPoint entryPoint
ExitPoint exitPoint
TransitionPoint startChoicePoint
State startExit1
State startExit2
}
}
State endExit
State startEntry2
}
}
}
ActorClass TransitionChainsWithCompatibleData {
Structure {
Attribute caseId : int32
Port p0 : TestProtocol
}
Behavior {
StateMachine {
Transition init: initial -> startEntry2
Transition triggerEntry: my startEntry1 -> entryPoint of substate {
triggers {
<in3: p0>
}
}
Transition continuationExit: exitPoint of substate -> endExit {
action {
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 2, data);"
}
}
Transition tr0: startEntry2 -> entryPoint of substate {
triggers {
<in1: p0>
}
}
TransitionPoint startEntry1
State substate {
subgraph {
Transition continuationEntry: my entryPoint -> cp choicePoint {
action {
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, data);"
}
}
Transition triggerExit: startExit1 -> my exitPoint {
triggers {
<in1: p0>
}
}
Transition continuationCpElse: cp choicePoint -> startExit1 {
action {
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, data);"
}
}
Transition continuationCpCond: cp choicePoint -> startExit2 {
cond {
"true"
}
action {
"EXPECT_EQUAL_INT32(caseId, \"<|MODEL_LOCATION|>\", 1, data);"
}
}
Transition triggerChoicePoint: my startChoicePoint -> cp choicePoint {
triggers {
<in1: p0>
}
}
Transition tr0: startExit2 -> my exitPoint {
triggers {
<in3: p0>
}
}
ChoicePoint choicePoint
EntryPoint entryPoint
ExitPoint exitPoint
TransitionPoint startChoicePoint
State startExit1
State startExit2
}
}
State endExit
State startEntry2
}
}
}
ActorClass TransitionChainsWithInCompatibleData {
Structure {
Attribute caseId : int32
Port p0 : TestProtocol
}
Behavior {
StateMachine {
Transition init: initial -> startEntry2
Transition continuationExit: exitPoint of substate -> endExit {
action {
"int x = 0;"
}
}
Transition tr0: startEntry2 -> entryPoint of substate {
triggers {
<in1: p0>
}
}
Transition tr1: my startEntry1 -> entryPoint of substate {
triggers {
<in2: p0>
}
}
TransitionPoint startEntry1
State substate {
subgraph {
Transition continuationEntry: my entryPoint -> cp choicePoint {
action {
"int x = 0;"
}
}
Transition triggerExit: startExit1 -> my exitPoint {
triggers {
<in1: p0>
}
}
Transition continuationCpElse: cp choicePoint -> startExit1 {
action {
"int x = 0;"
}
}
Transition continuationCpCond: cp choicePoint -> startExit2 {
cond {
"caseId == 99"
}
action {
"int x = 0;"
}
}
Transition triggerChoicePoint: my startChoicePoint -> cp choicePoint {
triggers {
<in1: p0>
}
}
Transition tr0: startExit2 -> my exitPoint {
triggers {
<in2: p0>
}
}
ChoicePoint choicePoint
EntryPoint entryPoint
ExitPoint exitPoint
TransitionPoint startChoicePoint
State startExit1
State startExit2
}
}
State endExit
State startEntry2
}
}
}
abstract ActorClass TransitionChainWithData_Base {
Structure {
Port p0 : TestProtocol
}
Behavior {
StateMachine {
Transition init: initial -> state0
Transition tr0: state0 -> cp cp0 {
triggers {
<in1: p0>
}
}
Transition tr1: cp cp0 -> state1 {
action {
"int x = data1;"
}
}
Transition tr2: cp cp0 -> state2 {
cond {
"true"
}
action {
"int x = data1;"
}
}
ChoicePoint cp0
State state0
State state1
State state2
}
}
}
ActorClass TransitionChainWithData_Sub extends TransitionChainWithData_Base{
Structure { }
Behavior {
StateMachine {
Transition tr3: state3 -> cp cp0 {
triggers {
<in2: p0>
}
}
State state3
}
}
}
abstract ActorClass TransitionChainWithoutIfItem_Base {
Structure {
Port p0 : TestProtocol
}
Behavior {
StateMachine {
Transition continuationChoicePointElse: cp cp0 -> endChoicePoint1 {
action {
"int x = 0;"
}
}
Transition continuationChoicePointCond: cp cp0 -> endChoicePoint2 {
cond {
"true"
}
action {
"int x = 0;"
}
}
Transition init: initial -> cp cp0
ChoicePoint cp0
State endChoicePoint1
State endChoicePoint2
}
}
}
ActorClass TransitionChainWithoutIfItem_Sub extends TransitionChainWithoutIfItem_Base {
Structure { }
Behavior {
StateMachine {
Transition triggerChoicePoint: startChoicePoint -> cp cp0 {
triggers {
<in1: p0>
}
}
State startChoicePoint
}
}
}
ProtocolClass TestProtocol {
incoming {
Message in1(data1 : int32)
Message in2(data2 : boolean)
Message in3(data3: int32)
}
}
}