diff --git a/Foundation/CPArray/CPMutableArray.j b/Foundation/CPArray/CPMutableArray.j index e9588dd51..94eecdb00 100644 --- a/Foundation/CPArray/CPMutableArray.j +++ b/Foundation/CPArray/CPMutableArray.j @@ -397,6 +397,17 @@ @end +@implementation CPArray (CPMutableCopying) + +- (id)mutableCopy +{ + var r = [CPMutableArray new]; + [r addObjectsFromArray:self]; + return r; +} + +@end + var selectorCompare = function selectorCompare(object1, object2, selector) { return [object1 performSelector:selector withObject:object2]; diff --git a/Tests/Foundation/CPMutableArrayTest.j b/Tests/Foundation/CPMutableArrayTest.j index 44fcba9f6..8cb356633 100644 --- a/Tests/Foundation/CPMutableArrayTest.j +++ b/Tests/Foundation/CPMutableArrayTest.j @@ -2,7 +2,6 @@ @import @import "CPArrayTest.j" - @implementation CPMutableArrayTest : CPArrayTest + (Class)arrayClass @@ -448,6 +447,19 @@ [self assert:[5, 4, 4, 3, 2, 2, 1, 1, 1, 1] equals:target]; } +- (void)testMutableCopy +{ + var normalArray = [CPArray array]; + + [self assertThrows:function () { [array addObject:[CPNull null]] }]; + + var mutableArray = [normalArray mutableCopy]; + + [mutableArray addObject:[CPNull null]]; + + [self assert:1 equals:[mutableArray count] message:"mutable copy should have content"]; +} + @end @implementation CPPrettyObject : CPObject