diff --git a/Foundation/CPSet.j b/Foundation/CPSet.j index 1d40c7987..7026a376e 100644 --- a/Foundation/CPSet.j +++ b/Foundation/CPSet.j @@ -232,7 +232,9 @@ */ - (BOOL)containsObject:(id)anObject { - if (_contents[[anObject UID]] && [_contents[[anObject UID]] isEqual:anObject]) + var obj = _contents[[anObject UID]]; + + if (obj !== undefined && [obj isEqual:anObject]) return YES; return NO; diff --git a/Tests/Foundation/CPSetTest.j b/Tests/Foundation/CPSetTest.j new file mode 100644 index 000000000..905d8fdb8 --- /dev/null +++ b/Tests/Foundation/CPSetTest.j @@ -0,0 +1,59 @@ + +@import + +@implementation CPSetTest : OJTestCase +{ + CPSet set; +} + +- (void)setUp +{ + set = [CPSet new]; +} + +- (void)testAddObject +{ + [self assertFalse:[set containsObject:"foo"]]; + [set addObject:"foo"]; + [self assertTrue:[set containsObject:"foo"]]; +} + +- (void)testAddZeroObject +{ + [self assertFalse:[set containsObject:0]]; + [set addObject:0]; + [self assertTrue:[set containsObject:0]]; +} + +- (void)testRemoveObject +{ + [set addObject:"foo"]; + [self assertTrue:[set containsObject:"foo"]]; + [set removeObject:"foo"]; + [self assertFalse:[set containsObject:"foo"]]; +} + +- (void)testRemoveZeroObject +{ + [set addObject:0]; + [self assertTrue:[set containsObject:0]]; + [set removeObject:0]; + [self assertFalse:[set containsObject:0]]; +} + +- (void)testAddNilObject +{ + [self assertFalse:[set containsObject:nil]]; + [set addObject:nil]; + [self assertFalse:[set containsObject:nil]]; +} + +- (void)testRemoveNilObject +{ + [set addObject:nil]; + [self assertFalse:[set containsObject:nil]]; + [set removeObject:nil]; + [self assertFalse:[set containsObject:nil]]; +} + +@end