1
- import XCTest
1
+ import Foundation
2
+ import Spectre
2
3
@testable import JSONSchema
3
4
4
5
@@ -17,114 +18,116 @@ fileprivate let document: [String: Any] = [
17
18
]
18
19
19
20
20
- class JSONPointerTests : XCTestCase {
21
+ public let testJSONPointer : ( ( ContextType ) -> Void ) = {
21
22
// Resolution (https://tools.ietf.org/html/rfc6901#section-5)
22
23
23
- func testResolveWholeDocument ( ) {
24
+ $0 . it ( " can resoleve entire document " ) {
24
25
let pointer = JSONPointer ( path: " " )
25
26
26
- XCTAssertEqual ( pointer. resolve ( document: document) as? NSDictionary , document as NSDictionary )
27
+ try expect ( pointer. resolve ( document: document) as? NSDictionary ) == document as NSDictionary
27
28
}
28
29
29
- func testResolveObjectValue ( ) {
30
+ $0 . it ( " can resolve object value " ) {
30
31
let pointer = JSONPointer ( path: " /foo " )
31
32
32
- XCTAssertEqual ( pointer. resolve ( document: document) as? [ String ] , [ " bar " , " baz " ] )
33
+ try expect ( pointer. resolve ( document: document) as? [ String ] ) == [ " bar " , " baz " ]
33
34
}
34
35
35
- func testResolveArrayIndex ( ) {
36
+ $0 . it ( " can resolve array index " ) {
36
37
let pointer = JSONPointer ( path: " /foo/0 " )
37
38
38
- XCTAssertEqual ( pointer. resolve ( document: document) as? String , " bar " )
39
+ try expect ( pointer. resolve ( document: document) as? String ) == " bar "
39
40
40
41
let pointer1 = JSONPointer ( path: " /foo/1 " )
41
42
42
- XCTAssertEqual ( pointer1. resolve ( document: document) as? String , " baz " )
43
+ try expect ( pointer1. resolve ( document: document) as? String ) == " baz "
43
44
}
44
45
45
- func testResolveObjectValueKeyEmptyString ( ) {
46
+ $0 . it ( " can resolve object value via empty key " ) {
46
47
let pointer = JSONPointer ( path: " / " )
47
48
48
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 0 )
49
+ try expect ( pointer. resolve ( document: document) as? Int ) == 0
49
50
}
50
51
51
- func testResolveObjectValueKeyEscapedForwardSlash ( ) {
52
+ $0 . it ( " can resolve object value with escaped slash in key " ) {
52
53
let pointer = JSONPointer ( path: " /a~1b " )
53
54
54
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 1 )
55
+ try expect ( pointer. resolve ( document: document) as? Int ) == 1
55
56
}
56
57
57
- func testResolveObjectValueKeyPercent ( ) {
58
+ $0 . it ( " can resolve object value with percent in key " ) {
58
59
let pointer = JSONPointer ( path: " /c%d " )
59
60
60
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 2 )
61
+ try expect ( pointer. resolve ( document: document) as? Int ) == 2
61
62
}
62
63
63
- func testResolveObjectValueKeyCarot ( ) {
64
+ $0 . it ( " can resolve object value with carot in key " ) {
64
65
let pointer = JSONPointer ( path: " /e^f " )
65
66
66
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 3 )
67
+ try expect ( pointer. resolve ( document: document) as? Int ) == 3
67
68
}
68
69
69
- func testResolveObjectValueKeyPipe ( ) {
70
+ $0 . it ( " can resolve object value with pipe in key " ) {
70
71
let pointer = JSONPointer ( path: " /g|h " )
71
72
72
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 4 )
73
+ try expect ( pointer. resolve ( document: document) as? Int ) == 4
73
74
}
74
75
75
- func testResolveObjectValueBackslace ( ) {
76
+ $0 . it ( " can resolve object value with backslash in key " ) {
76
77
let pointer = JSONPointer ( path: " /i \\ j " )
77
78
78
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 5 )
79
+ try expect ( pointer. resolve ( document: document) as? Int ) == 5
79
80
}
80
81
81
- func testResolveObjectValueDoubleQuote ( ) {
82
+ $0 . it ( " can resolve object value with double quote in key " ) {
82
83
let pointer = JSONPointer ( path: " /k \" l " )
83
84
84
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 6 )
85
+ try expect ( pointer. resolve ( document: document) as? Int ) == 6
85
86
}
86
87
87
- func testResolveObjectValueSpace ( ) {
88
+ $0 . it ( " can resolve object value with double space in key " ) {
88
89
let pointer = JSONPointer ( path: " / " )
89
90
90
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 7 )
91
+ try expect ( pointer. resolve ( document: document) as? Int ) == 7
91
92
}
92
93
93
- func testResolveObjectValueEscapedTilde ( ) {
94
+ $0 . it ( " can resolve object value with escaped tilde in key " ) {
94
95
let pointer = JSONPointer ( path: " /m~0n " )
95
96
96
- XCTAssertEqual ( pointer. resolve ( document: document) as? Int , 8 )
97
+ try expect ( pointer. resolve ( document: document) as? Int ) == 8
97
98
}
98
99
99
100
// Resolve (negative cases)
100
101
101
- func testResolveArrayIndexOutOfBounds ( ) {
102
+ $0 . it ( " can resolve out of bounds array index " ) {
102
103
let pointer = JSONPointer ( path: " /foo/2 " )
103
104
104
- XCTAssertNil ( pointer. resolve ( document: document) )
105
+ try expect ( pointer. resolve ( document: document) ) . to . beNil ( )
105
106
}
106
107
107
- func testResolveArrayIndexNegative ( ) {
108
+ $0 . it ( " can resolve negative array index " ) {
108
109
let pointer = JSONPointer ( path: " /foo/-1 " )
109
110
110
- XCTAssertNil ( pointer. resolve ( document: document) )
111
+ try expect ( pointer. resolve ( document: document) ) . to . beNil ( )
111
112
}
112
113
113
- func testResolveObjectMissingKey ( ) {
114
+ $0 . it ( " can resolve missing key in object " ) {
114
115
let pointer = JSONPointer ( path: " /test " )
115
116
116
- XCTAssertNil ( pointer. resolve ( document: document) )
117
+ try expect ( pointer. resolve ( document: document) ) . to . beNil ( )
117
118
}
118
119
119
120
// MARK: - #path
120
121
121
- func testPath( ) {
122
- let pointer = JSONPointer ( path: " /foo " )
123
- XCTAssertEqual ( pointer. path, " /foo " )
124
- }
122
+ $0. describe ( " #path " ) {
123
+ $0. it ( " returns a string representation of path " ) {
124
+ let pointer = JSONPointer ( path: " /foo " )
125
+ try expect ( pointer. path) == " /foo "
126
+ }
125
127
126
- func testPathWithSlash( ) {
127
- let pointer = JSONPointer ( path: " /a~1b " )
128
- XCTAssertEqual ( pointer. path, " /a~1b " )
128
+ $0. it ( " returns a string representation of path escaping slashes " ) {
129
+ let pointer = JSONPointer ( path: " /a~1b " )
130
+ try expect ( pointer. path) == " /a~1b "
131
+ }
129
132
}
130
133
}
0 commit comments