Merge pull request #926 from rxwei/master
diff --git a/Foundation/NSOrderedSet.swift b/Foundation/NSOrderedSet.swift
index 9f85df1..2be3023 100644
--- a/Foundation/NSOrderedSet.swift
+++ b/Foundation/NSOrderedSet.swift
@@ -148,7 +148,7 @@
open func objects(at indexes: IndexSet) -> [Any] {
var entries = [Any]()
for idx in indexes {
- if idx >= count && idx < 0 {
+ guard idx < count && idx >= 0 else {
fatalError("\(self): Index out of bounds")
}
entries.append(object(at: idx))
@@ -338,12 +338,12 @@
open class NSMutableOrderedSet : NSOrderedSet {
open func insert(_ object: Any, at idx: Int) {
- guard idx < count && idx >= 0 else {
+ guard idx <= count && idx >= 0 else {
fatalError("\(self): Index out of bounds")
}
let value = _SwiftValue.store(object)
-
+
if contains(value) {
return
}
diff --git a/TestFoundation/TestNSOrderedSet.swift b/TestFoundation/TestNSOrderedSet.swift
index 10761b3..0591eb2 100644
--- a/TestFoundation/TestNSOrderedSet.swift
+++ b/TestFoundation/TestNSOrderedSet.swift
@@ -43,7 +43,8 @@
("test_ReplaceObject", test_ReplaceObject),
("test_ExchangeObjects", test_ExchangeObjects),
("test_MoveObjects", test_MoveObjects),
- ("test_InserObjects", test_InsertObjects),
+ ("test_InsertObjects", test_InsertObjects),
+ ("test_Insert", test_Insert),
("test_SetObjectAtIndex", test_SetObjectAtIndex),
("test_RemoveObjectsInRange", test_RemoveObjectsInRange),
("test_ReplaceObjectsAtIndexes", test_ReplaceObjectsAtIndexes),
@@ -252,6 +253,16 @@
XCTAssertEqual(set[4] as? String, "baz")
}
+ func test_Insert() {
+ let set = NSMutableOrderedSet()
+ set.insert("foo", at: 0)
+ XCTAssertEqual(set.count, 1)
+ XCTAssertEqual(set[0] as? String, "foo")
+ set.insert("bar", at: 1)
+ XCTAssertEqual(set.count, 2)
+ XCTAssertEqual(set[1] as? String, "bar")
+ }
+
func test_SetObjectAtIndex() {
let set = NSMutableOrderedSet(arrayLiteral: "foo", "bar", "baz")
set.setObject("123", at: 1)