From ffb08d32ced947b3a0992b8ffe2fc319a9440159 Mon Sep 17 00:00:00 2001 From: Ross Boucher Date: Tue, 24 Nov 2009 16:06:32 -0500 Subject: [PATCH] Fix an issue with storing 0 in a CPSet. Includes test cases. Closes #337. --- Foundation/CPSet.j | 4 ++- Tests/Foundation/CPSetTest.j | 59 ++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 Tests/Foundation/CPSetTest.j 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