From c9ac9ca5671550d9c7626ac62f67ddaef862cac7 Mon Sep 17 00:00:00 2001 From: Walter Scarborough Date: Thu, 27 Oct 2016 23:03:48 +0900 Subject: [PATCH] Implemented stop() and added valid() to check if repeater is running --- .../Components/Repeater/DefaultRepeater.swift | 17 +++++++--- .../Repeater/DefaultRepeaterTest.swift | 33 +++++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/TDDTimer/Components/Repeater/DefaultRepeater.swift b/TDDTimer/Components/Repeater/DefaultRepeater.swift index fdf1d63..a15c5b4 100644 --- a/TDDTimer/Components/Repeater/DefaultRepeater.swift +++ b/TDDTimer/Components/Repeater/DefaultRepeater.swift @@ -6,11 +6,11 @@ protocol Repeater { } class DefaultRepeater: Repeater { - var timer: NSTimer? - var closureToRepeat: (() -> ())? + private var maybeTimer: NSTimer? + private var closureToRepeat: (() -> ())? func start(timeInterval: NSTimeInterval, closureToRepeat: (() -> ())?) { - timer = NSTimer.scheduledTimerWithTimeInterval( + maybeTimer = NSTimer.scheduledTimerWithTimeInterval( timeInterval, target: self, selector: #selector(timerInvocation), @@ -22,7 +22,16 @@ class DefaultRepeater: Repeater { } func stop() { - // TODO + maybeTimer?.invalidate() + } + + func valid() -> Bool { + + if let timer = maybeTimer { + return timer.valid + } + + return false } // MARK: - Private Methods diff --git a/TDDTimerTests/Components/Repeater/DefaultRepeaterTest.swift b/TDDTimerTests/Components/Repeater/DefaultRepeaterTest.swift index 478aaa2..41762e7 100644 --- a/TDDTimerTests/Components/Repeater/DefaultRepeaterTest.swift +++ b/TDDTimerTests/Components/Repeater/DefaultRepeaterTest.swift @@ -22,6 +22,39 @@ class DefaultRepeaterTest: QuickSpec { expect(closureWasCalled).to(beTrue()) } + it("reports valid status when running") { + let defaultRepeater = DefaultRepeater() + + + var isValid = false + defaultRepeater.start(0.01) { + isValid = defaultRepeater.valid() + } + + + NSRunLoop.advance() + + expect(isValid).to(beTrue()) + } + + it("reports invalid status when not running") { + let defaultRepeater = DefaultRepeater() + + expect(defaultRepeater.valid()).to(beFalse()) + } + + it("stops running after calling stop") { + let defaultRepeater = DefaultRepeater() + + + defaultRepeater.start(0.01) {} + NSRunLoop.advance() + defaultRepeater.stop() + + + expect(defaultRepeater.valid()).to(beFalse()) + } + } } }