@@ -27,6 +27,11 @@ import XCTest
27
27
28
28
29
29
class ParserTests : XCTestCase {
30
+ fileprivate let packageRootPath = URL ( fileURLWithPath: #file)
31
+ . pathComponents
32
+ . dropLast ( )
33
+ . joined ( separator: " / " )
34
+ . dropFirst ( )
30
35
31
36
override func setUp( ) {
32
37
super. setUp ( )
@@ -35,12 +40,15 @@ class ParserTests: XCTestCase {
35
40
override func tearDown( ) {
36
41
super. tearDown ( )
37
42
}
43
+
44
+ private func getPath( _ name: String ) -> String {
45
+ " \( packageRootPath) / \( name) "
46
+ }
38
47
39
48
func testSuccessParse( ) {
40
- guard let path = Bundle ( for: type ( of: self ) ) . path ( forResource: " XMLDocument " , ofType: " xml " ) ,
41
- let data = try ? Data ( contentsOf: URL ( fileURLWithPath: path) ) else {
42
- XCTFail ( " fail to parse " )
43
- return
49
+ guard let data = try ? Data ( contentsOf: URL ( fileURLWithPath: getPath ( " XMLDocument.xml " ) ) ) else {
50
+ XCTFail ( " fail to parse " )
51
+ return
44
52
}
45
53
46
54
let xml = XML . Parser ( ) . parse ( data)
@@ -54,10 +62,9 @@ class ParserTests: XCTestCase {
54
62
}
55
63
56
64
func testFailParse( ) {
57
- guard let path = Bundle ( for: type ( of: self ) ) . path ( forResource: " BrokenXMLDocument " , ofType: " xml " ) ,
58
- let data = try ? Data ( contentsOf: URL ( fileURLWithPath: path) ) else {
59
- XCTFail ( " fail to parse " )
60
- return
65
+ guard let data = try ? Data ( contentsOf: URL ( fileURLWithPath: getPath ( " BrokenXMLDocument.xml " ) ) ) else {
66
+ XCTFail ( " fail to parse " )
67
+ return
61
68
}
62
69
63
70
let xml = XML . Parser ( ) . parse ( data)
@@ -69,10 +76,9 @@ class ParserTests: XCTestCase {
69
76
}
70
77
71
78
func testTextParseWithMockData( ) {
72
- guard let path = Bundle ( for: type ( of: self ) ) . path ( forResource: " SimpleDocument " , ofType: " xml " ) ,
73
- let data = try ? Data ( contentsOf: URL ( fileURLWithPath: path) ) else {
74
- XCTFail ( " fail to parse " )
75
- return
79
+ guard let data = try ? Data ( contentsOf: URL ( fileURLWithPath: getPath ( " SimpleDocument.xml " ) ) ) else {
80
+ XCTFail ( " fail to parse " )
81
+ return
76
82
}
77
83
78
84
let xml = XML . Parser ( ) . parse ( data)
@@ -84,10 +90,9 @@ class ParserTests: XCTestCase {
84
90
}
85
91
86
92
func testWhitespaceParseWithMockData( ) {
87
- guard let path = Bundle ( for: type ( of: self ) ) . path ( forResource: " SimpleDocument " , ofType: " xml " ) ,
88
- let data = try ? Data ( contentsOf: URL ( fileURLWithPath: path) ) else {
89
- XCTFail ( " fail to parse " )
90
- return
93
+ guard let data = try ? Data ( contentsOf: URL ( fileURLWithPath: getPath ( " SimpleDocument.xml " ) ) ) else {
94
+ XCTFail ( " fail to parse " )
95
+ return
91
96
}
92
97
93
98
let xml = XML . Parser ( ) . parse ( data)
@@ -99,10 +104,9 @@ class ParserTests: XCTestCase {
99
104
}
100
105
101
106
func testReturnParseWithMockData( ) {
102
- guard let path = Bundle ( for: type ( of: self ) ) . path ( forResource: " SimpleDocument " , ofType: " xml " ) ,
103
- let data = try ? Data ( contentsOf: URL ( fileURLWithPath: path) ) else {
104
- XCTFail ( " fail to parse " )
105
- return
107
+ guard let data = try ? Data ( contentsOf: URL ( fileURLWithPath: getPath ( " SimpleDocument.xml " ) ) ) else {
108
+ XCTFail ( " fail to parse " )
109
+ return
106
110
}
107
111
108
112
let xml = XML . Parser ( ) . parse ( data)
@@ -114,10 +118,9 @@ class ParserTests: XCTestCase {
114
118
}
115
119
116
120
func testWhitespaceAndReturnParseWithMockData( ) {
117
- guard let path = Bundle ( for: type ( of: self ) ) . path ( forResource: " SimpleDocument " , ofType: " xml " ) ,
118
- let data = try ? Data ( contentsOf: URL ( fileURLWithPath: path) ) else {
119
- XCTFail ( " fail to parse " )
120
- return
121
+ guard let data = try ? Data ( contentsOf: URL ( fileURLWithPath: getPath ( " SimpleDocument.xml " ) ) ) else {
122
+ XCTFail ( " fail to parse " )
123
+ return
121
124
}
122
125
123
126
let xml = XML . Parser ( ) . parse ( data)
@@ -130,10 +133,9 @@ class ParserTests: XCTestCase {
130
133
}
131
134
132
135
func testWhitespaceAndReturnParseWithMockDataAndTrimmingWhitespaceAndLineBreak( ) {
133
- guard let path = Bundle ( for: type ( of: self ) ) . path ( forResource: " SimpleDocument " , ofType: " xml " ) ,
134
- let data = try ? Data ( contentsOf: URL ( fileURLWithPath: path) ) else {
135
- XCTFail ( " fail to parse " )
136
- return
136
+ guard let data = try ? Data ( contentsOf: URL ( fileURLWithPath: getPath ( " SimpleDocument.xml " ) ) ) else {
137
+ XCTFail ( " fail to parse " )
138
+ return
137
139
}
138
140
139
141
let xml = XML . Parser ( trimming: . whitespacesAndNewlines) . parse ( data)
@@ -160,4 +162,19 @@ class ParserTests: XCTestCase {
160
162
let xml = XML . Parser ( ) . parse ( str. data ( using: . utf8) !)
161
163
XCTAssertEqual ( " @ß123 \u{1c} " , xml [ " xmlopening " ] . text? . removingPercentEncoding, " Parsed Success and trim them " )
162
164
}
165
+
166
+ func testLineNumbers( ) {
167
+ guard let data = try ? Data ( contentsOf: URL ( fileURLWithPath: getPath ( " SimpleDocument.xml " ) ) ) else {
168
+ XCTFail ( " fail to parse " )
169
+ return
170
+ }
171
+
172
+ let xml = XML . Parser ( ) . parse ( data)
173
+ guard let whitespaceReturnElement = xml [ " Result " ] [ " WhitespaceReturn " ] . element else {
174
+ XCTFail ( " Element not found " )
175
+ return
176
+ }
177
+ XCTAssertEqual ( whitespaceReturnElement. lineNumberStart, 4 )
178
+ XCTAssertEqual ( whitespaceReturnElement. lineNumberEnd, 6 )
179
+ }
163
180
}
0 commit comments