| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- //
- // JSONStreamEncoderTests.swift
- // LoopKitTests
- //
- // Created by Darin Krauss on 8/26/20.
- // Copyright © 2020 LoopKit Authors. All rights reserved.
- //
- import XCTest
- import LoopKit
- class JSONStreamEncoderTests: XCTestCase {
- var outputStream: MockOutputStream!
- var encoder: JSONStreamEncoder!
- override func setUp() {
- outputStream = MockOutputStream()
- encoder = JSONStreamEncoder(stream: outputStream)
- }
- func testEmpty() {
- XCTAssertNil(encoder.close())
- XCTAssertEqual(outputStream.string, "[]")
- }
- func testMultipleClose() {
- XCTAssertNil(encoder.close())
- XCTAssertNil(encoder.close())
- }
- func testCloseError() {
- let mockError = MockError()
- outputStream.error = mockError
- XCTAssertEqual(encoder.close() as! MockError, mockError)
- }
- func testEncode() {
- let values = [MockValue(left: "Alpha", center: 1, right: dateFormatter.date(from: "2020-01-02T03:02:00Z")!),
- MockValue(left: "Bravo", center: 2, right: dateFormatter.date(from: "2020-01-02T03:04:00Z")!),
- MockValue(left: "Charlie", center: 3, right: dateFormatter.date(from: "2020-01-02T03:06:00Z")!)]
- XCTAssertNoThrow(try encoder.encode(values))
- XCTAssertNil(encoder.close())
- XCTAssertEqual(outputStream.string, """
- [
- {"center":1,"left":"Alpha","right":"2020-01-02T03:02:00.000Z"},
- {"center":2,"left":"Bravo","right":"2020-01-02T03:04:00.000Z"},
- {"center":3,"left":"Charlie","right":"2020-01-02T03:06:00.000Z"}
- ]
- """
- )
- }
- func testEncodeEmpty() {
- XCTAssertNoThrow(try encoder.encode([MockValue]()))
- XCTAssertNil(encoder.close())
- XCTAssertEqual(outputStream.string, "[]")
- }
- func testEncodeClosed() {
- let values = [MockValue(left: "Alpha", center: 1, right: dateFormatter.date(from: "2020-01-02T03:02:00Z")!)]
- XCTAssertNil(encoder.close())
- XCTAssertThrowsError(try encoder.encode(values)) { error in
- XCTAssertEqual(error as! JSONStreamEncoderError, JSONStreamEncoderError.encoderClosed)
- }
- }
- func testEncodeError() {
- let values = [MockValue(left: "Alpha", center: 1, right: dateFormatter.date(from: "2020-01-02T03:02:00Z")!)]
- let mockError = MockError()
- outputStream.error = mockError
- XCTAssertThrowsError(try encoder.encode(values)) { error in
- XCTAssertEqual(error as! MockError, mockError)
- }
- }
- private let dateFormatter = ISO8601DateFormatter()
- }
- fileprivate struct MockValue: Codable {
- let left: String
- let center: Int
- let right: Date
- }
- fileprivate struct MockError: Error, Equatable {}
|