Fix subscript

This commit is contained in:
Yasuhiro Hatta 2016-10-30 17:38:25 +09:00
parent 597272db9b
commit bdefb44a91
2 changed files with 32 additions and 3 deletions

View File

@ -66,6 +66,9 @@ extension CSV {
guard let index = headerRow!.index(of: key) else {
return nil
}
guard (data.startIndex ..< data.endIndex).contains(index) else {
return nil
}
return data[index]
}
@ -79,7 +82,9 @@ extension CSV {
assert(headerRow != nil, "CSVConfiguration.hasHeaderRow must be true")
var dictionary: [String : String] = [:]
for (key, value) in zip(headerRow!, data) {
dictionary[key] = value
if !dictionary.keys.contains(key) {
dictionary[key] = value
}
}
return dictionary
}

View File

@ -155,7 +155,7 @@ class CSVTests: XCTestCase {
}
}
func testSubscriptString() {
func testSubscriptString1() {
let csvString = "key1,key2\nvalue1,value2"
let config = CSVConfiguration(hasHeaderRow: true)
let csv = try! CSV(string: csvString, config: config)
@ -166,6 +166,17 @@ class CSVTests: XCTestCase {
}
}
func testSubscriptString2() {
let csvString = "key1,key2\nvalue1"
let config = CSVConfiguration(hasHeaderRow: true)
let csv = try! CSV(string: csvString, config: config)
for row in csv {
XCTAssertEqual(row["key1"], "value1")
XCTAssertNil(row["key2"])
XCTAssertNil(row["key9"])
}
}
func testToArray() {
let csvString = "1,2,3,4,5\n6,7,8,9,0"
let csv = try! CSV(string: csvString)
@ -174,7 +185,7 @@ class CSVTests: XCTestCase {
XCTAssertEqual(rows[1], ["6", "7", "8", "9", "0"])
}
func testToDictionary() {
func testToDictionary1() {
let csvString = "id,name\n1,name1\n2,name2"
let config = CSVConfiguration(hasHeaderRow: true)
let csv = try! CSV(string: csvString, config: config)
@ -187,4 +198,17 @@ class CSVTests: XCTestCase {
XCTAssertNil(rows[1]["yyy"])
}
func testToDictionary2() {
let csvString = "id,name,id\n1,name1,11\n2,name2,22"
let config = CSVConfiguration(hasHeaderRow: true)
let csv = try! CSV(string: csvString, config: config)
let rows = csv.map { $0.toDictionary() }
XCTAssertEqual(rows[0]["id"], "1")
XCTAssertEqual(rows[0]["name"], "name1")
XCTAssertNil(rows[0]["xxx"])
XCTAssertEqual(rows[1]["id"], "2")
XCTAssertEqual(rows[1]["name"], "name2")
XCTAssertNil(rows[1]["yyy"])
}
}