Skip to content

Commit 62e5e1a

Browse files
committed
Merge pull request #21 from ReactKit/fix/canTryEvent
Fix #20 canTryEvent() bug.
2 parents 70c6cc0 + 90fab1f commit 62e5e1a

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

SwiftState/StateMachine.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ public class StateMachine<S: StateType, E: StateEventType>
302302
for validEvent in validEvents {
303303
if let transitionDict = self._routes[validEvent] {
304304
for (transition, routeKeyDict) in transitionDict {
305-
if transition.fromState == self.state {
305+
if transition.fromState == self.state || transition.fromState == nil {
306306
for (_, condition) in routeKeyDict {
307307
if self._canPassCondition(condition, transition: transition) {
308308
return transition.toState

SwiftStateTests/StateMachineEventTests.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,17 @@ class StateMachineEventTests: _TestCase
7575
XCTAssertFalse(success, "Event0 doesn't have 2 => Any")
7676
}
7777

78+
/// https://github.com/ReactKit/SwiftState/issues/20
79+
func testTryEvent_issue20()
80+
{
81+
let machine = StateMachine<MyState, MyEvent>(state: MyState.State2) { machine in
82+
machine.addRouteEvent(.Event0, transitions: [.AnyState => .State0])
83+
}
84+
85+
XCTAssertTrue(machine <-! .Event0)
86+
XCTAssertEqual(machine.state, MyState.State0)
87+
}
88+
7889
func testTryEvent_string()
7990
{
8091
let machine = StateMachine<MyState, String>(state: .State0)

0 commit comments

Comments
 (0)