Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Side by Side Diff: third_party/protobuf/objectivec/Tests/GPBDictionaryTests.pddm

Issue 1983203003: Update third_party/protobuf to protobuf-v3.0.0-beta-3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: owners Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2015 Google Inc. All rights reserved. 2 // Copyright 2015 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 12 matching lines...) Expand all
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 30
31 //%PDDM-DEFINE TEST_FOR_POD_KEY(KEY_NAME, KEY_TYPE, KEY1, KEY2, KEY3, KEY4) 31 //%PDDM-DEFINE TEST_FOR_POD_KEY(KEY_NAME, KEY_TYPE, KEY1, KEY2, KEY3, KEY4)
32 //%TESTS_FOR_POD_VALUES(KEY_NAME, KEY_TYPE, , , KEY1, KEY2, KEY3, KEY4) 32 //%TESTS_FOR_POD_VALUES(KEY_NAME, KEY_TYPE, , , KEY1, KEY2, KEY3, KEY4)
33 //%TESTS_FOR_POD_KEY_OBJECT_VALUE(KEY_NAME, KEY_TYPE, KEY1, KEY2, KEY3, KEY4, Ob ject, id, @"abc", @"def", @"ghi", @"jkl") 33 //%TESTS_FOR_POD_KEY_OBJECT_VALUE(KEY_NAME, KEY_TYPE, KEY1, KEY2, KEY3, KEY4, Ob ject, NSString*, @"abc", @"def", @"ghi", @"jkl")
34 34
35 //%PDDM-DEFINE TESTS_FOR_POD_VALUES(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY 2, KEY3, KEY4) 35 //%PDDM-DEFINE TESTS_FOR_POD_VALUES(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY 2, KEY3, KEY4)
36 //%TEST_HELPERS(KEY_NAME, KEY_TYPE, KisP) 36 //%TEST_HELPERS(KEY_NAME, KEY_TYPE, KisP)
37 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , UInt32, uint32_t, , 100U, 101U, 102U, 103U) 37 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , UInt32, uint32_t, , 100U, 101U, 102U, 103U)
38 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Int32, int32_t, , 200, 201, 202, 203) 38 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Int32, int32_t, , 200, 201, 202, 203)
39 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , UInt64, uint64_t, , 300U, 301U, 302U, 303U) 39 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , UInt64, uint64_t, , 300U, 301U, 302U, 303U)
40 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Int64, int64_t, , 400, 401, 402, 403) 40 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Int64, int64_t, , 400, 401, 402, 403)
41 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Bool, BOOL, , YES, YES, NO, NO) 41 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Bool, BOOL, , YES, YES, NO, NO)
42 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Float, float, , 500.f, 501.f, 502.f, 503.f) 42 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Float, float, , 500.f, 501.f, 502.f, 503.f)
43 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Double, double, , 600., 601., 602., 603.) 43 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Double, double, , 600., 601., 602., 603.)
44 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Enum, int32_t, Raw, 700, 701, 702, 703) 44 //%TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4 , Enum, int32_t, Raw, 700, 701, 702, 703)
45 //%TESTS_FOR_ENUM_VALUE_RAW_ADDITIONS(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, K EY2, KEY3, KEY4) 45 //%TESTS_FOR_ENUM_VALUE_RAW_ADDITIONS(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, K EY2, KEY3, KEY4)
46 46
47 //%PDDM-DEFINE TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2 , KEY3, KEY4, VALUE_NAME, VALUE_TYPE, VACCESSOR, VAL1, VAL2, VAL3, VAL4) 47 //%PDDM-DEFINE TESTS_FOR_POD_VALUE(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2 , KEY3, KEY4, VALUE_NAME, VALUE_TYPE, VACCESSOR, VAL1, VAL2, VAL3, VAL4)
48 //%TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4, VALUE _NAME, VALUE_TYPE, , value, POD, VACCESSOR, VAL1, VAL2, VAL3, VAL4) 48 //%TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4, VALUE _NAME, VALUE_TYPE, , value, POD, VACCESSOR, VAL1, VAL2, VAL3, VAL4)
49 49
50 //%PDDM-DEFINE TESTS_FOR_POD_KEY_OBJECT_VALUE(KEY_NAME, KEY_TYPE, KEY1, KEY2, KE Y3, KEY4, VALUE_NAME, VALUE_TYPE, VAL1, VAL2, VAL3, VAL4) 50 //%PDDM-DEFINE TESTS_FOR_POD_KEY_OBJECT_VALUE(KEY_NAME, KEY_TYPE, KEY1, KEY2, KE Y3, KEY4, VALUE_NAME, VALUE_TYPE, VAL1, VAL2, VAL3, VAL4)
51 //%TESTS_COMMON(KEY_NAME, KEY_TYPE, , , KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALU E_TYPE, Objects, object, OBJECT, , VAL1, VAL2, VAL3, VAL4) 51 //%TESTS_COMMON(KEY_NAME, KEY_TYPE, , , KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALU E_TYPE, Objects, object, OBJECT, , VAL1, VAL2, VAL3, VAL4)
52 52
53 //%PDDM-DEFINE DICTIONARY_CLASS_DECLPOD(KEY_NAME, VALUE_NAME, VALUE_TYPE)
54 //%GPB##KEY_NAME##VALUE_NAME##Dictionary
55 //%PDDM-DEFINE DICTIONARY_CLASS_DECLEnum(KEY_NAME, VALUE_NAME, VALUE_TYPE)
56 //%GPB##KEY_NAME##VALUE_NAME##Dictionary
57 //%PDDM-DEFINE DICTIONARY_CLASS_DECLOBJECT(KEY_NAME, VALUE_NAME, VALUE_TYPE)
58 //%GPB##KEY_NAME##VALUE_NAME##Dictionary<VALUE_TYPE>
59
53 //%PDDM-DEFINE TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, VSUFFIX, VNAME, VHELPER, VACCESSOR, VAL1, VAL2, V AL3, VAL4) 60 //%PDDM-DEFINE TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, VSUFFIX, VNAME, VHELPER, VACCESSOR, VAL1, VAL2, V AL3, VAL4)
54 //%#pragma mark - KEY_NAME -> VALUE_NAME 61 //%#pragma mark - KEY_NAME -> VALUE_NAME
55 //% 62 //%
56 //%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryTests : XCTestCase 63 //%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryTests : XCTestCase
57 //%@end 64 //%@end
58 //% 65 //%
59 //%@implementation GPB##KEY_NAME##VALUE_NAME##DictionaryTests 66 //%@implementation GPB##KEY_NAME##VALUE_NAME##DictionaryTests
60 //% 67 //%
61 //%- (void)testEmpty { 68 //%- (void)testEmpty {
62 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [[GPB##KEY_NAME##VALUE_NAME## Dictionary alloc] init]; 69 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [[ GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] init];
63 //% XCTAssertNotNil(dict); 70 //% XCTAssertNotNil(dict);
64 //% XCTAssertEqual(dict.count, 0U); 71 //% XCTAssertEqual(dict.count, 0U);
65 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1) 72 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
66 //% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_T YPE a##VNAME$u, BOOL *stop) { 73 //% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_T YPE a##VNAME$u, BOOL *stop) {
67 //% #pragma unused(aKey, a##VNAME$u, stop) 74 //% #pragma unused(aKey, a##VNAME$u, stop)
68 //% XCTFail(@"Shouldn't get here!"); 75 //% XCTFail(@"Shouldn't get here!");
69 //% }]; 76 //% }];
70 //% [dict release]; 77 //% [dict release];
71 //%} 78 //%}
72 //% 79 //%
73 //%- (void)testOne { 80 //%- (void)testOne {
74 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [GPB##KEY_NAME##VALUE_NAME##D ictionary dictionaryWith##VNAME$u##:VAL1 forKey:KEY1]; 81 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [G PB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWith##VNAME$u##:VAL1 forKey:KEY1] ;
75 //% XCTAssertNotNil(dict); 82 //% XCTAssertNotNil(dict);
76 //% XCTAssertEqual(dict.count, 1U); 83 //% XCTAssertEqual(dict.count, 1U);
77 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 84 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
78 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2) 85 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
79 //% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_T YPE a##VNAME$u, BOOL *stop) { 86 //% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_T YPE a##VNAME$u, BOOL *stop) {
80 //% XCTAssertEqual##KSUFFIX(aKey, KEY1); 87 //% XCTAssertEqual##KSUFFIX(aKey, KEY1);
81 //% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1); 88 //% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1);
82 //% XCTAssertNotEqual(stop, NULL); 89 //% XCTAssertNotEqual(stop, NULL);
83 //% }]; 90 //% }];
84 //%} 91 //%}
85 //% 92 //%
86 //%- (void)testBasics { 93 //%- (void)testBasics {
87 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3 }; 94 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3 };
88 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3 }; 95 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3 };
89 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 96 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
90 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 97 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
91 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 98 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
92 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)]; 99 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)];
93 //% XCTAssertNotNil(dict); 100 //% XCTAssertNotNil(dict);
94 //% XCTAssertEqual(dict.count, 3U); 101 //% XCTAssertEqual(dict.count, 3U);
95 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 102 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
96 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 103 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
97 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3) 104 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
98 //%VALUE_NOT_FOUND##VHELPER(dict, KEY4) 105 //%VALUE_NOT_FOUND##VHELPER(dict, KEY4)
99 //% 106 //%
(...skipping 30 matching lines...) Expand all
130 //% }]; 137 //% }];
131 //% [dict release]; 138 //% [dict release];
132 //%} 139 //%}
133 //% 140 //%
134 //%- (void)testEquality { 141 //%- (void)testEquality {
135 //% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2, KEY3, KEY4 }; 142 //% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2, KEY3, KEY4 };
136 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1, KEY4 }; 143 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1, KEY4 };
137 //% const VALUE_TYPE k##VNAME$u##s1[] = { VAL1, VAL2, VAL3 }; 144 //% const VALUE_TYPE k##VNAME$u##s1[] = { VAL1, VAL2, VAL3 };
138 //% const VALUE_TYPE k##VNAME$u##s2[] = { VAL1, VAL4, VAL3 }; 145 //% const VALUE_TYPE k##VNAME$u##s2[] = { VAL1, VAL4, VAL3 };
139 //% const VALUE_TYPE k##VNAME$u##s3[] = { VAL1, VAL2, VAL3, VAL4 }; 146 //% const VALUE_TYPE k##VNAME$u##s3[] = { VAL1, VAL2, VAL3, VAL4 };
140 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1 = 147 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict1 =
141 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1 148 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1
142 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1 149 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1
143 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)]; 150 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)];
144 //% XCTAssertNotNil(dict1); 151 //% XCTAssertNotNil(dict1);
145 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1prime = 152 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict1prim e =
146 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1 153 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1
147 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1 154 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1
148 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)]; 155 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)];
149 //% XCTAssertNotNil(dict1prime); 156 //% XCTAssertNotNil(dict1prime);
150 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 157 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
151 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s2 158 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s2
152 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1 159 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1
153 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s2)]; 160 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s2)];
154 //% XCTAssertNotNil(dict2); 161 //% XCTAssertNotNil(dict2);
155 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict3 = 162 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict3 =
156 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1 163 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1
157 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 2 164 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 2
158 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)]; 165 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)];
159 //% XCTAssertNotNil(dict3); 166 //% XCTAssertNotNil(dict3);
160 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict4 = 167 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict4 =
161 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s3 168 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s3
162 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1 169 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1
163 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s3)]; 170 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s3)];
164 //% XCTAssertNotNil(dict4); 171 //% XCTAssertNotNil(dict4);
165 //% 172 //%
166 //% // 1/1Prime should be different objects, but equal. 173 //% // 1/1Prime should be different objects, but equal.
167 //% XCTAssertNotEqual(dict1, dict1prime); 174 //% XCTAssertNotEqual(dict1, dict1prime);
168 //% XCTAssertEqualObjects(dict1, dict1prime); 175 //% XCTAssertEqualObjects(dict1, dict1prime);
169 //% // Equal, so they must have same hash. 176 //% // Equal, so they must have same hash.
170 //% XCTAssertEqual([dict1 hash], [dict1prime hash]); 177 //% XCTAssertEqual([dict1 hash], [dict1prime hash]);
(...skipping 10 matching lines...) Expand all
181 //% [dict1 release]; 188 //% [dict1 release];
182 //% [dict1prime release]; 189 //% [dict1prime release];
183 //% [dict2 release]; 190 //% [dict2 release];
184 //% [dict3 release]; 191 //% [dict3 release];
185 //% [dict4 release]; 192 //% [dict4 release];
186 //%} 193 //%}
187 //% 194 //%
188 //%- (void)testCopy { 195 //%- (void)testCopy {
189 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 196 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
190 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 }; 197 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 };
191 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 198 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
192 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 199 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
193 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 200 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
194 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)]; 201 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)];
195 //% XCTAssertNotNil(dict); 202 //% XCTAssertNotNil(dict);
196 //% 203 //%
197 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = [dict copy]; 204 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 = [ dict copy];
198 //% XCTAssertNotNil(dict2); 205 //% XCTAssertNotNil(dict2);
199 //% 206 //%
200 //% // Should be new object but equal. 207 //% // Should be new object but equal.
201 //% XCTAssertNotEqual(dict, dict2); 208 //% XCTAssertNotEqual(dict, dict2);
202 //% XCTAssertEqualObjects(dict, dict2); 209 //% XCTAssertEqualObjects(dict, dict2);
203 //% XCTAssertTrue([dict2 isKindOfClass:[GPB##KEY_NAME##VALUE_NAME##Dictionary c lass]]); 210 //% XCTAssertTrue([dict2 isKindOfClass:[GPB##KEY_NAME##VALUE_NAME##Dictionary c lass]]);
204 //% 211 //%
205 //% [dict2 release]; 212 //% [dict2 release];
206 //% [dict release]; 213 //% [dict release];
207 //%} 214 //%}
208 //% 215 //%
209 //%- (void)testDictionaryFromDictionary { 216 //%- (void)testDictionaryFromDictionary {
210 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 217 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
211 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 }; 218 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 };
212 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 219 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
213 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 220 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
214 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 221 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
215 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)]; 222 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)];
216 //% XCTAssertNotNil(dict); 223 //% XCTAssertNotNil(dict);
217 //% 224 //%
218 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 225 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
219 //% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict]; 226 //% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict];
220 //% XCTAssertNotNil(dict2); 227 //% XCTAssertNotNil(dict2);
221 //% 228 //%
222 //% // Should be new pointer, but equal objects. 229 //% // Should be new pointer, but equal objects.
223 //% XCTAssertNotEqual(dict, dict2); 230 //% XCTAssertNotEqual(dict, dict2);
224 //% XCTAssertEqualObjects(dict, dict2); 231 //% XCTAssertEqualObjects(dict, dict2);
225 //% [dict release]; 232 //% [dict release];
226 //%} 233 //%}
227 //% 234 //%
228 //%- (void)testAdds { 235 //%- (void)testAdds {
229 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [GPB##KEY_NAME##VALUE_NAME##D ictionary dictionary]; 236 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [G PB##KEY_NAME##VALUE_NAME##Dictionary dictionary];
230 //% XCTAssertNotNil(dict); 237 //% XCTAssertNotNil(dict);
231 //% 238 //%
232 //% XCTAssertEqual(dict.count, 0U); 239 //% XCTAssertEqual(dict.count, 0U);
233 //% [dict set##VNAME$u##:VAL1 forKey:KEY1]; 240 //% [dict set##VNAME$u##:VAL1 forKey:KEY1];
234 //% XCTAssertEqual(dict.count, 1U); 241 //% XCTAssertEqual(dict.count, 1U);
235 //% 242 //%
236 //% const KEY_TYPE KisP##kKeys[] = { KEY2, KEY3, KEY4 }; 243 //% const KEY_TYPE KisP##kKeys[] = { KEY2, KEY3, KEY4 };
237 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL2, VAL3, VAL4 }; 244 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL2, VAL3, VAL4 };
238 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 245 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
239 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 246 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
240 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 247 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
241 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)]; 248 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)];
242 //% XCTAssertNotNil(dict2); 249 //% XCTAssertNotNil(dict2);
243 //% [dict add##VACCESSOR##EntriesFromDictionary:dict2]; 250 //% [dict add##VACCESSOR##EntriesFromDictionary:dict2];
244 //% XCTAssertEqual(dict.count, 4U); 251 //% XCTAssertEqual(dict.count, 4U);
245 //% 252 //%
246 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 253 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
247 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 254 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
248 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3) 255 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
249 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4) 256 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4)
250 //% [dict2 release]; 257 //% [dict2 release];
251 //%} 258 //%}
252 //% 259 //%
253 //%- (void)testRemove { 260 //%- (void)testRemove {
254 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 261 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
255 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 }; 262 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 };
256 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 263 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
257 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 264 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
258 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 265 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
259 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE (k##VNAME$u##s)]; 266 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE (k##VNAME$u##s)];
260 //% XCTAssertNotNil(dict); 267 //% XCTAssertNotNil(dict);
261 //% XCTAssertEqual(dict.count, 4U); 268 //% XCTAssertEqual(dict.count, 4U);
262 //% 269 //%
263 //% [dict remove##VNAME$u##ForKey:KEY2]; 270 //% [dict remove##VNAME$u##ForKey:KEY2];
264 //% XCTAssertEqual(dict.count, 3U); 271 //% XCTAssertEqual(dict.count, 3U);
265 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 272 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
266 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2) 273 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
(...skipping 20 matching lines...) Expand all
287 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1) 294 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
288 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2) 295 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
289 //%VALUE_NOT_FOUND##VHELPER(dict, KEY3) 296 //%VALUE_NOT_FOUND##VHELPER(dict, KEY3)
290 //%VALUE_NOT_FOUND##VHELPER(dict, KEY4) 297 //%VALUE_NOT_FOUND##VHELPER(dict, KEY4)
291 //% [dict release]; 298 //% [dict release];
292 //%} 299 //%}
293 //% 300 //%
294 //%- (void)testInplaceMutation { 301 //%- (void)testInplaceMutation {
295 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 302 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
296 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 }; 303 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 };
297 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 304 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
298 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 305 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
299 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 306 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
300 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE (k##VNAME$u##s)]; 307 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE (k##VNAME$u##s)];
301 //% XCTAssertNotNil(dict); 308 //% XCTAssertNotNil(dict);
302 //% XCTAssertEqual(dict.count, 4U); 309 //% XCTAssertEqual(dict.count, 4U);
303 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 310 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
304 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 311 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
305 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3) 312 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
306 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4) 313 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4)
307 //% 314 //%
308 //% [dict set##VNAME$u##:VAL4 forKey:KEY1]; 315 //% [dict set##VNAME$u##:VAL4 forKey:KEY1];
309 //% XCTAssertEqual(dict.count, 4U); 316 //% XCTAssertEqual(dict.count, 4U);
310 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4) 317 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4)
311 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 318 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
312 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3) 319 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
313 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4) 320 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4)
314 //% 321 //%
315 //% [dict set##VNAME$u##:VAL2 forKey:KEY4]; 322 //% [dict set##VNAME$u##:VAL2 forKey:KEY4];
316 //% XCTAssertEqual(dict.count, 4U); 323 //% XCTAssertEqual(dict.count, 4U);
317 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4) 324 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4)
318 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 325 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
319 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3) 326 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
320 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL2) 327 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL2)
321 //% 328 //%
322 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY3 }; 329 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY3 };
323 //% const VALUE_TYPE k##VNAME$u##s2[] = { VAL3, VAL1 }; 330 //% const VALUE_TYPE k##VNAME$u##s2[] = { VAL3, VAL1 };
324 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 331 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
325 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s2 332 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s2
326 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 2 333 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 2
327 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s2)]; 334 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s2)];
328 //% XCTAssertNotNil(dict2); 335 //% XCTAssertNotNil(dict2);
329 //% [dict add##VACCESSOR##EntriesFromDictionary:dict2]; 336 //% [dict add##VACCESSOR##EntriesFromDictionary:dict2];
330 //% XCTAssertEqual(dict.count, 4U); 337 //% XCTAssertEqual(dict.count, 4U);
331 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4) 338 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4)
332 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL3) 339 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL3)
333 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL1) 340 //%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL1)
334 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL2) 341 //%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL2)
(...skipping 11 matching lines...) Expand all
346 //%#pragma mark - KEY_NAME -> VALUE_NAME (Unknown Enums) 353 //%#pragma mark - KEY_NAME -> VALUE_NAME (Unknown Enums)
347 //% 354 //%
348 //%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryUnknownEnumTests : XCTestCase 355 //%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryUnknownEnumTests : XCTestCase
349 //%@end 356 //%@end
350 //% 357 //%
351 //%@implementation GPB##KEY_NAME##VALUE_NAME##DictionaryUnknownEnumTests 358 //%@implementation GPB##KEY_NAME##VALUE_NAME##DictionaryUnknownEnumTests
352 //% 359 //%
353 //%- (void)testRawBasics { 360 //%- (void)testRawBasics {
354 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3 }; 361 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3 };
355 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3 }; 362 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3 };
356 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 363 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
357 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 364 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
358 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues 365 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues
359 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys 366 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys
360 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)]; 367 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)];
361 //% XCTAssertNotNil(dict); 368 //% XCTAssertNotNil(dict);
362 //% XCTAssertEqual(dict.count, 3U); 369 //% XCTAssertEqual(dict.count, 3U);
363 //% XCTAssertTrue(dict.validationFunc == TestingEnum_IsValidValue); // Pointer comparison 370 //% XCTAssertTrue(dict.validationFunc == TestingEnum_IsValidValue); // Pointer comparison
364 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_RAW_VALUE##VHELPER(dict , value, KEY1, VAL1) 371 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_RAW_VALUE##VHELPER(dict , value, KEY1, VAL1)
365 //%TEST_VALUE##VHELPER(dict, value, KEY2, kGPBUnrecognizedEnumeratorValue) 372 //%TEST_VALUE##VHELPER(dict, value, KEY2, kGPBUnrecognizedEnumeratorValue)
366 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY2, VAL2) 373 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY2, VAL2)
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 //% }]; 429 //% }];
423 //% [dict release]; 430 //% [dict release];
424 //%} 431 //%}
425 //% 432 //%
426 //%- (void)testEqualityWithUnknowns { 433 //%- (void)testEqualityWithUnknowns {
427 //% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2, KEY3, KEY4 }; 434 //% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2, KEY3, KEY4 };
428 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1, KEY4 }; 435 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1, KEY4 };
429 //% const VALUE_TYPE kValues1[] = { VAL1, VAL2, VAL3 }; // Unknown 436 //% const VALUE_TYPE kValues1[] = { VAL1, VAL2, VAL3 }; // Unknown
430 //% const VALUE_TYPE kValues2[] = { VAL1, VAL4, VAL3 }; // Unknown 437 //% const VALUE_TYPE kValues2[] = { VAL1, VAL4, VAL3 }; // Unknown
431 //% const VALUE_TYPE kValues3[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknowns 438 //% const VALUE_TYPE kValues3[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknowns
432 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1 = 439 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict1 =
433 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 440 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
434 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues1 441 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues1
435 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys1 442 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys1
436 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues1)]; 443 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues1)];
437 //% XCTAssertNotNil(dict1); 444 //% XCTAssertNotNil(dict1);
438 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1prime = 445 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict1prim e =
439 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 446 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
440 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues1 447 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues1
441 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys1 448 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys1
442 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues1)]; 449 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues1)];
443 //% XCTAssertNotNil(dict1prime); 450 //% XCTAssertNotNil(dict1prime);
444 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 451 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
445 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 452 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
446 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues2 453 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues2
447 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys1 454 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys1
448 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues2)]; 455 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues2)];
449 //% XCTAssertNotNil(dict2); 456 //% XCTAssertNotNil(dict2);
450 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict3 = 457 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict3 =
451 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 458 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
452 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues1 459 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues1
453 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys2 460 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys2
454 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues1)]; 461 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues1)];
455 //% XCTAssertNotNil(dict3); 462 //% XCTAssertNotNil(dict3);
456 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict4 = 463 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict4 =
457 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 464 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
458 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues3 465 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues3
459 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys1 466 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys1
460 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues3)]; 467 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues3)];
461 //% XCTAssertNotNil(dict4); 468 //% XCTAssertNotNil(dict4);
462 //% 469 //%
463 //% // 1/1Prime should be different objects, but equal. 470 //% // 1/1Prime should be different objects, but equal.
464 //% XCTAssertNotEqual(dict1, dict1prime); 471 //% XCTAssertNotEqual(dict1, dict1prime);
465 //% XCTAssertEqualObjects(dict1, dict1prime); 472 //% XCTAssertEqualObjects(dict1, dict1prime);
466 //% // Equal, so they must have same hash. 473 //% // Equal, so they must have same hash.
(...skipping 11 matching lines...) Expand all
478 //% [dict1 release]; 485 //% [dict1 release];
479 //% [dict1prime release]; 486 //% [dict1prime release];
480 //% [dict2 release]; 487 //% [dict2 release];
481 //% [dict3 release]; 488 //% [dict3 release];
482 //% [dict4 release]; 489 //% [dict4 release];
483 //%} 490 //%}
484 //% 491 //%
485 //%- (void)testCopyWithUnknowns { 492 //%- (void)testCopyWithUnknowns {
486 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 493 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
487 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknown 494 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknown
488 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 495 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
489 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 496 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
490 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues 497 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues
491 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys 498 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys
492 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)]; 499 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)];
493 //% XCTAssertNotNil(dict); 500 //% XCTAssertNotNil(dict);
494 //% 501 //%
495 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = [dict copy]; 502 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 = [ dict copy];
496 //% XCTAssertNotNil(dict2); 503 //% XCTAssertNotNil(dict2);
497 //% 504 //%
498 //% // Should be new pointer, but equal objects. 505 //% // Should be new pointer, but equal objects.
499 //% XCTAssertNotEqual(dict, dict2); 506 //% XCTAssertNotEqual(dict, dict2);
500 //% XCTAssertEqual(dict.validationFunc, dict2.validationFunc); // Pointer comp arison 507 //% XCTAssertEqual(dict.validationFunc, dict2.validationFunc); // Pointer comp arison
501 //% XCTAssertEqualObjects(dict, dict2); 508 //% XCTAssertEqualObjects(dict, dict2);
502 //% 509 //%
503 //% [dict2 release]; 510 //% [dict2 release];
504 //% [dict release]; 511 //% [dict release];
505 //%} 512 //%}
506 //% 513 //%
507 //%- (void)testDictionaryFromDictionary { 514 //%- (void)testDictionaryFromDictionary {
508 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 515 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
509 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknowns 516 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknowns
510 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 517 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
511 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 518 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
512 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues 519 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues
513 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys 520 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys
514 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)]; 521 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)];
515 //% XCTAssertNotNil(dict); 522 //% XCTAssertNotNil(dict);
516 //% 523 //%
517 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 524 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
518 //% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict]; 525 //% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict];
519 //% XCTAssertNotNil(dict2); 526 //% XCTAssertNotNil(dict2);
520 //% 527 //%
521 //% // Should be new pointer, but equal objects. 528 //% // Should be new pointer, but equal objects.
522 //% XCTAssertNotEqual(dict, dict2); 529 //% XCTAssertNotEqual(dict, dict2);
523 //% XCTAssertEqualObjects(dict, dict2); 530 //% XCTAssertEqualObjects(dict, dict2);
524 //% XCTAssertEqual(dict.validationFunc, dict2.validationFunc); // Pointer comp arison 531 //% XCTAssertEqual(dict.validationFunc, dict2.validationFunc); // Pointer comp arison
525 //% [dict release]; 532 //% [dict release];
526 //%} 533 //%}
527 //% 534 //%
528 //%- (void)testUnknownAdds { 535 //%- (void)testUnknownAdds {
529 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 536 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
530 //% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithValidationFunction:T estingEnum_IsValidValue]; 537 //% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithValidationFunction:T estingEnum_IsValidValue];
531 //% XCTAssertNotNil(dict); 538 //% XCTAssertNotNil(dict);
532 //% 539 //%
533 //% XCTAssertEqual(dict.count, 0U); 540 //% XCTAssertEqual(dict.count, 0U);
534 //% XCTAssertThrowsSpecificNamed([dict setValue:VAL2 forKey:KEY2], // Unknown 541 //% XCTAssertThrowsSpecificNamed([dict setValue:VAL2 forKey:KEY2], // Unknown
535 //% NSException, NSInvalidArgumentException); 542 //% NSException, NSInvalidArgumentException);
536 //% XCTAssertEqual(dict.count, 0U); 543 //% XCTAssertEqual(dict.count, 0U);
537 //% [dict setRawValue:VAL2 forKey:KEY2]; // Unknown 544 //% [dict setRawValue:VAL2 forKey:KEY2]; // Unknown
538 //% XCTAssertEqual(dict.count, 1U); 545 //% XCTAssertEqual(dict.count, 1U);
539 //% 546 //%
540 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY3, KEY4 }; 547 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY3, KEY4 };
541 //% const VALUE_TYPE kValues[] = { VAL1, VAL3, VAL4 }; // Unknown 548 //% const VALUE_TYPE kValues[] = { VAL1, VAL3, VAL4 }; // Unknown
542 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 549 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
543 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues 550 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
544 //% KEY_NAME$S VALUE_NAME$S forKeys:kKeys 551 //% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
545 //% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZ E(kValues)]; 552 //% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZ E(kValues)];
546 //% XCTAssertNotNil(dict2); 553 //% XCTAssertNotNil(dict2);
547 //% [dict addRawEntriesFromDictionary:dict2]; 554 //% [dict addRawEntriesFromDictionary:dict2];
548 //% XCTAssertEqual(dict.count, 4U); 555 //% XCTAssertEqual(dict.count, 4U);
549 //% 556 //%
550 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, va lue, KEY1, VAL1) 557 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, va lue, KEY1, VAL1)
551 //%TEST_VALUE##VHELPER(dict, value, KEY2, kGPBUnrecognizedEnumeratorValue) 558 //%TEST_VALUE##VHELPER(dict, value, KEY2, kGPBUnrecognizedEnumeratorValue)
552 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY2, VAL2) 559 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY2, VAL2)
553 //%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3) 560 //%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
554 //%TEST_VALUE##VHELPER(dict, value, KEY4, kGPBUnrecognizedEnumeratorValue) 561 //%TEST_VALUE##VHELPER(dict, value, KEY4, kGPBUnrecognizedEnumeratorValue)
555 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY4, VAL4) 562 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY4, VAL4)
556 //% [dict2 release]; 563 //% [dict2 release];
557 //%} 564 //%}
558 //% 565 //%
559 //%- (void)testUnknownRemove { 566 //%- (void)testUnknownRemove {
560 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 567 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
561 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknowns 568 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknowns
562 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 569 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
563 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 570 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
564 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues 571 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues
565 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys 572 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys
566 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)]; 573 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)];
567 //% XCTAssertNotNil(dict); 574 //% XCTAssertNotNil(dict);
568 //% XCTAssertEqual(dict.count, 4U); 575 //% XCTAssertEqual(dict.count, 4U);
569 //% 576 //%
570 //% [dict removeValueForKey:KEY2]; 577 //% [dict removeValueForKey:KEY2];
571 //% XCTAssertEqual(dict.count, 3U); 578 //% XCTAssertEqual(dict.count, 3U);
572 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, va lue, KEY1, VAL1) 579 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, va lue, KEY1, VAL1)
(...skipping 21 matching lines...) Expand all
594 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1) 601 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
595 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2) 602 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
596 //%VALUE_NOT_FOUND##VHELPER(dict, KEY3) 603 //%VALUE_NOT_FOUND##VHELPER(dict, KEY3)
597 //%VALUE_NOT_FOUND##VHELPER(dict, KEY4) 604 //%VALUE_NOT_FOUND##VHELPER(dict, KEY4)
598 //% [dict release]; 605 //% [dict release];
599 //%} 606 //%}
600 //% 607 //%
601 //%- (void)testInplaceMutationUnknowns { 608 //%- (void)testInplaceMutationUnknowns {
602 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 609 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
603 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknowns 610 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; // Unknowns
604 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 611 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
605 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 612 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
606 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues 613 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues
607 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys 614 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys
608 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)]; 615 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)];
609 //% XCTAssertNotNil(dict); 616 //% XCTAssertNotNil(dict);
610 //% XCTAssertEqual(dict.count, 4U); 617 //% XCTAssertEqual(dict.count, 4U);
611 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, va lue, KEY1, VAL1) 618 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, va lue, KEY1, VAL1)
612 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY2, VAL2) 619 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY2, VAL2)
613 //%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3) 620 //%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
614 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY4, VAL4) 621 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY4, VAL4)
(...skipping 15 matching lines...) Expand all
630 //% 637 //%
631 //% [dict setRawValue:VAL1 forKey:KEY4]; 638 //% [dict setRawValue:VAL1 forKey:KEY4];
632 //% XCTAssertEqual(dict.count, 4U); 639 //% XCTAssertEqual(dict.count, 4U);
633 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY1, VAL4) 640 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY1, VAL4)
634 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY2, VAL2) 641 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY2, VAL2)
635 //%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3) 642 //%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
636 //%TEST_VALUE##VHELPER(dict, value, KEY4, VAL1) 643 //%TEST_VALUE##VHELPER(dict, value, KEY4, VAL1)
637 //% 644 //%
638 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY3 }; 645 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY3 };
639 //% const VALUE_TYPE kValues2[] = { VAL3, VAL2 }; // Unknown 646 //% const VALUE_TYPE kValues2[] = { VAL3, VAL2 }; // Unknown
640 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 647 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
641 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 648 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
642 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues2 649 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues2
643 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys2 650 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys2
644 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues2)]; 651 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues2)];
645 //% XCTAssertNotNil(dict2); 652 //% XCTAssertNotNil(dict2);
646 //% [dict addRawEntriesFromDictionary:dict2]; 653 //% [dict addRawEntriesFromDictionary:dict2];
647 //% XCTAssertEqual(dict.count, 4U); 654 //% XCTAssertEqual(dict.count, 4U);
648 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY1, VAL4) 655 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY1, VAL4)
649 //%TEST_VALUE##VHELPER(dict, value, KEY2, VAL3) 656 //%TEST_VALUE##VHELPER(dict, value, KEY2, VAL3)
650 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY3, VAL2) 657 //%TEST_RAW_VALUE##VHELPER(dict, value, KEY3, VAL2)
651 //%TEST_VALUE##VHELPER(dict, value, KEY4, VAL1) 658 //%TEST_VALUE##VHELPER(dict, value, KEY4, VAL1)
652 //% 659 //%
653 //% [dict2 release]; 660 //% [dict2 release];
654 //% [dict release]; 661 //% [dict release];
655 //%} 662 //%}
656 //% 663 //%
657 //%- (void)testCopyUnknowns { 664 //%- (void)testCopyUnknowns {
658 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 }; 665 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
659 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 }; 666 //% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 };
660 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 667 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
661 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue 668 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValidationFuncti on:TestingEnum_IsValidValue
662 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues 669 //% KEY_NAME$S VALUE_NAME$S rawValues :kValues
663 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys 670 //% KEY_NAME$S VALUE_NAME$S forKeys :kKeys
664 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)]; 671 //% KEY_NAME$S VALUE_NAME$S count :GPBARRAYSIZE(kValues)];
665 //% XCTAssertNotNil(dict); 672 //% XCTAssertNotNil(dict);
666 //% 673 //%
667 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = [dict copy]; 674 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 = [ dict copy];
668 //% XCTAssertNotNil(dict2); 675 //% XCTAssertNotNil(dict2);
669 //% 676 //%
670 //% // Should be new pointer, but equal objects. 677 //% // Should be new pointer, but equal objects.
671 //% XCTAssertNotEqual(dict, dict2); 678 //% XCTAssertNotEqual(dict, dict2);
672 //% XCTAssertEqualObjects(dict, dict2); 679 //% XCTAssertEqualObjects(dict, dict2);
673 //% XCTAssertEqual(dict.validationFunc, dict2.validationFunc); // Pointer comp arison 680 //% XCTAssertEqual(dict.validationFunc, dict2.validationFunc); // Pointer comp arison
674 //% XCTAssertTrue([dict2 isKindOfClass:[GPB##KEY_NAME##VALUE_NAME##Dictionary c lass]]); 681 //% XCTAssertTrue([dict2 isKindOfClass:[GPB##KEY_NAME##VALUE_NAME##Dictionary c lass]]);
675 //% 682 //%
676 //% [dict2 release]; 683 //% [dict2 release];
677 //% [dict release]; 684 //% [dict release];
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 782
776 //%PDDM-DEFINE BOOL_TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, VALUE_NAME, VALUE_TYPE, VSUFFIX, VNAME, VHELPER, VAL1, VAL2) 783 //%PDDM-DEFINE BOOL_TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, VALUE_NAME, VALUE_TYPE, VSUFFIX, VNAME, VHELPER, VAL1, VAL2)
777 //%#pragma mark - KEY_NAME -> VALUE_NAME 784 //%#pragma mark - KEY_NAME -> VALUE_NAME
778 //% 785 //%
779 //%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryTests : XCTestCase 786 //%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryTests : XCTestCase
780 //%@end 787 //%@end
781 //% 788 //%
782 //%@implementation GPB##KEY_NAME##VALUE_NAME##DictionaryTests 789 //%@implementation GPB##KEY_NAME##VALUE_NAME##DictionaryTests
783 //% 790 //%
784 //%- (void)testEmpty { 791 //%- (void)testEmpty {
785 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [[GPB##KEY_NAME##VALUE_NAME## Dictionary alloc] init]; 792 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [[ GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] init];
786 //% XCTAssertNotNil(dict); 793 //% XCTAssertNotNil(dict);
787 //% XCTAssertEqual(dict.count, 0U); 794 //% XCTAssertEqual(dict.count, 0U);
788 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1) 795 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
789 //% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_T YPE a##VNAME$u##, BOOL *stop) { 796 //% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_T YPE a##VNAME$u##, BOOL *stop) {
790 //% #pragma unused(aKey, a##VNAME$u##, stop) 797 //% #pragma unused(aKey, a##VNAME$u##, stop)
791 //% XCTFail(@"Shouldn't get here!"); 798 //% XCTFail(@"Shouldn't get here!");
792 //% }]; 799 //% }];
793 //% [dict release]; 800 //% [dict release];
794 //%} 801 //%}
795 //% 802 //%
796 //%- (void)testOne { 803 //%- (void)testOne {
797 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [GPB##KEY_NAME##VALUE_NAME##D ictionary dictionaryWith##VNAME$u##:VAL1 forKey:KEY1]; 804 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [G PB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWith##VNAME$u##:VAL1 forKey:KEY1] ;
798 //% XCTAssertNotNil(dict); 805 //% XCTAssertNotNil(dict);
799 //% XCTAssertEqual(dict.count, 1U); 806 //% XCTAssertEqual(dict.count, 1U);
800 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 807 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
801 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2) 808 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
802 //% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_T YPE a##VNAME$u, BOOL *stop) { 809 //% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_T YPE a##VNAME$u, BOOL *stop) {
803 //% XCTAssertEqual##KSUFFIX(aKey, KEY1); 810 //% XCTAssertEqual##KSUFFIX(aKey, KEY1);
804 //% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1); 811 //% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1);
805 //% XCTAssertNotEqual(stop, NULL); 812 //% XCTAssertNotEqual(stop, NULL);
806 //% }]; 813 //% }];
807 //%} 814 //%}
808 //% 815 //%
809 //%- (void)testBasics { 816 //%- (void)testBasics {
810 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 }; 817 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
811 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 }; 818 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
812 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 819 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
813 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 820 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
814 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 821 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
815 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)]; 822 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)];
816 //% XCTAssertNotNil(dict); 823 //% XCTAssertNotNil(dict);
817 //% XCTAssertEqual(dict.count, 2U); 824 //% XCTAssertEqual(dict.count, 2U);
818 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 825 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
819 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 826 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
820 //% 827 //%
821 //% __block NSUInteger idx = 0; 828 //% __block NSUInteger idx = 0;
822 //% KEY_TYPE KisP##*seenKeys = malloc(2 * sizeof(KEY_TYPE##KisP)); 829 //% KEY_TYPE KisP##*seenKeys = malloc(2 * sizeof(KEY_TYPE##KisP));
(...skipping 28 matching lines...) Expand all
851 //% }]; 858 //% }];
852 //% [dict release]; 859 //% [dict release];
853 //%} 860 //%}
854 //% 861 //%
855 //%- (void)testEquality { 862 //%- (void)testEquality {
856 //% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2 }; 863 //% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2 };
857 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1 }; 864 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1 };
858 //% const VALUE_TYPE k##VNAME$u##s1[] = { VAL1, VAL2 }; 865 //% const VALUE_TYPE k##VNAME$u##s1[] = { VAL1, VAL2 };
859 //% const VALUE_TYPE k##VNAME$u##s2[] = { VAL2, VAL1 }; 866 //% const VALUE_TYPE k##VNAME$u##s2[] = { VAL2, VAL1 };
860 //% const VALUE_TYPE k##VNAME$u##s3[] = { VAL2 }; 867 //% const VALUE_TYPE k##VNAME$u##s3[] = { VAL2 };
861 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1 = 868 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict1 =
862 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1 869 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1
863 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1 870 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1
864 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)]; 871 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)];
865 //% XCTAssertNotNil(dict1); 872 //% XCTAssertNotNil(dict1);
866 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1prime = 873 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict1prim e =
867 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1 874 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1
868 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1 875 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1
869 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)]; 876 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)];
870 //% XCTAssertNotNil(dict1prime); 877 //% XCTAssertNotNil(dict1prime);
871 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 878 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
872 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s2 879 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s2
873 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1 880 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1
874 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s2)]; 881 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s2)];
875 //% XCTAssertNotNil(dict2); 882 //% XCTAssertNotNil(dict2);
876 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict3 = 883 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict3 =
877 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1 884 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s1
878 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 2 885 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 2
879 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)]; 886 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s1)];
880 //% XCTAssertNotNil(dict3); 887 //% XCTAssertNotNil(dict3);
881 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict4 = 888 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict4 =
882 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s3 889 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s3
883 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1 890 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1
884 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s3)]; 891 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s3)];
885 //% XCTAssertNotNil(dict4); 892 //% XCTAssertNotNil(dict4);
886 //% 893 //%
887 //% // 1/1Prime should be different objects, but equal. 894 //% // 1/1Prime should be different objects, but equal.
888 //% XCTAssertNotEqual(dict1, dict1prime); 895 //% XCTAssertNotEqual(dict1, dict1prime);
889 //% XCTAssertEqualObjects(dict1, dict1prime); 896 //% XCTAssertEqualObjects(dict1, dict1prime);
890 //% // Equal, so they must have same hash. 897 //% // Equal, so they must have same hash.
891 //% XCTAssertEqual([dict1 hash], [dict1prime hash]); 898 //% XCTAssertEqual([dict1 hash], [dict1prime hash]);
(...skipping 10 matching lines...) Expand all
902 //% [dict1 release]; 909 //% [dict1 release];
903 //% [dict1prime release]; 910 //% [dict1prime release];
904 //% [dict2 release]; 911 //% [dict2 release];
905 //% [dict3 release]; 912 //% [dict3 release];
906 //% [dict4 release]; 913 //% [dict4 release];
907 //%} 914 //%}
908 //% 915 //%
909 //%- (void)testCopy { 916 //%- (void)testCopy {
910 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 }; 917 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
911 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 }; 918 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
912 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 919 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
913 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 920 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
914 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 921 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
915 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)]; 922 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)];
916 //% XCTAssertNotNil(dict); 923 //% XCTAssertNotNil(dict);
917 //% 924 //%
918 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = [dict copy]; 925 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 = [ dict copy];
919 //% XCTAssertNotNil(dict2); 926 //% XCTAssertNotNil(dict2);
920 //% 927 //%
921 //% // Should be new object but equal. 928 //% // Should be new object but equal.
922 //% XCTAssertNotEqual(dict, dict2); 929 //% XCTAssertNotEqual(dict, dict2);
923 //% XCTAssertEqualObjects(dict, dict2); 930 //% XCTAssertEqualObjects(dict, dict2);
924 //% XCTAssertTrue([dict2 isKindOfClass:[GPB##KEY_NAME##VALUE_NAME##Dictionary c lass]]); 931 //% XCTAssertTrue([dict2 isKindOfClass:[GPB##KEY_NAME##VALUE_NAME##Dictionary c lass]]);
925 //% 932 //%
926 //% [dict2 release]; 933 //% [dict2 release];
927 //% [dict release]; 934 //% [dict release];
928 //%} 935 //%}
929 //% 936 //%
930 //%- (void)testDictionaryFromDictionary { 937 //%- (void)testDictionaryFromDictionary {
931 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 }; 938 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
932 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 }; 939 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
933 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 940 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
934 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 941 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
935 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 942 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
936 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)]; 943 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)];
937 //% XCTAssertNotNil(dict); 944 //% XCTAssertNotNil(dict);
938 //% 945 //%
939 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 946 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
940 //% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict]; 947 //% [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithDictionary:dict];
941 //% XCTAssertNotNil(dict2); 948 //% XCTAssertNotNil(dict2);
942 //% 949 //%
943 //% // Should be new pointer, but equal objects. 950 //% // Should be new pointer, but equal objects.
944 //% XCTAssertNotEqual(dict, dict2); 951 //% XCTAssertNotEqual(dict, dict2);
945 //% XCTAssertEqualObjects(dict, dict2); 952 //% XCTAssertEqualObjects(dict, dict2);
946 //% [dict release]; 953 //% [dict release];
947 //%} 954 //%}
948 //% 955 //%
949 //%- (void)testAdds { 956 //%- (void)testAdds {
950 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [GPB##KEY_NAME##VALUE_NAME##D ictionary dictionary]; 957 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict = [G PB##KEY_NAME##VALUE_NAME##Dictionary dictionary];
951 //% XCTAssertNotNil(dict); 958 //% XCTAssertNotNil(dict);
952 //% 959 //%
953 //% XCTAssertEqual(dict.count, 0U); 960 //% XCTAssertEqual(dict.count, 0U);
954 //% [dict set##VNAME$u:VAL1 forKey:KEY1]; 961 //% [dict set##VNAME$u:VAL1 forKey:KEY1];
955 //% XCTAssertEqual(dict.count, 1U); 962 //% XCTAssertEqual(dict.count, 1U);
956 //% 963 //%
957 //% const KEY_TYPE KisP##kKeys[] = { KEY2 }; 964 //% const KEY_TYPE KisP##kKeys[] = { KEY2 };
958 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL2 }; 965 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL2 };
959 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 966 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
960 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 967 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
961 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 968 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
962 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)]; 969 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s)];
963 //% XCTAssertNotNil(dict2); 970 //% XCTAssertNotNil(dict2);
964 //% [dict addEntriesFromDictionary:dict2]; 971 //% [dict addEntriesFromDictionary:dict2];
965 //% XCTAssertEqual(dict.count, 2U); 972 //% XCTAssertEqual(dict.count, 2U);
966 //% 973 //%
967 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 974 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
968 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 975 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
969 //% [dict2 release]; 976 //% [dict2 release];
970 //%} 977 //%}
971 //% 978 //%
972 //%- (void)testRemove { 979 //%- (void)testRemove {
973 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2}; 980 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2};
974 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 }; 981 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
975 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 982 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
976 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 983 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
977 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 984 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
978 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE (k##VNAME$u##s)]; 985 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE (k##VNAME$u##s)];
979 //% XCTAssertNotNil(dict); 986 //% XCTAssertNotNil(dict);
980 //% XCTAssertEqual(dict.count, 2U); 987 //% XCTAssertEqual(dict.count, 2U);
981 //% 988 //%
982 //% [dict remove##VNAME$u##ForKey:KEY2]; 989 //% [dict remove##VNAME$u##ForKey:KEY2];
983 //% XCTAssertEqual(dict.count, 1U); 990 //% XCTAssertEqual(dict.count, 1U);
984 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 991 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
985 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2) 992 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
986 //% 993 //%
987 //% // Remove again does nothing. 994 //% // Remove again does nothing.
988 //% [dict remove##VNAME$u##ForKey:KEY2]; 995 //% [dict remove##VNAME$u##ForKey:KEY2];
989 //% XCTAssertEqual(dict.count, 1U); 996 //% XCTAssertEqual(dict.count, 1U);
990 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1) 997 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
991 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2) 998 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
992 //% 999 //%
993 //% [dict removeAll]; 1000 //% [dict removeAll];
994 //% XCTAssertEqual(dict.count, 0U); 1001 //% XCTAssertEqual(dict.count, 0U);
995 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1) 1002 //%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
996 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2) 1003 //%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
997 //% [dict release]; 1004 //% [dict release];
998 //%} 1005 //%}
999 //% 1006 //%
1000 //%- (void)testInplaceMutation { 1007 //%- (void)testInplaceMutation {
1001 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 }; 1008 //% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
1002 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 }; 1009 //% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
1003 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = 1010 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict =
1004 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s 1011 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s
1005 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 1012 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
1006 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE (k##VNAME$u##s)]; 1013 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE (k##VNAME$u##s)];
1007 //% XCTAssertNotNil(dict); 1014 //% XCTAssertNotNil(dict);
1008 //% XCTAssertEqual(dict.count, 2U); 1015 //% XCTAssertEqual(dict.count, 2U);
1009 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1) 1016 //%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VN AME, KEY1, VAL1)
1010 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 1017 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
1011 //% 1018 //%
1012 //% [dict set##VNAME$u##:VAL2 forKey:KEY1]; 1019 //% [dict set##VNAME$u##:VAL2 forKey:KEY1];
1013 //% XCTAssertEqual(dict.count, 2U); 1020 //% XCTAssertEqual(dict.count, 2U);
1014 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL2) 1021 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL2)
1015 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 1022 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
1016 //% 1023 //%
1017 //% [dict set##VNAME$u##:VAL1 forKey:KEY2]; 1024 //% [dict set##VNAME$u##:VAL1 forKey:KEY2];
1018 //% XCTAssertEqual(dict.count, 2U); 1025 //% XCTAssertEqual(dict.count, 2U);
1019 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL2) 1026 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL2)
1020 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL1) 1027 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL1)
1021 //% 1028 //%
1022 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1 }; 1029 //% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1 };
1023 //% const VALUE_TYPE k##VNAME$u##s2[] = { VAL2, VAL1 }; 1030 //% const VALUE_TYPE k##VNAME$u##s2[] = { VAL2, VAL1 };
1024 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = 1031 //% DICTIONARY_CLASS_DECL##VHELPER(KEY_NAME, VALUE_NAME, VALUE_TYPE) *dict2 =
1025 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s2 1032 //% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k## VNAME$u##s2
1026 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 2 1033 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys 2
1027 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s2)]; 1034 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBAR RAYSIZE(k##VNAME$u##s2)];
1028 //% XCTAssertNotNil(dict2); 1035 //% XCTAssertNotNil(dict2);
1029 //% [dict addEntriesFromDictionary:dict2]; 1036 //% [dict addEntriesFromDictionary:dict2];
1030 //% XCTAssertEqual(dict.count, 2U); 1037 //% XCTAssertEqual(dict.count, 2U);
1031 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1) 1038 //%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
1032 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2) 1039 //%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
1033 //% 1040 //%
1034 //% [dict2 release]; 1041 //% [dict2 release];
1035 //% [dict release]; 1042 //% [dict release];
1036 //%} 1043 //%}
1037 //% 1044 //%
1038 //%@end 1045 //%@end
1039 //% 1046 //%
1040 1047
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698