diff --git a/Foundation/CPArray/_CPJavaScriptArray.j b/Foundation/CPArray/_CPJavaScriptArray.j index 0246790dd..d0ed91782 100644 --- a/Foundation/CPArray/_CPJavaScriptArray.j +++ b/Foundation/CPArray/_CPJavaScriptArray.j @@ -91,7 +91,7 @@ var concat = Array.prototype.concat, - (id)initWithObjects:(CPArray)objects count:(CPUInteger)aCount { if ([objects isKindOfClass:_CPJavaScriptArray]) - return slice.call(objects, 0); + return slice.call(objects, 0, aCount); var array = [], index = 0; diff --git a/Tests/Foundation/CPArrayTest.j b/Tests/Foundation/CPArrayTest.j index d3d1bb3b8..3b113fe00 100644 --- a/Tests/Foundation/CPArrayTest.j +++ b/Tests/Foundation/CPArrayTest.j @@ -11,6 +11,16 @@ return ConcreteArray; } +- (void)test_initWithObjects_count_ +{ + var arrayClass = [[self class] arrayClass], + array = [[arrayClass alloc] initWithObjects:[@"hello", @"bye", @"goodnight", @"seeya"] count:2]; + + [self assert:[array count] equals:2]; + [self assert:[array objectAtIndex:0] equals:@"hello"]; + [self assert:[array objectAtIndex:1] equals:@"bye"]; +} + - (void)test_containsObject_ { var arrayClass = [[self class] arrayClass], @@ -763,6 +773,21 @@ return self; } +- (id)initWithObjects:(CPArray)objects count:(CPUInteger)aCount +{ + self = [super init]; + + if (self) + { + array = []; + + for (var index = 0; index < aCount; ++index) + array.push([objects objectAtIndex:index]); + } + + return self; +} + - (CPUInteger)count { return array.length; diff --git a/Tests/Foundation/CPMutableArrayTest.j b/Tests/Foundation/CPMutableArrayTest.j index cdc75b7b4..03d8129b3 100644 --- a/Tests/Foundation/CPMutableArrayTest.j +++ b/Tests/Foundation/CPMutableArrayTest.j @@ -555,6 +555,21 @@ return self; } +- (id)initWithObjects:(CPArray)objects count:(CPUInteger)aCount +{ + self = [super init]; + + if (self) + { + array = []; + + for (var index = 0; index < aCount; ++index) + array.push([objects objectAtIndex:index]); + } + + return self; +} + - (CPUInteger)count { return array.length;