 }
 
 
+// MARK:- CallHandler state `Verify` functionalities
+
+
+extension CallHandlerImpl {
+
+  private func verifyCall(ofFunction function: String, atFile file: String,
+                                     inLine line: UInt) {
+    let timesCalled = timesInvoked(function)
+    let calledOnly = invokedOnly(function)
+
+    let verificationData = VerificationData(build: {
+      $0.functionName = function
+      $0.calledOnly = calledOnly
+      $0.timesInvoked = timesCalled
+      $0.file = file
+      $0.line = line
+    })
+
+    verificationMode.verify(verificationData, mockFailer: mockFailer)
+  }
+
+  private func timesInvoked(function: String) -> Int {
+    guard let arguments = callHistory[function] else {
+      return 0
+    }
+
+    return arguments.count
+  }
+
+  private func invokedOnly(function: String) -> Bool {
+    guard let _ = callHistory[function] else {
+      return false
+    }
+
+    return callHistory.count == 1
+  }
+}
+
+
 // MARK:- CallHandler state `GetArgs` functionalities
 
 

  }

  public func verify(verificationMode mode: VerificationMode) {
    transtion(toState: .Verify)
  }


  
  private let mockFailer: MockFailer

  // this is the stub which is currenly being configured or called
  private var stub: Stub!
  private var stubs = [Stub]()
  
