@@ -14,10 +14,10 @@ import ru.nsk.kstatemachine.CoroutineStarterType
1414import ru.nsk.kstatemachine.SwitchEvent
1515import ru.nsk.kstatemachine.createTestStateMachine
1616import ru.nsk.kstatemachine.event.DataEvent
17- import ru.nsk.kstatemachine.state.MutableDataStateTestData.IdEvent
17+ import ru.nsk.kstatemachine.state.MutableDataStateTestData.IntEvent
1818
1919private object MutableDataStateTestData {
20- class IdEvent (override val data : Int ) : DataEvent<Int>
20+ class IntEvent (override val data : Int ) : DataEvent<Int>
2121}
2222
2323class MutableDataStateTest : FreeSpec ({
@@ -27,14 +27,14 @@ class MutableDataStateTest : FreeSpec({
2727 lateinit var mutableDataState : MutableDataState <Int >
2828 val machine = createTestStateMachine(coroutineStarterType) {
2929 val state1 = initialState {
30- dataTransitionOn<IdEvent , Int > { targetState = { mutableDataState } }
30+ dataTransitionOn<IntEvent , Int > { targetState = { mutableDataState } }
3131 }
3232 mutableDataState = mutableDataState<Int >("mutableDataState") {
3333 onEntry { data shouldBe 42 }
3434 transition<SwitchEvent > { targetState = state1 }
3535 }
3636 }
37- machine.processEvent(IdEvent (42))
37+ machine.processEvent(IntEvent (42))
3838 mutableDataState.isActive shouldBe true
3939 mutableDataState.lastData shouldBe 42
4040 mutableDataState.data shouldBe 42
@@ -72,6 +72,82 @@ class MutableDataStateTest : FreeSpec({
7272 machine.processEvent(SwitchEvent )
7373 mutableState1.lastData shouldBe 2
7474 }
75+
76+ " mutableDataState" {
77+ lateinit var mutableDataState : MutableDataState <Int >
78+ createTestStateMachine(coroutineStarterType) {
79+ initialChoiceDataState { mutableDataState }
80+ mutableDataState = mutableDataState<Int >(defaultData = 0)
81+ }
82+ mutableDataState.data shouldBe 0
83+ }
84+
85+ " mutableDataState scoped" {
86+ lateinit var mutableDataState : MutableDataState <Int >
87+ createTestStateMachine(coroutineStarterType) {
88+ initialChoiceDataState { mutableDataState }
89+ mutableDataState = mutableDataState<Int >(defaultData = 0) {
90+ onEntry { setData(1) }
91+ }
92+ }
93+ mutableDataState.data shouldBe 1
94+ }
95+
96+ " initialMutableDataState" {
97+ lateinit var mutableDataState : MutableDataState <Int >
98+ createTestStateMachine(coroutineStarterType) {
99+ mutableDataState = initialMutableDataState<Int >(defaultData = 1)
100+ }
101+ mutableDataState.data shouldBe 1
102+ }
103+
104+ " initialMutableDataState scoped" {
105+ lateinit var mutableDataState : MutableDataState <Int >
106+ createTestStateMachine(coroutineStarterType) {
107+ mutableDataState = initialMutableDataState<Int >(defaultData = 1) {
108+ onEntry { setData(0) }
109+ }
110+ }
111+ mutableDataState.data shouldBe 0
112+ }
113+
114+ " initialFinalMutableDataState" {
115+ val machine = createTestStateMachine(coroutineStarterType) {
116+ initialFinalMutableDataState<Int >(defaultData = 1)
117+ }
118+ machine.isFinished shouldBe true
119+ }
120+
121+ " initialFinalMutableDataState scoped" {
122+ val machine = createTestStateMachine(coroutineStarterType) {
123+ initialFinalMutableDataState<Int >(defaultData = 1) {
124+ onEntry { setData(0) }
125+ }
126+ }
127+ machine.isFinished shouldBe true
128+ }
129+
130+ " finalMutableDataState" {
131+ val machine = createTestStateMachine(coroutineStarterType) {
132+ val dataState = finalMutableDataState<Int >(defaultData = 1)
133+ initialState {
134+ dataTransition<IntEvent , Int > { targetState = dataState }
135+ }
136+ }
137+ machine.processEvent(IntEvent (0))
138+ machine.isFinished shouldBe true
139+ }
140+
141+ " finalMutableDataState scoped" {
142+ val machine = createTestStateMachine(coroutineStarterType) {
143+ val dataState = finalMutableDataState<Int >(defaultData = 1) {}
144+ initialState {
145+ dataTransition<IntEvent , Int > { targetState = dataState }
146+ }
147+ }
148+ machine.processEvent(IntEvent (0))
149+ machine.isFinished shouldBe true
150+ }
75151 }
76152 }
77153})
0 commit comments