30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
};
void
dictionary_tests()
{
OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
OFMutableDictionary *dict = [OFMutableDictionary dictionary], *dict2;
OFEnumerator *enumerator;
of_enumerator_pair_t pair[3];
OFArray *akeys, *avalues;
[dict setObject: values[0]
forKey: keys[0]];
[dict setObject: values[1]
forKey: keys[1]];
TEST(@"-[objectForKey:]",
[[dict objectForKey: keys[0]] isEqual: values[0]] &&
[[dict objectForKey: keys[1]] isEqual: values[1]] &&
[dict objectForKey: @"key3"] == nil)
TEST(@"-[enumerator]", (enumerator = [dict enumerator]))
pair[0] = [enumerator nextKeyObjectPair];
pair[1] = [enumerator nextKeyObjectPair];
pair[2] = [enumerator nextKeyObjectPair];
TEST(@"OFEnumerator's -[nextKeyObjectPair]",
[pair[0].key isEqual: keys[0]] &&
[pair[0].object isEqual: values[0]] &&
[pair[1].key isEqual: keys[1]] &&
[pair[1].object isEqual: values[1]] &&
pair[2].key == nil && pair[2].object == nil)
#ifdef OF_HAVE_FAST_ENUMERATION
size_t i = 0;
BOOL ok = YES;
for (OFString *key in dict) {
if (![key isEqual: keys[i]])
|
|
<
|
>
<
<
<
|
|
|
|
|
>
|
>
>
>
>
>
>
>
>
|
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
};
void
dictionary_tests()
{
OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
OFMutableDictionary *dict = [OFMutableDictionary dictionary], *dict2;
OFEnumerator *key_enum, *obj_enum;
OFArray *akeys, *avalues;
[dict setObject: values[0]
forKey: keys[0]];
[dict setObject: values[1]
forKey: keys[1]];
TEST(@"-[objectForKey:]",
[[dict objectForKey: keys[0]] isEqual: values[0]] &&
[[dict objectForKey: keys[1]] isEqual: values[1]] &&
[dict objectForKey: @"key3"] == nil)
TEST(@"-[keyEnumerator]", (key_enum = [dict keyEnumerator]))
TEST(@"-[objectEnumerator]", (obj_enum = [dict objectEnumerator]))
TEST(@"OFEnumerator's -[nextObject]",
[[key_enum nextObject] isEqual: keys[0]] &&
[[obj_enum nextObject] isEqual: values[0]] &&
[[key_enum nextObject] isEqual: keys[1]] &&
[[obj_enum nextObject] isEqual: values[1]] &&
[key_enum nextObject] == nil && [obj_enum nextObject] == nil)
[key_enum reset];
[dict removeObjectForKey: keys[0]];
EXPECT_EXCEPTION(@"Detection of mutation during enumeration",
OFEnumerationMutationException, [key_enum nextObject]);
[dict setObject: values[0]
forKey: keys[0]];
#ifdef OF_HAVE_FAST_ENUMERATION
size_t i = 0;
BOOL ok = YES;
for (OFString *key in dict) {
if (![key isEqual: keys[i]])
|