-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathFailTests.swift
62 lines (53 loc) · 1.22 KB
/
FailTests.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import Parsing
import XCTest
final class FailTests: XCTestCase {
func testFailure() {
var input = "Hello, world!"[...]
XCTAssertThrowsError(try Fail<Substring, Int>().parse(&input)) { error in
XCTAssertEqual(
"""
error: failed
--> input:1:1
1 | Hello, world!
| ^
""",
"\(error)"
)
}
XCTAssertEqual("Hello, world!", input)
XCTAssertThrowsError(try Fail<Substring, Int>().print(42)) { error in
XCTAssertEqual(
"""
error: failed
A failing parser-printer attempted to print:
42
""",
"\(error)"
)
}
}
func testCustomError() {
struct MyError: Error {}
XCTAssertThrowsError(try Fail<Substring, Int>(throwing: MyError()).parse("Hello")) { error in
XCTAssertEqual(
"""
error: MyError()
--> input:1:1
1 | Hello
| ^
""",
"\(error)"
)
}
XCTAssertThrowsError(try Fail<Substring, Int>(throwing: MyError()).print(42)) { error in
XCTAssertEqual(
"""
error: MyError()
A failing parser-printer attempted to print:
42
""",
"\(error)"
)
}
}
}