         
         XCTAssertTrue(testValue == finalTestValue)
     }
+    
+    func testSuspendAndResume() {
+        let queue = DispatchQueue.Background
+        var testValue = 0
+        
+        let timer = DispatchTimer()
+        timer.schedule(queue, interval: 0.25) {
+            testValue += 1
+        }
+        
+        self.waitForConditionsWithTimeout(1) { () -> Bool in
+            return false
+        }
+        
+        XCTAssertTrue(testValue > 3)
+        
+        let preSuspendTestValue = testValue
+        
+        timer.suspend()
+        XCTAssertTrue(timer.suspended)
+        
+        self.waitForConditionsWithTimeout(0.5) { () -> Bool in
+            return false
+        }
+        
+        XCTAssertTrue(testValue == preSuspendTestValue)
+        timer.resume()
+        
+        self.waitForConditionsWithTimeout(0.5) { () -> Bool in
+            return false
+        }
+        
+        XCTAssertTrue(testValue > preSuspendTestValue)
+    }
 }

        self.waitForExpectationsWithTimeout(10, handler: nil)
    }

    func testScheduleSuspended() {
        let expectation = self.expectationWithDescription("timer fired")
        let queue = DispatchQueue.Background
        let timer = DispatchTimer()

        XCTAssertTrue(testValue > 3)
    }
    
    func testCancel() {
        let queue = DispatchQueue.Background
        var testValue = 0
        
