-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
When updating the existing key with updateValue method the original index is not set back after acquiring it with indexForKey.updateValue(endIndex, forKey: key).
I believe this should be done after the guard statement:
guard let index = indexForKey.updateValue(endIndex, forKey: key) else {
elements.append(.init(key: key, value: newValue))
return nil
}
indexForKey[key] = index
At the moment of writing InsertionOrderedDictionaryTests don't have tests for updateValue.
The following test triggers the assertion:
func test_updateValue() {
var d0 = p0
for (key, value) in p1 {
XCTAssertEqual(d0[key], value)
let replaced = d0.updateValue("*", forKey: key)
XCTAssertEqual(d0[key], "*")
XCTAssertEqual(replaced, value)
}
XCTAssertEqual(d0[99], nil)
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels