Add more CSVWriter tests

This commit is contained in:
Yasuhiro Hatta 2017-05-28 12:59:19 +09:00
parent 1918e5163d
commit f46887bdbb
1 changed files with 155 additions and 21 deletions

View File

@ -11,28 +11,162 @@ import XCTest
import CSV
class CSVWriterTests: XCTestCase {
extension OutputStream {
static let allTests = [
("testSample", testSample)
]
func testSample() {
let stream = OutputStream(toMemory: ())
let csv = CSVWriter(stream: stream, codecType: UTF8.self)
for i in 0 ..< 10 {
csv.beginNewRecord()
csv.write(field: "\(i)")
csv.write(field: "\(i)-text", quoted: true)
}
let _data = stream.property(forKey: .dataWrittenToMemoryStreamKey)
guard let data = _data as? Data else {
return
}
let str = String(data: data, encoding: .utf8)!
print(str)
var data: Data? {
return property(forKey: .dataWrittenToMemoryStreamKey) as? Data
}
}
class CSVWriterTests: XCTestCase {
static let allTests = [
("testSingleFieldSingleRecord", testSingleFieldSingleRecord),
("testSingleFieldMultipleRecord", testSingleFieldMultipleRecord),
("testMultipleFieldSingleRecord", testMultipleFieldSingleRecord),
("testMultipleFieldMultipleRecord", testMultipleFieldMultipleRecord),
("testQuoted", testQuoted),
("testQuotedNewline", testQuotedNewline),
("testEscapeQuote", testEscapeQuote)
]
/// xxxx
func testSingleFieldSingleRecord() {
let str = "TEST-test-1234-😄😆👨‍👩‍👧‍👦"
let stream = OutputStream(toMemory: ())
stream.open()
let csv = CSVWriter(stream: stream)
csv.beginNewRecord()
csv.write(field: str)
stream.close()
let data = stream.data!
let csvStr = String(data: data, encoding: .utf8)!
XCTAssertEqual(csvStr, str)
}
/// xxxx
/// xxxx
func testSingleFieldMultipleRecord() {
let str = "TEST-test-1234-😄😆👨‍👩‍👧‍👦"
let stream = OutputStream(toMemory: ())
stream.open()
let csv = CSVWriter(stream: stream)
csv.beginNewRecord()
csv.write(field: str + "-1")
csv.beginNewRecord()
csv.write(field: str + "-2")
stream.close()
let data = stream.data!
let csvStr = String(data: data, encoding: .utf8)!
XCTAssertEqual(csvStr, "\(str)-1\n\(str)-2")
}
/// xxxx,xxxx
func testMultipleFieldSingleRecord() {
let str = "TEST-test-1234-😄😆👨‍👩‍👧‍👦"
let stream = OutputStream(toMemory: ())
stream.open()
let csv = CSVWriter(stream: stream)
csv.beginNewRecord()
csv.write(field: str + "-1")
csv.write(field: str + "-2")
stream.close()
let data = stream.data!
let csvStr = String(data: data, encoding: .utf8)!
XCTAssertEqual(csvStr, "\(str)-1,\(str)-2")
}
/// xxxx,xxxx
/// xxxx,xxxx
func testMultipleFieldMultipleRecord() {
let str = "TEST-test-1234-😄😆👨‍👩‍👧‍👦"
let stream = OutputStream(toMemory: ())
stream.open()
let csv = CSVWriter(stream: stream)
csv.beginNewRecord()
csv.write(field: str + "-1-1")
csv.write(field: str + "-1-2")
csv.beginNewRecord()
csv.write(field: str + "-2-1")
csv.write(field: str + "-2-2")
stream.close()
let data = stream.data!
let csvStr = String(data: data, encoding: .utf8)!
XCTAssertEqual(csvStr, "\(str)-1-1,\(str)-1-2\n\(str)-2-1,\(str)-2-2")
}
/// "xxxx",xxxx
func testQuoted() {
let str = "TEST-test-1234-😄😆👨‍👩‍👧‍👦"
let stream = OutputStream(toMemory: ())
stream.open()
let csv = CSVWriter(stream: stream)
csv.beginNewRecord()
csv.write(field: str + "-1", quoted: true)
csv.write(field: str + "-2") // quoted: false
stream.close()
let data = stream.data!
let csvStr = String(data: data, encoding: .utf8)!
XCTAssertEqual(csvStr, "\"\(str)-1\",\(str)-2")
}
/// xxxx,"xx\nxx"
func testQuotedNewline() {
let str = "TEST-test-1234-😄😆👨‍👩‍👧‍👦"
let stream = OutputStream(toMemory: ())
stream.open()
let csv = CSVWriter(stream: stream)
csv.beginNewRecord()
csv.write(field: str + "-1") // quoted: false
csv.write(field: str + "-\n-2", quoted: true)
stream.close()
let data = stream.data!
let csvStr = String(data: data, encoding: .utf8)!
XCTAssertEqual(csvStr, "\(str)-1,\"\(str)-\n-2\"")
}
/// xxxx,"xx""xx"
func testEscapeQuote() {
let str = "TEST-test-1234-😄😆👨‍👩‍👧‍👦"
let stream = OutputStream(toMemory: ())
stream.open()
let csv = CSVWriter(stream: stream)
csv.beginNewRecord()
csv.write(field: str + "-1") // quoted: false
csv.write(field: str + "-\"-2", quoted: true)
stream.close()
let data = stream.data!
let csvStr = String(data: data, encoding: .utf8)!
XCTAssertEqual(csvStr, "\(str)-1,\"\(str)-\"\"-2\"")
}
}