 
 extension ValidatorTests {
     
+    func testThatItValidatesAnyToValid() {
+        let predicate = MockValidatorPredicate()
+        validator.add(predicate: predicate, message: "Input should be nil")
+     
+        switch validator.evaluateAny(input: nil) {
+        case .valid:
+            XCTAssert(true)
+        default:
+            XCTFail()
+        }
+    }
+    
+    func testThatItValidatesAnyToInvalid() {
+        let predicate = MockValidatorPredicate()
+        validator.add(predicate: predicate, message: "Input should be nil")
+        
+        switch validator.evaluateAny(input: "") {
+        case .invalid:
+            XCTAssert(true)
+        default:
+            XCTFail()
+        }
+    }
+    
+    func testThatItValidatesAll() {
+        let predicate = MockValidatorPredicate()
+        validator.add(predicate: predicate, message: "Input should be nil")
+        validator.add(predicate: predicate, message: "Input should be nil twice")
+        
+        let result = validator.evaluateAll(input: nil)
+        XCTAssertEqual(result.count, 2)
+    }
+}
+
+extension ValidatorTests {
+    
     static var allTests : [(String, (ValidatorTests) -> () throws -> Void)] {
         return [
             ("testThatItCanBeInstantiated", testThatItCanBeInstantiated),

    func testThatAfterInitItHasNoConstraints() {
        XCTAssertEqual(validator.constraints.count, 0)
    }
    
    func testThatCanAddValidationConstraint() {
        

        validator = nil
        super.tearDown()
    }
}

extension ValidatorTests {
    
    func testThatItCanBeInstantiated() {
        XCTAssertNotNil(validator)
    }
