@@ -50,21 +50,48 @@ class ValidationTests: XCTestCase {
50
50
try Validator < Int > . range ( - 5 ... 5 ) . validate ( 4 )
51
51
try Validator < Int > . range ( - 5 ... 5 ) . validate ( 5 )
52
52
try Validator < Int > . range ( - 5 ... 5 ) . validate ( - 5 )
53
- XCTAssertThrowsError ( try Validator < Int > . range ( - 5 ... 5 ) . validate ( 6 ) )
54
- XCTAssertThrowsError ( try Validator < Int > . range ( - 5 ... 5 ) . validate ( - 6 ) )
53
+ XCTAssertThrowsError ( try Validator < Int > . range ( - 5 ... 5 ) . validate ( 6 ) ) { error in
54
+ XCTAssertEqual ( ( error as? ValidationError ) ? . reason, " data is greater than 5 " )
55
+ }
56
+ XCTAssertThrowsError ( try Validator < Int > . range ( - 5 ... 5 ) . validate ( - 6 ) ) { error in
57
+ XCTAssertEqual ( ( error as? ValidationError ) ? . reason, " data is less than -5 " )
58
+ }
55
59
56
60
try Validator < Int > . range ( 5 ... ) . validate ( . max)
57
61
58
- try Validator < Int > . range ( - 5 ... 5 ) . validate ( 4 )
59
- XCTAssertThrowsError ( try Validator < Int > . range ( - 5 ... 5 ) . validate ( 6 ) )
60
-
61
62
try Validator < Int > . range ( - 5 ..< 6 ) . validate ( - 5 )
62
63
try Validator < Int > . range ( - 5 ..< 6 ) . validate ( - 4 )
63
64
try Validator < Int > . range ( - 5 ..< 6 ) . validate ( 5 )
64
65
XCTAssertThrowsError ( try Validator < Int > . range ( - 5 ..< 6 ) . validate ( - 6 ) )
65
66
XCTAssertThrowsError ( try Validator < Int > . range ( - 5 ..< 6 ) . validate ( 6 ) )
66
67
}
67
68
69
+ func testCountCharacters( ) throws {
70
+ let validator = Validator< String> . count( 1 ... 6 )
71
+ try validator. validate ( " 1 " )
72
+ try validator. validate ( " 123 " )
73
+ try validator. validate ( " 123456 " )
74
+ XCTAssertThrowsError ( try validator. validate ( " " ) ) { error in
75
+ XCTAssertEqual ( ( error as? ValidationError ) ? . reason, " data is shorter than 1 character " )
76
+ }
77
+ XCTAssertThrowsError ( try validator. validate ( " 1234567 " ) ) { error in
78
+ XCTAssertEqual ( ( error as? ValidationError ) ? . reason, " data is longer than 6 characters " )
79
+ }
80
+ }
81
+
82
+ func testCountItems( ) throws {
83
+ let validator = Validator< [ Int] > . count( 1 ... 6 )
84
+ try validator. validate ( [ 1 ] )
85
+ try validator. validate ( [ 1 , 2 , 3 ] )
86
+ try validator. validate ( [ 1 , 2 , 3 , 4 , 5 , 6 ] )
87
+ XCTAssertThrowsError ( try validator. validate ( [ ] ) ) { error in
88
+ XCTAssertEqual ( ( error as? ValidationError ) ? . reason, " data is shorter than 1 item " )
89
+ }
90
+ XCTAssertThrowsError ( try validator. validate ( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ) ) { error in
91
+ XCTAssertEqual ( ( error as? ValidationError ) ? . reason, " data is longer than 6 items " )
92
+ }
93
+ }
94
+
68
95
func testURL( ) throws {
69
96
try Validator< String> . url. validate ( " https://www.somedomain.com/somepath.png " )
70
97
try Validator< String> . url. validate ( " https://www.somedomain.com/ " )
@@ -80,6 +107,8 @@ class ValidationTests: XCTestCase {
80
107
( " testEmpty " , testEmpty) ,
81
108
( " testEmail " , testEmail) ,
82
109
( " testRange " , testRange) ,
110
+ ( " testCountCharacters " , testCountCharacters) ,
111
+ ( " testCountItems " , testCountItems) ,
83
112
( " testURL " , testURL) ,
84
113
]
85
114
}
0 commit comments