@import @import @import @import @import @implementation CPMapTableTest : OJTestCase { CPMapTable map_table; id objectKey; } - (void)setUp { map_table = [[CPMapTable alloc] init]; objectKey = [[CPObject alloc] init]; } - (void)testInit { [self assert:[map_table count] equals:0]; } - (void)testSetObjectForKey { [map_table setObject:@"value1" forKey:@"key1"]; [self assert:[map_table count] equals:1]; [self assert:[map_table objectForKey:@"key1"] equals:@"value1"]; [map_table setObject:@"value2" forKey:123]; [self assert:[map_table count] equals:2]; [self assert:[map_table objectForKey:123] equals:@"value2"]; [map_table setObject:@"value3" forKey:objectKey]; [self assert:[map_table count] equals:3]; [self assert:[map_table objectForKey:objectKey] equals:@"value3"]; // Test overriding a value [map_table setObject:@"newValue" forKey:@"key1"]; [self assert:[map_table count] equals:3]; [self assert:[map_table objectForKey:@"key1"] equals:@"newValue"]; } - (void)testObjectForKey { [self assertNull:[map_table objectForKey:@"nonExistentKey"]]; [map_table setObject:@"value1" forKey:@"key1"]; [self assert:[map_table objectForKey:@"key1"] equals:@"value1"]; } - (void)testCount { [self assert:[map_table count] equals:0]; [map_table setObject:@"value1" forKey:@"key1"]; [self assert:[map_table count] equals:1]; [map_table setObject:@"value2" forKey:@"key2"]; [self assert:[map_table count] equals:2]; [map_table removeObjectForKey:@"key1"]; [self assert:[map_table count] equals:1]; } - (void)testRemoveObjectForKey { [map_table setObject:@"value1" forKey:@"key1"]; [map_table setObject:@"value2" forKey:123]; [map_table removeObjectForKey:@"key1"]; [self assert:[map_table count] equals:1]; [self assertNull:[map_table objectForKey:@"key1"]]; [self assert:[map_table objectForKey:123] equals:@"value2"]; [map_table removeObjectForKey:123]; [self assert:[map_table count] equals:0]; [self assertNull:[map_table objectForKey:123]]; } - (void)testRemoveAllObjects { [map_table setObject:@"value1" forKey:@"key1"]; [map_table setObject:@"value2" forKey:@"key2"]; [map_table removeAllObjects]; [self assert:[map_table count] equals:0]; [self assertNull:[map_table objectForKey:@"key1"]]; [self assertNull:[map_table objectForKey:@"key2"]]; } - (void)testKeyEnumeratorOnEmptyMap { [self assert:[map_table count] equals:0 message:@"Pre-condition failed: map should be empty."]; [self assertNull:[[map_table keyEnumerator] nextObject]]; } - (void)testKeyEnumeratorOnPopulatedMap { [map_table setObject:@"value1" forKey:@"key1"]; [map_table setObject:@"value2" forKey:123]; [map_table setObject:@"value3" forKey:objectKey]; var foundKeys = [CPMutableArray array], enumerator = [map_table keyEnumerator], aKey; while (aKey = [enumerator nextObject]) [foundKeys addObject:aKey]; [self assert:[foundKeys count] equals:3]; [self assertTrue:[foundKeys containsObject:@"key1"]]; [self assertTrue:[foundKeys containsObject:123]]; [self assertTrue:[foundKeys containsObject:objectKey]]; } - (void)testObjectEnumeratorOnEmptyMap { [self assert:[map_table count] equals:0 message:@"Pre-condition failed: map should be empty."]; [self assertNull:[[map_table objectEnumerator] nextObject]]; } - (void)testObjectEnumeratorOnPopulatedMap { [map_table setObject:@"value1" forKey:@"key1"]; [map_table setObject:@"value2" forKey:123]; [map_table setObject:@"value3" forKey:objectKey]; var foundValues = [CPMutableArray array], enumerator = [map_table objectEnumerator], aValue; while (aValue = [enumerator nextObject]) [foundValues addObject:aValue]; [self assert:[foundValues count] equals:3]; [self assertTrue:[foundValues containsObject:@"value1"]]; [self assertTrue:[foundValues containsObject:@"value2"]]; [self assertTrue:[foundValues containsObject:@"value3"]]; } - (void)testDictionaryRepresentation { [map_table setObject:@"value1" forKey:@"key1"]; [map_table setObject:@"value2" forKey:@"key2"]; var dictionary = [map_table dictionaryRepresentation]; [self assert:[dictionary count] equals:2]; [self assert:[dictionary objectForKey:@"key1"] equals:@"value1"]; [self assert:[dictionary objectForKey:@"key2"] equals:@"value2"]; } @end