From 6e831f94a05b3f2fa575cf543fe777c23e825555 Mon Sep 17 00:00:00 2001 From: Yuki Nagai Date: Wed, 21 Sep 2016 12:25:50 +0900 Subject: [PATCH] Fix: Multiple Rules. (#5) --- AIRValidator.xcodeproj/project.pbxproj | 14 ++++++++++++++ Source/Extensions/Validatable.swift | 2 +- Tests/Extensions/ValidatableTests.swift | 18 ++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 Tests/Extensions/ValidatableTests.swift diff --git a/AIRValidator.xcodeproj/project.pbxproj b/AIRValidator.xcodeproj/project.pbxproj index 94bd334..4096aeb 100644 --- a/AIRValidator.xcodeproj/project.pbxproj +++ b/AIRValidator.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ BF31F26E1D7D6EC900CB2343 /* MinimumLengthRuleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF31F26B1D7D6EC900CB2343 /* MinimumLengthRuleTests.swift */; }; BF31F26F1D7D6EC900CB2343 /* RequiredRuleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF31F26C1D7D6EC900CB2343 /* RequiredRuleTests.swift */; }; BF31F2731D7D740900CB2343 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF31F2721D7D740900CB2343 /* Result.swift */; }; + BFD924AC1D922F6500DBB071 /* ValidatableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD924AB1D922F6500DBB071 /* ValidatableTests.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -45,6 +46,7 @@ BF31F26B1D7D6EC900CB2343 /* MinimumLengthRuleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MinimumLengthRuleTests.swift; sourceTree = ""; }; BF31F26C1D7D6EC900CB2343 /* RequiredRuleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequiredRuleTests.swift; sourceTree = ""; }; BF31F2721D7D740900CB2343 /* Result.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Result.swift; sourceTree = ""; }; + BFD924AB1D922F6500DBB071 /* ValidatableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ValidatableTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -117,6 +119,7 @@ BF31F2581D7D6EB100CB2343 /* Tests */ = { isa = PBXGroup; children = ( + BFD924AA1D922F4E00DBB071 /* Extensions */, BF31F2691D7D6EC900CB2343 /* Rules */, ); name = Tests; @@ -152,6 +155,14 @@ path = Rules; sourceTree = ""; }; + BFD924AA1D922F4E00DBB071 /* Extensions */ = { + isa = PBXGroup; + children = ( + BFD924AB1D922F6500DBB071 /* ValidatableTests.swift */, + ); + path = Extensions; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -276,6 +287,7 @@ buildActionMask = 2147483647; files = ( BF31F26D1D7D6EC900CB2343 /* MaximumLengthRuleTests.swift in Sources */, + BFD924AC1D922F6500DBB071 /* ValidatableTests.swift in Sources */, BF31F26F1D7D6EC900CB2343 /* RequiredRuleTests.swift in Sources */, BF31F26E1D7D6EC900CB2343 /* MinimumLengthRuleTests.swift in Sources */, ); @@ -466,6 +478,7 @@ BF31F2511D7D6DE900CB2343 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; BF31F2521D7D6DE900CB2343 /* Build configuration list for PBXNativeTarget "AIRValidatorTests" */ = { isa = XCConfigurationList; @@ -474,6 +487,7 @@ BF31F2541D7D6DE900CB2343 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/Source/Extensions/Validatable.swift b/Source/Extensions/Validatable.swift index fde5c4c..52312cb 100644 --- a/Source/Extensions/Validatable.swift +++ b/Source/Extensions/Validatable.swift @@ -27,7 +27,7 @@ public protocol Validatable { } extension Validatable { - public func validate(_ rules: [T]) -> Result { + public func validate(_ rules: [Rule]) -> Result { let errors = rules.filter { !$0.validate(self) } if errors.isEmpty { return .valid diff --git a/Tests/Extensions/ValidatableTests.swift b/Tests/Extensions/ValidatableTests.swift new file mode 100644 index 0000000..a7028ff --- /dev/null +++ b/Tests/Extensions/ValidatableTests.swift @@ -0,0 +1,18 @@ +// +// ValidatableTests.swift +// AIRValidator +// +// Created by Yuki Nagai on 9/21/16. +// Copyright © 2016 Recruit Lifestyle Co., Ltd. All rights reserved. +// + +import XCTest +@testable import AIRValidator + +final class ValidatableTests: XCTestCase { + func testMultipleRules() { + let string = "string" + let rules = [MinimumLengthRule(1), RequiredRule()] as [Rule] + _ = string.validate(rules) + } +}