diff --git a/Foundation/CPIndexSet.j b/Foundation/CPIndexSet.j index 33ecfbdf7..ffa8300f2 100644 --- a/Foundation/CPIndexSet.j +++ b/Foundation/CPIndexSet.j @@ -21,6 +21,7 @@ */ #include "CPRange.h" +#include "Foundation.h" @import "CPArray.j" @import "CPObject.j" @@ -79,6 +80,10 @@ */ - (id)initWithIndex:(CPInteger)anIndex { + if (!_IS_NUMERIC(anIndex)) + [CPException raise:CPInvalidArgumentException + reason:"Invalid index"]; + return [self initWithIndexesInRange:_CPMakeRange(anIndex, 1)]; } diff --git a/Tests/Foundation/CPIndexSetTest.j b/Tests/Foundation/CPIndexSetTest.j index fefbd220d..adc0a0f43 100644 --- a/Tests/Foundation/CPIndexSetTest.j +++ b/Tests/Foundation/CPIndexSetTest.j @@ -202,6 +202,7 @@ function descriptionWithoutEntity(aString) [self assertTrue:[[CPIndexSet indexSetWithIndex:1] containsIndex:1]]; [self assertTrue:[[CPIndexSet indexSetWithIndex:0] containsIndex:0]]; [self assertFalse:[[CPIndexSet indexSetWithIndex:0] containsIndex:1]]; + [self assertThrows:function() { [CPIndexSet indexSetWithIndex:NaN] }]; } - (void)testIndexSetWithIndexesInRange