Fix subscript
This commit is contained in:
parent
597272db9b
commit
bdefb44a91
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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"])
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue