From 0a27e3bf438535e3db8e2bad43871aa61f5dc823 Mon Sep 17 00:00:00 2001 From: Caleb Kleveter Date: Tue, 11 Aug 2020 16:20:02 -0500 Subject: [PATCH] Created EncoderTests.testEncodingColumnValues test case --- Tests/CSVTests/EncoderTests.swift | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Tests/CSVTests/EncoderTests.swift b/Tests/CSVTests/EncoderTests.swift index 47eab49..30eeb46 100644 --- a/Tests/CSVTests/EncoderTests.swift +++ b/Tests/CSVTests/EncoderTests.swift @@ -79,6 +79,37 @@ final class EncoderTests: XCTestCase { try XCTAssertEqual(quoteEncoder.encode([quotePerson]), Data(quoteResult.utf8)) try XCTAssertEqual(hashEncoder.encode([hashPerson]), Data(hashResult.utf8)) } + + func testEncodingColumnValues() throws { + let data = [ + ["a": "hello", "b": "true", "c": "1"], + ["a": "world", "b": "false", "c": "2"], + ["a": "fizz", "b": "false", "c": "3"], + ["a": "buzz", "b": "true", "c": "5"], + ["a": "foo", "b": "false", "c": "8"], + ["a": "bar", "b": "true", "c": "13"], + ] + let expected = """ + "a","b","c" + "hello","true","1" + "world","false","2" + "fizz","false","3" + "buzz","true","5" + "foo","false","8" + "bar","true",13" + """ + + var csv = Data() + let encoder = CSVEncoder().async { row in + csv.append(contentsOf: row) + csv.append(10) + } + try data.forEach(encoder.encode(_:)) + XCTAssertEqual(String(decoding: csv, as: UTF8.self), expected) + + csv = try CSVEncoder().sync.encode(data) + XCTAssertEqual(String(decoding: csv, as: UTF8.self), expected) + } } fileprivate struct Person: Codable, Equatable {