@@ -27,6 +27,9 @@ class ValidatorTests: XCTestCase {
27
27
let VALID_PASSWORD = " Super$ecret "
28
28
let INVALID_PASSWORD = " abc "
29
29
30
+ let VALID_FLOAT = " 1234.444 "
31
+ let INVALID_FLOAT = " 1234.44.44 "
32
+
30
33
let LEN_3 = " hey "
31
34
let LEN_5 = " Howdy "
32
35
let LEN_20 = " Paint the cat orange "
@@ -42,6 +45,8 @@ class ValidatorTests: XCTestCase {
42
45
let UNREGISTER_ERRORS_TXT_FIELD = UITextField ( )
43
46
let UNREGISTER_ERRORS_VALIDATOR = Validator ( )
44
47
48
+ let ERROR_LABEL = UILabel ( )
49
+
45
50
override func setUp( ) {
46
51
super. setUp ( )
47
52
// 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 {
92
97
XCTAssertFalse ( EmailRule ( ) . validate ( INVALID_EMAIL) , " Email should be invalid " )
93
98
}
94
99
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
+
95
111
// MARK: Confirm against field
96
112
97
113
func testConfirmSame( ) {
@@ -193,4 +209,65 @@ class ValidatorTests: XCTestCase {
193
209
XCTAssert ( errors. count == 1 , " Should come back with 1 error " )
194
210
}
195
211
}
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
+ }
196
273
}
0 commit comments