@@ -27,6 +27,9 @@ class ValidatorTests: XCTestCase {
2727 let VALID_PASSWORD = " Super$ecret "
2828 let INVALID_PASSWORD = " abc "
2929
30+ let VALID_FLOAT = " 1234.444 "
31+ let INVALID_FLOAT = " 1234.44.44 "
32+
3033 let LEN_3 = " hey "
3134 let LEN_5 = " Howdy "
3235 let LEN_20 = " Paint the cat orange "
@@ -42,6 +45,8 @@ class ValidatorTests: XCTestCase {
4245 let UNREGISTER_ERRORS_TXT_FIELD = UITextField ( )
4346 let UNREGISTER_ERRORS_VALIDATOR = Validator ( )
4447
48+ let ERROR_LABEL = UILabel ( )
49+
4550 override func setUp( ) {
4651 super. setUp ( )
4752 // Put setup code here. This method is called before the invocation of each test method in the class.
@@ -92,6 +97,17 @@ class ValidatorTests: XCTestCase {
9297 XCTAssertFalse ( EmailRule ( ) . validate ( INVALID_EMAIL) , " Email should be invalid " )
9398 }
9499
100+ // MARK: Float
101+
102+ func testFloat( ) {
103+ XCTAssert ( FloatRule ( ) . validate ( VALID_FLOAT) , " Float should be valid " )
104+ }
105+
106+ func testFloatInvalid( ) {
107+ XCTAssert ( !FloatRule( ) . validate ( INVALID_FLOAT) , " Float should be invalid " )
108+ XCTAssert ( !FloatRule( ) . validate ( VALID_EMAIL) , " Float should be invalid " )
109+ }
110+
95111 // MARK: Confirm against field
96112
97113 func testConfirmSame( ) {
@@ -193,4 +209,65 @@ class ValidatorTests: XCTestCase {
193209 XCTAssert ( errors. count == 1 , " Should come back with 1 error " )
194210 }
195211 }
212+
213+ // MARK: Validate error field gets it's text set to the error, if supplied
214+
215+ func testNoErrorMessageSet( ) {
216+ REGISTER_VALIDATOR . registerField ( REGISTER_TXT_FIELD, errorLabel: ERROR_LABEL, rules: [ EmailRule ( ) ] )
217+ REGISTER_TXT_FIELD . text = VALID_EMAIL
218+ REGISTER_VALIDATOR . validate { ( errors) -> Void in
219+ XCTAssert ( errors. count == 0 , " Should not come back with errors " )
220+ }
221+ }
222+
223+ func testErrorMessageSet( ) {
224+ REGISTER_VALIDATOR . registerField ( REGISTER_TXT_FIELD, errorLabel: ERROR_LABEL, rules: [ EmailRule ( ) ] )
225+ var successCount = 0
226+ var errorCount = 0
227+ REGISTER_VALIDATOR . styleTransformers ( success: { ( validationRule) -> Void in
228+ successCount++
229+ } ) { ( validationError) -> Void in
230+ errorCount++
231+ }
232+ REGISTER_TXT_FIELD . text = INVALID_EMAIL
233+ REGISTER_VALIDATOR . validate { ( errors) -> Void in
234+ XCTAssert ( errors. count == 1 , " Should come back with errors " )
235+ XCTAssert ( errorCount == 1 , " Should have called the error style transform once " )
236+ XCTAssert ( successCount == 0 , " Should not have called the success style transform as there are no successful fields " )
237+ }
238+ }
239+
240+ func testErrorMessageSetAndThenUnset( ) {
241+ REGISTER_VALIDATOR . registerField ( REGISTER_TXT_FIELD, errorLabel: ERROR_LABEL, rules: [ EmailRule ( ) ] )
242+
243+ var successCount = 0
244+ var errorCount = 0
245+ REGISTER_VALIDATOR . styleTransformers ( success: { ( validationRule) -> Void in
246+ successCount++
247+ } ) { ( validationError) -> Void in
248+ errorCount++
249+ }
250+
251+ REGISTER_TXT_FIELD . text = INVALID_EMAIL
252+ REGISTER_VALIDATOR . validate { ( errors) -> Void in
253+ XCTAssert ( errors. count == 1 , " Should come back with errors " )
254+ XCTAssert ( errorCount == 1 , " Should have called the error style transform once " )
255+ XCTAssert ( successCount == 0 , " Should not have called the success style transform as there are no successful fields " )
256+ self . REGISTER_TXT_FIELD. text = self . VALID_EMAIL
257+ self . REGISTER_VALIDATOR. validate { ( errors) -> Void in
258+ XCTAssert ( errors. count == 0 , " Should not come back with errors: \( errors) " )
259+ XCTAssert ( successCount == 1 , " Should have called the success style transform once " )
260+ XCTAssert ( errorCount == 1 , " Should not have called the error style transform again " )
261+ }
262+ }
263+ }
264+
265+ func testTextFieldBorderColorNotSet( ) {
266+ REGISTER_VALIDATOR . registerField ( REGISTER_TXT_FIELD, errorLabel: ERROR_LABEL, rules: [ EmailRule ( ) ] )
267+ REGISTER_TXT_FIELD . text = INVALID_EMAIL
268+ REGISTER_VALIDATOR . validate { ( errors) -> Void in
269+ XCTAssert ( errors. count == 1 , " Should come back with errors " )
270+ XCTAssert ( !CGColorEqualToColor( self . REGISTER_TXT_FIELD. layer. borderColor, UIColor . redColor ( ) . CGColor) , " Color shouldn't get set at all " )
271+ }
272+ }
196273}
0 commit comments