1
0

SwifterTestsHttpResponseBody.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //
  2. // SwifterTestsHttpResponseBody.swift
  3. // Swifter
  4. //
  5. import XCTest
  6. @testable import Swifter
  7. class SwifterTestsHttpResponseBody: XCTestCase {
  8. func testDictionaryAsJSONPayload() {
  9. verify(input: ["key": "value"], output: "{\"key\":\"value\"}")
  10. verify(input: ["key": ["value1", "value2", "value3"]], output: "{\"key\":[\"value1\",\"value2\",\"value3\"]}")
  11. }
  12. func testArrayAsJSONPayload() {
  13. verify(input: ["key", "value"], output: "[\"key\",\"value\"]")
  14. verify(input: ["value1", "value2", "value3"], output: "[\"value1\",\"value2\",\"value3\"]")
  15. }
  16. func testNSDictionaryAsJSONPayload() {
  17. verify(input: ["key": "value"] as NSDictionary, output: "{\"key\":\"value\"}")
  18. verify(input: ["key": ["value1", "value2", "value3"]] as NSDictionary, output: "{\"key\":[\"value1\",\"value2\",\"value3\"]}")
  19. }
  20. func testNSArrayAsJSONPayload() {
  21. verify(input: ["key", "value"] as NSArray, output: "[\"key\",\"value\"]")
  22. verify(input: ["value1", "value2", "value3"] as NSArray, output: "[\"value1\",\"value2\",\"value3\"]")
  23. }
  24. private func verify(input: Any, output expectedOutput: String, line: UInt = #line) {
  25. let response: HttpResponseBody = .json(input)
  26. guard let writer = response.content().1 else {
  27. XCTFail(line: line)
  28. return
  29. }
  30. do {
  31. let mockWriter = MockWriter()
  32. try writer(mockWriter)
  33. let output = String(decoding: mockWriter.data, as: UTF8.self)
  34. XCTAssertEqual(output, expectedOutput, line: line)
  35. } catch {
  36. XCTFail(line: line)
  37. }
  38. }
  39. }
  40. private class MockWriter: HttpResponseBodyWriter {
  41. var data = Data()
  42. func write(_ file: String.File) throws { }
  43. func write(_ data: [UInt8]) throws { }
  44. func write(_ data: ArraySlice<UInt8>) throws { }
  45. func write(_ data: NSData) throws { }
  46. func write(_ data: Data) throws { self.data = data }
  47. }