From 886ba1d4d2734cd1b102ec6d1b2d505467979a68 Mon Sep 17 00:00:00 2001 From: Mark Aufflick Date: Wed, 10 May 2017 09:36:09 +1000 Subject: [PATCH 1/2] Updated tests to pass under Swift 3 --- StateMachineTests/StateMachineSpec.swift | 82 ++++++++++++------------ 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/StateMachineTests/StateMachineSpec.swift b/StateMachineTests/StateMachineSpec.swift index 2c3d51f..90c64f4 100644 --- a/StateMachineTests/StateMachineSpec.swift +++ b/StateMachineTests/StateMachineSpec.swift @@ -75,25 +75,25 @@ class StateMachineSpec: QuickSpec { beforeEach { keeper = NumberKeeper(n: 1) - - let schema: StateMachineSchema = StateMachineSchema(initialState: .One) { (state, event) in + + let schema = StateMachineSchema(initialState: .one) { (state, event) in let decrement: (NumberKeeper) -> () = { _ in keeper.n -= 1 } let increment: (NumberKeeper) -> () = { _ in keeper.n += 1 } switch state { - case .One: switch event { - case .Decrement: return nil - case .Increment: return (.Two, increment) + case .one: switch event { + case .decrement: return nil + case .increment: return (.two, increment) } - case .Two: switch event { - case .Decrement: return (.One, decrement) - case .Increment: return (.Three, increment) + case .two: switch event { + case .decrement: return (.one, decrement) + case .increment: return (.three, increment) } - case .Three: switch event { - case .Decrement: return (.Two, decrement) - case .Increment: return nil + case .three: switch event { + case .decrement: return (.two, decrement) + case .increment: return nil } } } @@ -103,28 +103,28 @@ class StateMachineSpec: QuickSpec { it("can be associated with a subject") { expect(keeper.n) == 1 - keeperMachine.handleEvent(.Increment) + keeperMachine.handleEvent(.increment) expect(keeper.n) == 2 } it("doesn't have to be associated with a subject") { let machine = createSimpleMachine() - expect(machine.state) == SimpleState.S1 - machine.handleEvent(.E) - expect(machine.state) == SimpleState.S2 + expect(machine.state) == SimpleState.s1 + machine.handleEvent(.e) + expect(machine.state) == SimpleState.s2 } it("changes state on correct event") { - expect(keeperMachine.state) == Number.One - keeperMachine.handleEvent(.Increment) - expect(keeperMachine.state) == Number.Two + expect(keeperMachine.state) == Number.one + keeperMachine.handleEvent(.increment) + expect(keeperMachine.state) == Number.two } it("doesn't change state on ignored event") { - expect(keeperMachine.state) == Number.One - keeperMachine.handleEvent(.Decrement) - expect(keeperMachine.state) == Number.One + expect(keeperMachine.state) == Number.one + keeperMachine.handleEvent(.decrement) + expect(keeperMachine.state) == Number.one } it("executes transition block on transition") { @@ -133,7 +133,7 @@ class StateMachineSpec: QuickSpec { let machine = createSimpleMachine(forward: { didExecuteBlock = true }) expect(didExecuteBlock) == false - machine.handleEvent(.E) + machine.handleEvent(.e) expect(didExecuteBlock) == true } @@ -142,20 +142,20 @@ class StateMachineSpec: QuickSpec { var callbackWasCalledCorrectly = false machine.didTransitionCallback = { (oldState: SimpleState, event: SimpleEvent, newState: SimpleState) in - callbackWasCalledCorrectly = oldState == .S1 && event == .E && newState == .S2 + callbackWasCalledCorrectly = oldState == .s1 && event == .e && newState == .s2 } - machine.handleEvent(.E) + machine.handleEvent(.e) expect(callbackWasCalledCorrectly) == true } it("can trigger transition from within transition") { let subject = Subject(schema: createSimpleSchema(forward: { - $0.machine.handleEvent(.E) + $0.machine.handleEvent(.e) })) - subject.machine.handleEvent(.E) - expect(subject.machine.state) == SimpleState.S1 + subject.machine.handleEvent(.e) + expect(subject.machine.state) == SimpleState.s1 } it("doesn't cause machine-subject reference cycles") { @@ -164,7 +164,7 @@ class StateMachineSpec: QuickSpec { init() { machine = StateMachine( - schema: StateMachineSchema(initialState: .S1) { _ in nil }, + schema: StateMachineSchema(initialState: .s1) { _ in nil }, subject: self) } } @@ -179,32 +179,32 @@ class StateMachineSpec: QuickSpec { describe("Graphable State Machine") { it("has representation in DOT format") { - let schema: GraphableStateMachineSchema = GraphableStateMachineSchema(initialState: .One) { (state, event) in + let schema: GraphableStateMachineSchema = GraphableStateMachineSchema(initialState: .one) { (state, event) in switch state { - case .One: switch event { - case .Decrement: return nil - case .Increment: return (.Two, nil) + case .one: switch event { + case .decrement: return nil + case .increment: return (.two, nil) } - case .Two: switch event { - case .Decrement: return (.One, nil) - case .Increment: return (.Three, nil) + case .two: switch event { + case .decrement: return (.one, nil) + case .increment: return (.three, nil) } - case .Three: switch event { - case .Decrement: return (.Two, nil) - case .Increment: return nil + case .three: switch event { + case .decrement: return (.two, nil) + case .increment: return nil } } } - expect(schema.DOTDigraph) == "digraph {\n graph [rankdir=LR]\n\n 0 [label=\"\", shape=plaintext]\n 0 -> 1 [label=\"START\"]\n\n 1 [label=\"One\"]\n 2 [label=\"Two\"]\n 3 [label=\"Three\"]\n\n 1 -> 2 [label=\"Increment\"]\n 2 -> 3 [label=\"Increment\"]\n 2 -> 1 [label=\"Decrement\"]\n 3 -> 2 [label=\"Decrement\"]\n}" + expect(schema.DOTDigraph) == "digraph {\n graph [rankdir=LR]\n\n 0 [label=\"\", shape=plaintext]\n 0 -> 1 [label=\"START\"]\n\n 1 [label=\"one\"]\n 2 [label=\"two\"]\n 3 [label=\"three\"]\n\n 1 -> 2 [label=\"increment\"]\n 2 -> 3 [label=\"increment\"]\n 2 -> 1 [label=\"decrement\"]\n 3 -> 2 [label=\"decrement\"]\n}" } it("escapes double quotes in labels") { - let schema = GraphableStateMachineSchema(initialState: .S) { _ in - (.S, nil) + let schema = GraphableStateMachineSchema(initialState: .s) { _ in + (.s, nil) } expect(schema.DOTDigraph) == "digraph {\n graph [rankdir=LR]\n\n 0 [label=\"\", shape=plaintext]\n 0 -> 1 [label=\"START\"]\n\n 1 [label=\"An \\\"awesome\\\" state\"]\n\n 1 -> 1 [label=\"An \\\"awesome\\\" event\"]\n}" From 445f130ca6fc9b4b2fa9316291d3a52b7a15d7a9 Mon Sep 17 00:00:00 2001 From: Mark Aufflick Date: Wed, 10 May 2017 09:50:58 +1000 Subject: [PATCH 2/2] Updated SWIFT_VERSION for Mac targets --- SwiftyStateMachine.xcodeproj/project.pbxproj | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/SwiftyStateMachine.xcodeproj/project.pbxproj b/SwiftyStateMachine.xcodeproj/project.pbxproj index 120e655..f02e812 100644 --- a/SwiftyStateMachine.xcodeproj/project.pbxproj +++ b/SwiftyStateMachine.xcodeproj/project.pbxproj @@ -327,9 +327,11 @@ }; CBE36D081AC44BA000CFE10F = { CreatedOnToolsVersion = 6.3; + LastSwiftMigration = 0830; }; CBE36D121AC44BA000CFE10F = { CreatedOnToolsVersion = 6.3; + LastSwiftMigration = 0830; }; }; }; @@ -629,6 +631,7 @@ PRODUCT_NAME = SwiftyStateMachine; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -649,6 +652,7 @@ PRODUCT_NAME = SwiftyStateMachine; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; }; name = Release; }; @@ -672,6 +676,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "net.macoscope.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = SwiftyStateMachineTests; SDKROOT = macosx; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -690,6 +695,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "net.macoscope.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = SwiftyStateMachineTests; SDKROOT = macosx; + SWIFT_VERSION = 3.0; }; name = Release; };