-
Notifications
You must be signed in to change notification settings - Fork 554
Expand file tree
/
Copy pathSwifterTestsHttpResponseBody.swift
More file actions
58 lines (47 loc) · 1.94 KB
/
SwifterTestsHttpResponseBody.swift
File metadata and controls
58 lines (47 loc) · 1.94 KB
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
//
// SwifterTestsHttpResponseBody.swift
// Swifter
//
import XCTest
@testable import Swifter
class SwifterTestsHttpResponseBody: XCTestCase {
func testDictionaryAsJSONPayload() {
verify(input: ["key": "value"], output: "{\"key\":\"value\"}")
verify(input: ["key": ["value1", "value2", "value3"]], output: "{\"key\":[\"value1\",\"value2\",\"value3\"]}")
}
func testArrayAsJSONPayload() {
verify(input: ["key", "value"], output: "[\"key\",\"value\"]")
verify(input: ["value1", "value2", "value3"], output: "[\"value1\",\"value2\",\"value3\"]")
}
func testNSDictionaryAsJSONPayload() {
verify(input: ["key": "value"] as NSDictionary, output: "{\"key\":\"value\"}")
verify(input: ["key": ["value1", "value2", "value3"]] as NSDictionary, output: "{\"key\":[\"value1\",\"value2\",\"value3\"]}")
}
func testNSArrayAsJSONPayload() {
verify(input: ["key", "value"] as NSArray, output: "[\"key\",\"value\"]")
verify(input: ["value1", "value2", "value3"] as NSArray, output: "[\"value1\",\"value2\",\"value3\"]")
}
private func verify(input: Any, output expectedOutput: String, line: UInt = #line) {
let response: HttpResponseBody = .json(input)
guard let writer = response.content().1 else {
XCTFail(line: line)
return
}
do {
let mockWriter = MockWriter()
try writer(mockWriter)
let output = String(decoding: mockWriter.data, as: UTF8.self)
XCTAssertEqual(output, expectedOutput, line: line)
} catch {
XCTFail(line: line)
}
}
}
private class MockWriter: HttpResponseBodyWriter {
var data = Data()
func write(_ file: String.File) throws { }
func write(_ data: [UInt8]) throws { }
func write(_ data: ArraySlice<UInt8>) throws { }
func write(_ data: NSData) throws { }
func write(_ data: Data) throws { self.data = data }
}