Fix an issue with storing 0 in a CPSet. Includes test cases. Closes #337.

This commit is contained in:
Ross Boucher
2009-11-24 16:06:32 -05:00
parent 72d01865ae
commit ffb08d32ce
2 changed files with 62 additions and 1 deletions
+3 -1
View File
@@ -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;
+59
View File
@@ -0,0 +1,59 @@
@import <Foundation/CPSet.j>
@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