Overview
Comment: | Rename OFIterator to OFEnumerator. This way, we avoid name inconsistency when introducing fast enumeration. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
b9e9dfb384a212330c1ddf35d0a51571 |
User & Date: | js on 2009-12-30 13:30:50 |
Other Links: | manifest | tags |
Context
2010-01-02
| ||
18:18 | Fix a typo. check-in: bd408f1cee user: js tags: trunk | |
2009-12-30
| ||
13:30 |
Rename OFIterator to OFEnumerator. This way, we avoid name inconsistency when introducing fast enumeration. check-in: b9e9dfb384 user: js tags: trunk | |
2009-12-24
| ||
09:19 | Added tag 0.1-release for changeset 9d5a0c42ccbf check-in: 6e1e487368 user: js tags: trunk | |
Changes
Modified ObjFW.xcodeproj/project.pbxproj from [d24d66a902] to [5f8f5e0893].
︙ | ︙ | |||
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | proxyType = 1; remoteGlobalIDString = 4B5D8DE91099E1F1000896FF; remoteInfo = configure; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 4B6799561099E7C50041064A /* asprintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asprintf.h; path = src/asprintf.h; sourceTree = "<group>"; }; 4B6799581099E7C50041064A /* objc_sync.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = objc_sync.m; path = src/objc_sync.m; sourceTree = "<group>"; }; 4B67995A1099E7C50041064A /* OFArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFArray.h; path = src/OFArray.h; sourceTree = "<group>"; }; 4B67995B1099E7C50041064A /* OFArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFArray.m; path = src/OFArray.m; sourceTree = "<group>"; }; 4B67995C1099E7C50041064A /* OFAutoreleasePool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFAutoreleasePool.h; path = src/OFAutoreleasePool.h; sourceTree = "<group>"; }; 4B67995D1099E7C50041064A /* OFAutoreleasePool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFAutoreleasePool.m; path = src/OFAutoreleasePool.m; sourceTree = "<group>"; }; 4B67995E1099E7C50041064A /* OFConstString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFConstString.h; path = src/OFConstString.h; sourceTree = "<group>"; }; 4B67995F1099E7C50041064A /* OFConstString.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFConstString.m; path = src/OFConstString.m; sourceTree = "<group>"; }; 4B6799601099E7C50041064A /* OFDataArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFDataArray.h; path = src/OFDataArray.h; sourceTree = "<group>"; }; 4B6799611099E7C50041064A /* OFDataArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFDataArray.m; path = src/OFDataArray.m; sourceTree = "<group>"; }; 4B6799621099E7C50041064A /* OFDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFDictionary.h; path = src/OFDictionary.h; sourceTree = "<group>"; }; 4B6799631099E7C50041064A /* OFDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFDictionary.m; path = src/OFDictionary.m; sourceTree = "<group>"; }; 4B6799641099E7C50041064A /* OFExceptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFExceptions.h; path = src/OFExceptions.h; sourceTree = "<group>"; }; 4B6799651099E7C50041064A /* OFExceptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFExceptions.m; path = src/OFExceptions.m; sourceTree = "<group>"; }; 4B6799661099E7C50041064A /* OFFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFFile.h; path = src/OFFile.h; sourceTree = "<group>"; }; 4B6799671099E7C50041064A /* OFFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFFile.m; path = src/OFFile.m; sourceTree = "<group>"; }; 4B6799681099E7C50041064A /* OFHashes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFHashes.h; path = src/OFHashes.h; sourceTree = "<group>"; }; 4B6799691099E7C50041064A /* OFHashes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFHashes.m; path = src/OFHashes.m; sourceTree = "<group>"; }; | > > < < | 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | proxyType = 1; remoteGlobalIDString = 4B5D8DE91099E1F1000896FF; remoteInfo = configure; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 4B0108C910EB8C9300631877 /* OFEnumerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFEnumerator.h; path = src/OFEnumerator.h; sourceTree = SOURCE_ROOT; }; 4B0108CA10EB8C9300631877 /* OFEnumerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFEnumerator.m; path = src/OFEnumerator.m; sourceTree = SOURCE_ROOT; }; 4B6799561099E7C50041064A /* asprintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asprintf.h; path = src/asprintf.h; sourceTree = "<group>"; }; 4B6799581099E7C50041064A /* objc_sync.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = objc_sync.m; path = src/objc_sync.m; sourceTree = "<group>"; }; 4B67995A1099E7C50041064A /* OFArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFArray.h; path = src/OFArray.h; sourceTree = "<group>"; }; 4B67995B1099E7C50041064A /* OFArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFArray.m; path = src/OFArray.m; sourceTree = "<group>"; }; 4B67995C1099E7C50041064A /* OFAutoreleasePool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFAutoreleasePool.h; path = src/OFAutoreleasePool.h; sourceTree = "<group>"; }; 4B67995D1099E7C50041064A /* OFAutoreleasePool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFAutoreleasePool.m; path = src/OFAutoreleasePool.m; sourceTree = "<group>"; }; 4B67995E1099E7C50041064A /* OFConstString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFConstString.h; path = src/OFConstString.h; sourceTree = "<group>"; }; 4B67995F1099E7C50041064A /* OFConstString.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFConstString.m; path = src/OFConstString.m; sourceTree = "<group>"; }; 4B6799601099E7C50041064A /* OFDataArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFDataArray.h; path = src/OFDataArray.h; sourceTree = "<group>"; }; 4B6799611099E7C50041064A /* OFDataArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFDataArray.m; path = src/OFDataArray.m; sourceTree = "<group>"; }; 4B6799621099E7C50041064A /* OFDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFDictionary.h; path = src/OFDictionary.h; sourceTree = "<group>"; }; 4B6799631099E7C50041064A /* OFDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFDictionary.m; path = src/OFDictionary.m; sourceTree = "<group>"; }; 4B6799641099E7C50041064A /* OFExceptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFExceptions.h; path = src/OFExceptions.h; sourceTree = "<group>"; }; 4B6799651099E7C50041064A /* OFExceptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFExceptions.m; path = src/OFExceptions.m; sourceTree = "<group>"; }; 4B6799661099E7C50041064A /* OFFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFFile.h; path = src/OFFile.h; sourceTree = "<group>"; }; 4B6799671099E7C50041064A /* OFFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFFile.m; path = src/OFFile.m; sourceTree = "<group>"; }; 4B6799681099E7C50041064A /* OFHashes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFHashes.h; path = src/OFHashes.h; sourceTree = "<group>"; }; 4B6799691099E7C50041064A /* OFHashes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFHashes.m; path = src/OFHashes.m; sourceTree = "<group>"; }; 4B67996C1099E7C50041064A /* OFList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFList.h; path = src/OFList.h; sourceTree = "<group>"; }; 4B67996D1099E7C50041064A /* OFList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFList.m; path = src/OFList.m; sourceTree = "<group>"; }; 4B67996E1099E7C50041064A /* OFMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFMacros.h; path = src/OFMacros.h; sourceTree = "<group>"; }; 4B67996F1099E7C50041064A /* OFMutableArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFMutableArray.h; path = src/OFMutableArray.h; sourceTree = "<group>"; }; 4B6799701099E7C50041064A /* OFMutableArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFMutableArray.m; path = src/OFMutableArray.m; sourceTree = "<group>"; }; 4B6799711099E7C50041064A /* OFMutableDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFMutableDictionary.h; path = src/OFMutableDictionary.h; sourceTree = "<group>"; }; 4B6799721099E7C50041064A /* OFMutableDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFMutableDictionary.m; path = src/OFMutableDictionary.m; sourceTree = "<group>"; }; |
︙ | ︙ | |||
139 140 141 142 143 144 145 146 147 148 149 150 151 | 4B67995D1099E7C50041064A /* OFAutoreleasePool.m */, 4B67995E1099E7C50041064A /* OFConstString.h */, 4B67995F1099E7C50041064A /* OFConstString.m */, 4B6799601099E7C50041064A /* OFDataArray.h */, 4B6799611099E7C50041064A /* OFDataArray.m */, 4B6799621099E7C50041064A /* OFDictionary.h */, 4B6799631099E7C50041064A /* OFDictionary.m */, 4B6799641099E7C50041064A /* OFExceptions.h */, 4B6799651099E7C50041064A /* OFExceptions.m */, 4B6799661099E7C50041064A /* OFFile.h */, 4B6799671099E7C50041064A /* OFFile.m */, 4B6799681099E7C50041064A /* OFHashes.h */, 4B6799691099E7C50041064A /* OFHashes.m */, | > > < < | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | 4B67995D1099E7C50041064A /* OFAutoreleasePool.m */, 4B67995E1099E7C50041064A /* OFConstString.h */, 4B67995F1099E7C50041064A /* OFConstString.m */, 4B6799601099E7C50041064A /* OFDataArray.h */, 4B6799611099E7C50041064A /* OFDataArray.m */, 4B6799621099E7C50041064A /* OFDictionary.h */, 4B6799631099E7C50041064A /* OFDictionary.m */, 4B0108C910EB8C9300631877 /* OFEnumerator.h */, 4B0108CA10EB8C9300631877 /* OFEnumerator.m */, 4B6799641099E7C50041064A /* OFExceptions.h */, 4B6799651099E7C50041064A /* OFExceptions.m */, 4B6799661099E7C50041064A /* OFFile.h */, 4B6799671099E7C50041064A /* OFFile.m */, 4B6799681099E7C50041064A /* OFHashes.h */, 4B6799691099E7C50041064A /* OFHashes.m */, 4B67996C1099E7C50041064A /* OFList.h */, 4B67996D1099E7C50041064A /* OFList.m */, 4B67996E1099E7C50041064A /* OFMacros.h */, 4B67996F1099E7C50041064A /* OFMutableArray.h */, 4B6799701099E7C50041064A /* OFMutableArray.m */, 4B6799711099E7C50041064A /* OFMutableDictionary.h */, 4B6799721099E7C50041064A /* OFMutableDictionary.m */, |
︙ | ︙ |
Modified src/Makefile from [4c19f6132f] to [e7003197c7].
︙ | ︙ | |||
8 9 10 11 12 13 14 | OFAutoreleasePool.m \ OFConstString.m \ OFDataArray.m \ OFDictionary.m \ OFExceptions.m \ OFFile.m \ OFHashes.m \ | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | OFAutoreleasePool.m \ OFConstString.m \ OFDataArray.m \ OFDictionary.m \ OFExceptions.m \ OFFile.m \ OFHashes.m \ OFEnumerator.m \ OFList.m \ OFMutableArray.m \ OFMutableDictionary.m \ OFMutableString.m \ OFNumber.m \ OFObject.m \ ${OFPLUGIN_M} \ |
︙ | ︙ |
Modified src/OFDictionary.h from [f8764df1df] to [9f7e890222].
︙ | ︙ | |||
144 145 146 147 148 149 150 | - (size_t)count; - setObject: (OFObject*)obj forKey: (OFObject <OFCopying>*)key; - removeObjectForKey: (OFObject*)key; @end | | | 144 145 146 147 148 149 150 151 152 | - (size_t)count; - setObject: (OFObject*)obj forKey: (OFObject <OFCopying>*)key; - removeObjectForKey: (OFObject*)key; @end #import "OFEnumerator.h" #import "OFMutableDictionary.h" |
Modified src/OFDictionary.m from [67a9356465] to [e62d24d536].
︙ | ︙ | |||
10 11 12 13 14 15 16 | */ #include "config.h" #include <string.h> #import "OFDictionary.h" | | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | */ #include "config.h" #include <string.h> #import "OFDictionary.h" #import "OFEnumerator.h" #import "OFAutoreleasePool.h" #import "OFExceptions.h" #import "OFMacros.h" #define BUCKET_SIZE sizeof(struct of_dictionary_bucket) /* References for static linking */ void _references_to_categories_of_OFDictionary() { _OFEnumerator_reference = 1; } @implementation OFDictionary + dictionary; { return [[[self alloc] init] autorelease]; } |
︙ | ︙ |
Added src/OFEnumerator.h version [7d873ef675].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 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 | /* * Copyright (c) 2008 - 2009 * Jonathan Schleifer <js@webkeks.org> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE included in * the packaging of this file. */ #import "OFObject.h" #import "OFList.h" #import "OFDictionary.h" /** * An enumerator pair combines a key and its object in a single struct. */ typedef struct __of_enumerator_pair { /// The key id key; /// The object for the key id object; } of_enumerator_pair_t; extern int _OFEnumerator_reference; /** * The OFEnumerator class provides methods to enumerate through objects. */ @interface OFEnumerator: OFObject { struct of_dictionary_bucket *data; size_t size; size_t pos; } - initWithData: (struct of_dictionary_bucket*)data size: (size_t)size; /** * \return A struct containing the next key and object */ - (of_enumerator_pair_t)nextKeyObjectPair; /** * Resets the enumerator, so the next call to nextObject returns the first * again. */ - reset; @end /** * The OFEnumerator category adds functions to get an interator to OFDictionary. */ @interface OFDictionary (OFEnumerator) /** * Creates an OFEnumerator for the dictionary. * * It will copy the data of the OFDictionary so that OFEnumerator will always * operate on the data that was present when it was created. If you changed the * OFDictionary and want to operate on the new data, you need to create a new * OFEnumerator, as using reset will only reset the OFEnumerator, but won't * update the data. It will also retain the data inside the OFDictionary so the * OFEnumerator still works after you released the OFDictionary. Thus, if you * want to get rid of the objects in the OFDictionary, you also need to release * the OFEnumerator. * * \return An OFEnumerator for the OFDictionary */ - (OFEnumerator*)enumerator; @end |
Added src/OFEnumerator.m version [6ddbf6ab86].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | /* * Copyright (c) 2008 - 2009 * Jonathan Schleifer <js@webkeks.org> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE included in * the packaging of this file. */ #include "config.h" #import "OFEnumerator.h" #import "OFDictionary.h" #import "OFExceptions.h" /* Reference for static linking */ int _OFEnumerator_reference; @implementation OFEnumerator - init { @throw [OFNotImplementedException newWithClass: isa selector: _cmd]; } - initWithData: (struct of_dictionary_bucket*)data_ size: (size_t)size_ { size_t i; self = [super init]; size = size_; data = [self allocMemoryForNItems: size withSize: sizeof(struct of_dictionary_bucket)]; for (i = 0; i < size; i++) { if (data_[i].key != nil) { data[i].key = [data_[i].key copy]; data[i].object = [data_[i].object retain]; } else data[i].key = nil; } return self; } - (void)dealloc { size_t i; for (i = 0; i < size; i++) { if (data[i].key != nil) { [data[i].key release]; [data[i].object release]; } } [super dealloc]; } - (of_enumerator_pair_t)nextKeyObjectPair { of_enumerator_pair_t next; for (; pos < size && data[pos].key == nil; pos++); if (pos < size) { next.key = data[pos].key; next.object = data[pos].object; pos++; } else { next.key = nil; next.object = nil; } return next; } - reset { pos = 0; return self; } @end @implementation OFDictionary (OFEnumerator) - (OFEnumerator*)enumerator { return [[[OFEnumerator alloc] initWithData: data size: size] autorelease]; } @end |
Deleted src/OFIterator.h version [c4383df0ad].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted src/OFIterator.m version [fcb2573c11].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Modified src/ObjFW.h from [37f9619c34] to [3af7319142].
︙ | ︙ | |||
17 18 19 20 21 22 23 | #import "OFDataArray.h" #import "OFArray.h" #import "OFList.h" #import "OFDictionary.h" | | | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #import "OFDataArray.h" #import "OFArray.h" #import "OFList.h" #import "OFDictionary.h" #import "OFNumerator.h" #import "OFNumber.h" #import "OFStream.h" #import "OFFile.h" |
︙ | ︙ |
Modified tests/OFDictionary.m from [aef130b0e8] to [4e3b8525e6].
︙ | ︙ | |||
29 30 31 32 33 34 35 | }; void dictionary_tests() { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; OFDictionary *dict = [OFMutableDictionary dictionary], *dict2; | | | | | | | | | 29 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 | }; void dictionary_tests() { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; OFDictionary *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) TEST(@"-[count]", [dict count] == 2) |
︙ | ︙ |