|
@@ -45,12 +45,12 @@
|
|
//%TESTS_FOR_ENUM_VALUE_RAW_ADDITIONS(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4)
|
|
//%TESTS_FOR_ENUM_VALUE_RAW_ADDITIONS(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4)
|
|
|
|
|
|
//%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)
|
|
//%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)
|
|
-//%TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, , POD, VACCESSOR, VAL1, VAL2, VAL3, VAL4)
|
|
|
|
|
|
+//%TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, , value, POD, VACCESSOR, VAL1, VAL2, VAL3, VAL4)
|
|
|
|
|
|
//%PDDM-DEFINE TESTS_FOR_POD_KEY_OBJECT_VALUE(KEY_NAME, KEY_TYPE, KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, VAL1, VAL2, VAL3, VAL4)
|
|
//%PDDM-DEFINE TESTS_FOR_POD_KEY_OBJECT_VALUE(KEY_NAME, KEY_TYPE, KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, VAL1, VAL2, VAL3, VAL4)
|
|
-//%TESTS_COMMON(KEY_NAME, KEY_TYPE, , , KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, Objects, OBJECT, , VAL1, VAL2, VAL3, VAL4)
|
|
|
|
|
|
+//%TESTS_COMMON(KEY_NAME, KEY_TYPE, , , KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, Objects, object, OBJECT, , VAL1, VAL2, VAL3, VAL4)
|
|
|
|
|
|
-//%PDDM-DEFINE TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, VSUFFIX, VHELPER, VACCESSOR, VAL1, VAL2, VAL3, VAL4)
|
|
|
|
|
|
+//%PDDM-DEFINE TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, KEY3, KEY4, VALUE_NAME, VALUE_TYPE, VSUFFIX, VNAME, VHELPER, VACCESSOR, VAL1, VAL2, VAL3, VAL4)
|
|
//%#pragma mark - KEY_NAME -> VALUE_NAME
|
|
//%#pragma mark - KEY_NAME -> VALUE_NAME
|
|
//%
|
|
//%
|
|
//%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryTests : XCTestCase
|
|
//%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryTests : XCTestCase
|
|
@@ -63,47 +63,47 @@
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 0U);
|
|
//% XCTAssertEqual(dict.count, 0U);
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
|
|
-//% [dict enumerateKeysAndValuesUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE aValue, BOOL *stop) {
|
|
|
|
-//% #pragma unused(aKey, aValue, stop)
|
|
|
|
|
|
+//% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE a##VNAME$u, BOOL *stop) {
|
|
|
|
+//% #pragma unused(aKey, a##VNAME$u, stop)
|
|
//% XCTFail(@"Shouldn't get here!");
|
|
//% XCTFail(@"Shouldn't get here!");
|
|
//% }];
|
|
//% }];
|
|
//% [dict release];
|
|
//% [dict release];
|
|
//%}
|
|
//%}
|
|
//%
|
|
//%
|
|
//%- (void)testOne {
|
|
//%- (void)testOne {
|
|
-//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithValue:VAL1 forKey:KEY1];
|
|
|
|
|
|
+//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWith##VNAME$u##:VAL1 forKey:KEY1];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
-//% [dict enumerateKeysAndValuesUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE aValue, BOOL *stop) {
|
|
|
|
|
|
+//% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE a##VNAME$u, BOOL *stop) {
|
|
//% XCTAssertEqual##KSUFFIX(aKey, KEY1);
|
|
//% XCTAssertEqual##KSUFFIX(aKey, KEY1);
|
|
-//% XCTAssertEqual##VSUFFIX(aValue, VAL1);
|
|
|
|
|
|
+//% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1);
|
|
//% XCTAssertNotEqual(stop, NULL);
|
|
//% XCTAssertNotEqual(stop, NULL);
|
|
//% }];
|
|
//% }];
|
|
//%}
|
|
//%}
|
|
//%
|
|
//%
|
|
//%- (void)testBasics {
|
|
//%- (void)testBasics {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 3U);
|
|
//% XCTAssertEqual(dict.count, 3U);
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY4)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY4)
|
|
//%
|
|
//%
|
|
//% __block NSUInteger idx = 0;
|
|
//% __block NSUInteger idx = 0;
|
|
//% KEY_TYPE KisP##*seenKeys = malloc(3 * sizeof(KEY_TYPE##KisP));
|
|
//% KEY_TYPE KisP##*seenKeys = malloc(3 * sizeof(KEY_TYPE##KisP));
|
|
-//% VALUE_TYPE *seenValues = malloc(3 * sizeof(VALUE_TYPE));
|
|
|
|
-//% [dict enumerateKeysAndValuesUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE aValue, BOOL *stop) {
|
|
|
|
|
|
+//% VALUE_TYPE *seen##VNAME$u##s = malloc(3 * sizeof(VALUE_TYPE));
|
|
|
|
+//% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE a##VNAME$u, BOOL *stop) {
|
|
//% XCTAssertLessThan(idx, 3U);
|
|
//% XCTAssertLessThan(idx, 3U);
|
|
//% seenKeys[idx] = aKey;
|
|
//% seenKeys[idx] = aKey;
|
|
-//% seenValues[idx] = aValue;
|
|
|
|
|
|
+//% seen##VNAME$u##s[idx] = a##VNAME$u##;
|
|
//% XCTAssertNotEqual(stop, NULL);
|
|
//% XCTAssertNotEqual(stop, NULL);
|
|
//% ++idx;
|
|
//% ++idx;
|
|
//% }];
|
|
//% }];
|
|
@@ -112,18 +112,18 @@
|
|
//% for (int j = 0; (j < 3) && !foundKey; ++j) {
|
|
//% for (int j = 0; (j < 3) && !foundKey; ++j) {
|
|
//% if (COMPARE_KEYS##KSUFFIX(kKeys[i], seenKeys[j])) {
|
|
//% if (COMPARE_KEYS##KSUFFIX(kKeys[i], seenKeys[j])) {
|
|
//% foundKey = YES;
|
|
//% foundKey = YES;
|
|
-//% XCTAssertEqual##VSUFFIX(kValues[i], seenValues[j], @"i = %d, j = %d", i, j);
|
|
|
|
|
|
+//% XCTAssertEqual##VSUFFIX(k##VNAME$u##s[i], seen##VNAME$u##s[j], @"i = %d, j = %d", i, j);
|
|
//% }
|
|
//% }
|
|
//% }
|
|
//% }
|
|
//% XCTAssertTrue(foundKey, @"i = %d", i);
|
|
//% XCTAssertTrue(foundKey, @"i = %d", i);
|
|
//% }
|
|
//% }
|
|
//% free(seenKeys);
|
|
//% free(seenKeys);
|
|
-//% free(seenValues);
|
|
|
|
|
|
+//% free(seen##VNAME$u##s);
|
|
//%
|
|
//%
|
|
//% // Stopping the enumeration.
|
|
//% // Stopping the enumeration.
|
|
//% idx = 0;
|
|
//% idx = 0;
|
|
-//% [dict enumerateKeysAndValuesUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE aValue, BOOL *stop) {
|
|
|
|
-//% #pragma unused(aKey, aValue)
|
|
|
|
|
|
+//% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE a##VNAME$u, BOOL *stop) {
|
|
|
|
+//% #pragma unused(aKey, a##VNAME$u)
|
|
//% if (idx == 1) *stop = YES;
|
|
//% if (idx == 1) *stop = YES;
|
|
//% XCTAssertNotEqual(idx, 2U);
|
|
//% XCTAssertNotEqual(idx, 2U);
|
|
//% ++idx;
|
|
//% ++idx;
|
|
@@ -134,33 +134,33 @@
|
|
//%- (void)testEquality {
|
|
//%- (void)testEquality {
|
|
//% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
//% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
//% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1, KEY4 };
|
|
//% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1, KEY4 };
|
|
-//% const VALUE_TYPE kValues1[] = { VAL1, VAL2, VAL3 };
|
|
|
|
-//% const VALUE_TYPE kValues2[] = { VAL1, VAL4, VAL3 };
|
|
|
|
-//% const VALUE_TYPE kValues3[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s1[] = { VAL1, VAL2, VAL3 };
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s2[] = { VAL1, VAL4, VAL3 };
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s3[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues1)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s1)];
|
|
//% XCTAssertNotNil(dict1);
|
|
//% XCTAssertNotNil(dict1);
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1prime =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1prime =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues1)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s1)];
|
|
//% XCTAssertNotNil(dict1prime);
|
|
//% XCTAssertNotNil(dict1prime);
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues2
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues2)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s2
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s2)];
|
|
//% XCTAssertNotNil(dict2);
|
|
//% XCTAssertNotNil(dict2);
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict3 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict3 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys2
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues1)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys2
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s1)];
|
|
//% XCTAssertNotNil(dict3);
|
|
//% XCTAssertNotNil(dict3);
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict4 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict4 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues3
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues3)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s3
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s3)];
|
|
//% XCTAssertNotNil(dict4);
|
|
//% XCTAssertNotNil(dict4);
|
|
//%
|
|
//%
|
|
//% // 1/1Prime should be different objects, but equal.
|
|
//% // 1/1Prime should be different objects, but equal.
|
|
@@ -169,10 +169,10 @@
|
|
//% // Equal, so they must have same hash.
|
|
//% // Equal, so they must have same hash.
|
|
//% XCTAssertEqual([dict1 hash], [dict1prime hash]);
|
|
//% XCTAssertEqual([dict1 hash], [dict1prime hash]);
|
|
//%
|
|
//%
|
|
-//% // 2 is save keys, different values; not equal.
|
|
|
|
|
|
+//% // 2 is same keys, different ##VNAME##s; not equal.
|
|
//% XCTAssertNotEqualObjects(dict1, dict2);
|
|
//% XCTAssertNotEqualObjects(dict1, dict2);
|
|
//%
|
|
//%
|
|
-//% // 3 is different keys, samae values; not equal.
|
|
|
|
|
|
+//% // 3 is different keys, same ##VNAME##s; not equal.
|
|
//% XCTAssertNotEqualObjects(dict1, dict3);
|
|
//% XCTAssertNotEqualObjects(dict1, dict3);
|
|
//%
|
|
//%
|
|
//% // 4 extra pair; not equal
|
|
//% // 4 extra pair; not equal
|
|
@@ -187,11 +187,11 @@
|
|
//%
|
|
//%
|
|
//%- (void)testCopy {
|
|
//%- (void)testCopy {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//%
|
|
//%
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = [dict copy];
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = [dict copy];
|
|
@@ -208,11 +208,11 @@
|
|
//%
|
|
//%
|
|
//%- (void)testDictionaryFromDictionary {
|
|
//%- (void)testDictionaryFromDictionary {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//%
|
|
//%
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
@@ -230,56 +230,56 @@
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//%
|
|
//%
|
|
//% XCTAssertEqual(dict.count, 0U);
|
|
//% XCTAssertEqual(dict.count, 0U);
|
|
-//% [dict setValue:VAL1 forKey:KEY1];
|
|
|
|
|
|
+//% [dict set##VNAME$u##:VAL1 forKey:KEY1];
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
//%
|
|
//%
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY2, KEY3, KEY4 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY2, KEY3, KEY4 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL2, VAL3, VAL4 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL2, VAL3, VAL4 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict2);
|
|
//% XCTAssertNotNil(dict2);
|
|
//% [dict add##VACCESSOR##EntriesFromDictionary:dict2];
|
|
//% [dict add##VACCESSOR##EntriesFromDictionary:dict2];
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
//%
|
|
//%
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY4, VAL4)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4)
|
|
//% [dict2 release];
|
|
//% [dict2 release];
|
|
//%}
|
|
//%}
|
|
//%
|
|
//%
|
|
//%- (void)testRemove {
|
|
//%- (void)testRemove {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
//%
|
|
//%
|
|
-//% [dict removeValueForKey:KEY2];
|
|
|
|
|
|
+//% [dict remove##VNAME$u##ForKey:KEY2];
|
|
//% XCTAssertEqual(dict.count, 3U);
|
|
//% XCTAssertEqual(dict.count, 3U);
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY4, VAL4)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4)
|
|
//%
|
|
//%
|
|
//% // Remove again does nothing.
|
|
//% // Remove again does nothing.
|
|
-//% [dict removeValueForKey:KEY2];
|
|
|
|
|
|
+//% [dict remove##VNAME$u##ForKey:KEY2];
|
|
//% XCTAssertEqual(dict.count, 3U);
|
|
//% XCTAssertEqual(dict.count, 3U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY4, VAL4)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4)
|
|
//%
|
|
//%
|
|
-//% [dict removeValueForKey:KEY4];
|
|
|
|
|
|
+//% [dict remove##VNAME$u##ForKey:KEY4];
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY4)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY4)
|
|
//%
|
|
//%
|
|
//% [dict removeAll];
|
|
//% [dict removeAll];
|
|
@@ -293,45 +293,45 @@
|
|
//%
|
|
//%
|
|
//%- (void)testInplaceMutation {
|
|
//%- (void)testInplaceMutation {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2, KEY3, KEY4 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2, VAL3, VAL4 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY4, VAL4)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4)
|
|
//%
|
|
//%
|
|
-//% [dict setValue:VAL4 forKey:KEY1];
|
|
|
|
|
|
+//% [dict set##VNAME$u##:VAL4 forKey:KEY1];
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL4)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY4, VAL4)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL4)
|
|
//%
|
|
//%
|
|
-//% [dict setValue:VAL2 forKey:KEY4];
|
|
|
|
|
|
+//% [dict set##VNAME$u##:VAL2 forKey:KEY4];
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL4)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL3)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY4, VAL2)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL3)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL2)
|
|
//%
|
|
//%
|
|
//% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY3 };
|
|
//% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY3 };
|
|
-//% const VALUE_TYPE kValues2[] = { VAL3, VAL1 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s2[] = { VAL3, VAL1 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues2
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys2
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues2)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s2
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys2
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s2)];
|
|
//% XCTAssertNotNil(dict2);
|
|
//% XCTAssertNotNil(dict2);
|
|
//% [dict add##VACCESSOR##EntriesFromDictionary:dict2];
|
|
//% [dict add##VACCESSOR##EntriesFromDictionary:dict2];
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
//% XCTAssertEqual(dict.count, 4U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL4)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL3)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY3, VAL1)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY4, VAL2)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL4)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL3)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY3, VAL1)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY4, VAL2)
|
|
//%
|
|
//%
|
|
//% [dict2 release];
|
|
//% [dict2 release];
|
|
//% [dict release];
|
|
//% [dict release];
|
|
@@ -466,10 +466,10 @@
|
|
//% // Equal, so they must have same hash.
|
|
//% // Equal, so they must have same hash.
|
|
//% XCTAssertEqual([dict1 hash], [dict1prime hash]);
|
|
//% XCTAssertEqual([dict1 hash], [dict1prime hash]);
|
|
//%
|
|
//%
|
|
-//% // 2 is save keys, different values; not equal.
|
|
|
|
|
|
+//% // 2 is same keys, different values; not equal.
|
|
//% XCTAssertNotEqualObjects(dict1, dict2);
|
|
//% XCTAssertNotEqualObjects(dict1, dict2);
|
|
//%
|
|
//%
|
|
-//% // 3 is different keys, samae values; not equal.
|
|
|
|
|
|
+//% // 3 is different keys, same values; not equal.
|
|
//% XCTAssertNotEqualObjects(dict1, dict3);
|
|
//% XCTAssertNotEqualObjects(dict1, dict3);
|
|
//%
|
|
//%
|
|
//% // 4 extra pair; not equal
|
|
//% // 4 extra pair; not equal
|
|
@@ -709,9 +709,9 @@
|
|
//%PDDM-DEFINE DECLARE_VALUE_STORAGEOBJECT(VALUE_TYPE, NAME)
|
|
//%PDDM-DEFINE DECLARE_VALUE_STORAGEOBJECT(VALUE_TYPE, NAME)
|
|
// Empty
|
|
// Empty
|
|
//%PDDM-DEFINE VALUE_NOT_FOUNDOBJECT(DICT, KEY)
|
|
//%PDDM-DEFINE VALUE_NOT_FOUNDOBJECT(DICT, KEY)
|
|
-//% XCTAssertNil([DICT valueForKey:KEY]);
|
|
|
|
|
|
+//% XCTAssertNil([DICT objectForKey:KEY]);
|
|
//%PDDM-DEFINE TEST_VALUEOBJECT(DICT, STORAGE, KEY, VALUE)
|
|
//%PDDM-DEFINE TEST_VALUEOBJECT(DICT, STORAGE, KEY, VALUE)
|
|
-//% XCTAssertEqualObjects([DICT valueForKey:KEY], VALUE);
|
|
|
|
|
|
+//% XCTAssertEqualObjects([DICT objectForKey:KEY], VALUE);
|
|
//%PDDM-DEFINE COMPARE_KEYSObjects(KEY1, KEY2)
|
|
//%PDDM-DEFINE COMPARE_KEYSObjects(KEY1, KEY2)
|
|
//%[KEY1 isEqual:KEY2]
|
|
//%[KEY1 isEqual:KEY2]
|
|
|
|
|
|
@@ -768,12 +768,12 @@
|
|
//TODO(thomasvl): enum tests
|
|
//TODO(thomasvl): enum tests
|
|
|
|
|
|
//%PDDM-DEFINE BOOL_TESTS_FOR_POD_VALUE(VALUE_NAME, VALUE_TYPE, VAL1, VAL2)
|
|
//%PDDM-DEFINE BOOL_TESTS_FOR_POD_VALUE(VALUE_NAME, VALUE_TYPE, VAL1, VAL2)
|
|
-//%BOOL_TESTS_COMMON(Bool, BOOL, , , YES, NO, VALUE_NAME, VALUE_TYPE, , POD, VAL1, VAL2)
|
|
|
|
|
|
+//%BOOL_TESTS_COMMON(Bool, BOOL, , , YES, NO, VALUE_NAME, VALUE_TYPE, , value, POD, VAL1, VAL2)
|
|
|
|
|
|
//%PDDM-DEFINE TESTS_FOR_BOOL_KEY_OBJECT_VALUE(VALUE_NAME, VALUE_TYPE, VAL1, VAL2)
|
|
//%PDDM-DEFINE TESTS_FOR_BOOL_KEY_OBJECT_VALUE(VALUE_NAME, VALUE_TYPE, VAL1, VAL2)
|
|
-//%BOOL_TESTS_COMMON(Bool, BOOL, , , YES, NO, VALUE_NAME, VALUE_TYPE, Objects, OBJECT, VAL1, VAL2)
|
|
|
|
|
|
+//%BOOL_TESTS_COMMON(Bool, BOOL, , , YES, NO, VALUE_NAME, VALUE_TYPE, Objects, object, OBJECT, VAL1, VAL2)
|
|
|
|
|
|
-//%PDDM-DEFINE BOOL_TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, VALUE_NAME, VALUE_TYPE, VSUFFIX, VHELPER, VAL1, VAL2)
|
|
|
|
|
|
+//%PDDM-DEFINE BOOL_TESTS_COMMON(KEY_NAME, KEY_TYPE, KisP, KSUFFIX, KEY1, KEY2, VALUE_NAME, VALUE_TYPE, VSUFFIX, VNAME, VHELPER, VAL1, VAL2)
|
|
//%#pragma mark - KEY_NAME -> VALUE_NAME
|
|
//%#pragma mark - KEY_NAME -> VALUE_NAME
|
|
//%
|
|
//%
|
|
//%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryTests : XCTestCase
|
|
//%@interface GPB##KEY_NAME##VALUE_NAME##DictionaryTests : XCTestCase
|
|
@@ -786,45 +786,45 @@
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 0U);
|
|
//% XCTAssertEqual(dict.count, 0U);
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY1)
|
|
-//% [dict enumerateKeysAndValuesUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE aValue, BOOL *stop) {
|
|
|
|
-//% #pragma unused(aKey, aValue, stop)
|
|
|
|
|
|
+//% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE a##VNAME$u##, BOOL *stop) {
|
|
|
|
+//% #pragma unused(aKey, a##VNAME$u##, stop)
|
|
//% XCTFail(@"Shouldn't get here!");
|
|
//% XCTFail(@"Shouldn't get here!");
|
|
//% }];
|
|
//% }];
|
|
//% [dict release];
|
|
//% [dict release];
|
|
//%}
|
|
//%}
|
|
//%
|
|
//%
|
|
//%- (void)testOne {
|
|
//%- (void)testOne {
|
|
-//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWithValue:VAL1 forKey:KEY1];
|
|
|
|
|
|
+//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict = [GPB##KEY_NAME##VALUE_NAME##Dictionary dictionaryWith##VNAME$u##:VAL1 forKey:KEY1];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
-//% [dict enumerateKeysAndValuesUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE aValue, BOOL *stop) {
|
|
|
|
|
|
+//% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE a##VNAME$u, BOOL *stop) {
|
|
//% XCTAssertEqual##KSUFFIX(aKey, KEY1);
|
|
//% XCTAssertEqual##KSUFFIX(aKey, KEY1);
|
|
-//% XCTAssertEqual##VSUFFIX(aValue, VAL1);
|
|
|
|
|
|
+//% XCTAssertEqual##VSUFFIX(a##VNAME$u, VAL1);
|
|
//% XCTAssertNotEqual(stop, NULL);
|
|
//% XCTAssertNotEqual(stop, NULL);
|
|
//% }];
|
|
//% }];
|
|
//%}
|
|
//%}
|
|
//%
|
|
//%
|
|
//%- (void)testBasics {
|
|
//%- (void)testBasics {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
//%
|
|
//%
|
|
//% __block NSUInteger idx = 0;
|
|
//% __block NSUInteger idx = 0;
|
|
//% KEY_TYPE KisP##*seenKeys = malloc(2 * sizeof(KEY_TYPE##KisP));
|
|
//% KEY_TYPE KisP##*seenKeys = malloc(2 * sizeof(KEY_TYPE##KisP));
|
|
-//% VALUE_TYPE *seenValues = malloc(2 * sizeof(VALUE_TYPE));
|
|
|
|
-//% [dict enumerateKeysAndValuesUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE aValue, BOOL *stop) {
|
|
|
|
|
|
+//% VALUE_TYPE *seen##VNAME$u##s = malloc(2 * sizeof(VALUE_TYPE));
|
|
|
|
+//% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE a##VNAME$u##, BOOL *stop) {
|
|
//% XCTAssertLessThan(idx, 2U);
|
|
//% XCTAssertLessThan(idx, 2U);
|
|
//% seenKeys[idx] = aKey;
|
|
//% seenKeys[idx] = aKey;
|
|
-//% seenValues[idx] = aValue;
|
|
|
|
|
|
+//% seen##VNAME$u##s[idx] = a##VNAME$u;
|
|
//% XCTAssertNotEqual(stop, NULL);
|
|
//% XCTAssertNotEqual(stop, NULL);
|
|
//% ++idx;
|
|
//% ++idx;
|
|
//% }];
|
|
//% }];
|
|
@@ -833,18 +833,18 @@
|
|
//% for (int j = 0; (j < 2) && !foundKey; ++j) {
|
|
//% for (int j = 0; (j < 2) && !foundKey; ++j) {
|
|
//% if (COMPARE_KEYS##KSUFFIX(kKeys[i], seenKeys[j])) {
|
|
//% if (COMPARE_KEYS##KSUFFIX(kKeys[i], seenKeys[j])) {
|
|
//% foundKey = YES;
|
|
//% foundKey = YES;
|
|
-//% XCTAssertEqual##VSUFFIX(kValues[i], seenValues[j], @"i = %d, j = %d", i, j);
|
|
|
|
|
|
+//% XCTAssertEqual##VSUFFIX(k##VNAME$u##s[i], seen##VNAME$u##s[j], @"i = %d, j = %d", i, j);
|
|
//% }
|
|
//% }
|
|
//% }
|
|
//% }
|
|
//% XCTAssertTrue(foundKey, @"i = %d", i);
|
|
//% XCTAssertTrue(foundKey, @"i = %d", i);
|
|
//% }
|
|
//% }
|
|
//% free(seenKeys);
|
|
//% free(seenKeys);
|
|
-//% free(seenValues);
|
|
|
|
|
|
+//% free(seen##VNAME$u##s);
|
|
//%
|
|
//%
|
|
//% // Stopping the enumeration.
|
|
//% // Stopping the enumeration.
|
|
//% idx = 0;
|
|
//% idx = 0;
|
|
-//% [dict enumerateKeysAndValuesUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE aValue, BOOL *stop) {
|
|
|
|
-//% #pragma unused(aKey, aValue)
|
|
|
|
|
|
+//% [dict enumerateKeysAnd##VNAME$u##sUsingBlock:^(KEY_TYPE KisP##aKey, VALUE_TYPE a##VNAME$u##, BOOL *stop) {
|
|
|
|
+//% #pragma unused(aKey, a##VNAME$u)
|
|
//% if (idx == 0) *stop = YES;
|
|
//% if (idx == 0) *stop = YES;
|
|
//% XCTAssertNotEqual(idx, 2U);
|
|
//% XCTAssertNotEqual(idx, 2U);
|
|
//% ++idx;
|
|
//% ++idx;
|
|
@@ -855,33 +855,33 @@
|
|
//%- (void)testEquality {
|
|
//%- (void)testEquality {
|
|
//% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2 };
|
|
//% const KEY_TYPE KisP##kKeys1[] = { KEY1, KEY2 };
|
|
//% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1 };
|
|
//% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1 };
|
|
-//% const VALUE_TYPE kValues1[] = { VAL1, VAL2 };
|
|
|
|
-//% const VALUE_TYPE kValues2[] = { VAL2, VAL1 };
|
|
|
|
-//% const VALUE_TYPE kValues3[] = { VAL2 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s1[] = { VAL1, VAL2 };
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s2[] = { VAL2, VAL1 };
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s3[] = { VAL2 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues1)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s1)];
|
|
//% XCTAssertNotNil(dict1);
|
|
//% XCTAssertNotNil(dict1);
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1prime =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict1prime =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues1)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s1)];
|
|
//% XCTAssertNotNil(dict1prime);
|
|
//% XCTAssertNotNil(dict1prime);
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues2
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues2)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s2
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s2)];
|
|
//% XCTAssertNotNil(dict2);
|
|
//% XCTAssertNotNil(dict2);
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict3 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict3 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys2
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues1)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys2
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s1)];
|
|
//% XCTAssertNotNil(dict3);
|
|
//% XCTAssertNotNil(dict3);
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict4 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict4 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues3
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys1
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues3)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s3
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys1
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s3)];
|
|
//% XCTAssertNotNil(dict4);
|
|
//% XCTAssertNotNil(dict4);
|
|
//%
|
|
//%
|
|
//% // 1/1Prime should be different objects, but equal.
|
|
//% // 1/1Prime should be different objects, but equal.
|
|
@@ -890,10 +890,10 @@
|
|
//% // Equal, so they must have same hash.
|
|
//% // Equal, so they must have same hash.
|
|
//% XCTAssertEqual([dict1 hash], [dict1prime hash]);
|
|
//% XCTAssertEqual([dict1 hash], [dict1prime hash]);
|
|
//%
|
|
//%
|
|
-//% // 2 is save keys, different values; not equal.
|
|
|
|
|
|
+//% // 2 is same keys, different ##VNAME##s; not equal.
|
|
//% XCTAssertNotEqualObjects(dict1, dict2);
|
|
//% XCTAssertNotEqualObjects(dict1, dict2);
|
|
//%
|
|
//%
|
|
-//% // 3 is different keys, samae values; not equal.
|
|
|
|
|
|
+//% // 3 is different keys, same ##VNAME##s; not equal.
|
|
//% XCTAssertNotEqualObjects(dict1, dict3);
|
|
//% XCTAssertNotEqualObjects(dict1, dict3);
|
|
//%
|
|
//%
|
|
//% // 4 Fewer pairs; not equal
|
|
//% // 4 Fewer pairs; not equal
|
|
@@ -908,11 +908,11 @@
|
|
//%
|
|
//%
|
|
//%- (void)testCopy {
|
|
//%- (void)testCopy {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//%
|
|
//%
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = [dict copy];
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 = [dict copy];
|
|
@@ -929,11 +929,11 @@
|
|
//%
|
|
//%
|
|
//%- (void)testDictionaryFromDictionary {
|
|
//%- (void)testDictionaryFromDictionary {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//%
|
|
//%
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
@@ -951,43 +951,43 @@
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//%
|
|
//%
|
|
//% XCTAssertEqual(dict.count, 0U);
|
|
//% XCTAssertEqual(dict.count, 0U);
|
|
-//% [dict setValue:VAL1 forKey:KEY1];
|
|
|
|
|
|
+//% [dict set##VNAME$u:VAL1 forKey:KEY1];
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
//%
|
|
//%
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY2 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY2 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL2 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL2 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict2);
|
|
//% XCTAssertNotNil(dict2);
|
|
//% [dict addEntriesFromDictionary:dict2];
|
|
//% [dict addEntriesFromDictionary:dict2];
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//%
|
|
//%
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
//% [dict2 release];
|
|
//% [dict2 release];
|
|
//%}
|
|
//%}
|
|
//%
|
|
//%
|
|
//%- (void)testRemove {
|
|
//%- (void)testRemove {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2};
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2};
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//%
|
|
//%
|
|
-//% [dict removeValueForKey:KEY2];
|
|
|
|
|
|
+//% [dict remove##VNAME$u##ForKey:KEY2];
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%
|
|
//%
|
|
//% // Remove again does nothing.
|
|
//% // Remove again does nothing.
|
|
-//% [dict removeValueForKey:KEY2];
|
|
|
|
|
|
+//% [dict remove##VNAME$u##ForKey:KEY2];
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
//% XCTAssertEqual(dict.count, 1U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%VALUE_NOT_FOUND##VHELPER(dict, KEY2)
|
|
//%
|
|
//%
|
|
//% [dict removeAll];
|
|
//% [dict removeAll];
|
|
@@ -999,37 +999,37 @@
|
|
//%
|
|
//%
|
|
//%- (void)testInplaceMutation {
|
|
//%- (void)testInplaceMutation {
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
|
|
//% const KEY_TYPE KisP##kKeys[] = { KEY1, KEY2 };
|
|
-//% const VALUE_TYPE kValues[] = { VAL1, VAL2 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s[] = { VAL1, VAL2 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s)];
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertNotNil(dict);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
-//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, value)TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
|
|
+//%DECLARE_VALUE_STORAGE##VHELPER(VALUE_TYPE, VNAME)TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
//%
|
|
//%
|
|
-//% [dict setValue:VAL2 forKey:KEY1];
|
|
|
|
|
|
+//% [dict set##VNAME$u##:VAL2 forKey:KEY1];
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL2)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL2)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
//%
|
|
//%
|
|
-//% [dict setValue:VAL1 forKey:KEY2];
|
|
|
|
|
|
+//% [dict set##VNAME$u##:VAL1 forKey:KEY2];
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL2)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL1)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL2)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL1)
|
|
//%
|
|
//%
|
|
//% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1 };
|
|
//% const KEY_TYPE KisP##kKeys2[] = { KEY2, KEY1 };
|
|
-//% const VALUE_TYPE kValues2[] = { VAL2, VAL1 };
|
|
|
|
|
|
+//% const VALUE_TYPE k##VNAME$u##s2[] = { VAL2, VAL1 };
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
//% GPB##KEY_NAME##VALUE_NAME##Dictionary *dict2 =
|
|
-//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWithValues:kValues2
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S forKeys:kKeys2
|
|
|
|
-//% KEY_NAME$S VALUE_NAME$S count:GPBARRAYSIZE(kValues2)];
|
|
|
|
|
|
+//% [[GPB##KEY_NAME##VALUE_NAME##Dictionary alloc] initWith##VNAME$u##s:k##VNAME$u##s2
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## forKeys:kKeys2
|
|
|
|
+//% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:GPBARRAYSIZE(k##VNAME$u##s2)];
|
|
//% XCTAssertNotNil(dict2);
|
|
//% XCTAssertNotNil(dict2);
|
|
//% [dict addEntriesFromDictionary:dict2];
|
|
//% [dict addEntriesFromDictionary:dict2];
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
//% XCTAssertEqual(dict.count, 2U);
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY1, VAL1)
|
|
|
|
-//%TEST_VALUE##VHELPER(dict, value, KEY2, VAL2)
|
|
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY1, VAL1)
|
|
|
|
+//%TEST_VALUE##VHELPER(dict, VNAME, KEY2, VAL2)
|
|
//%
|
|
//%
|
|
//% [dict2 release];
|
|
//% [dict2 release];
|
|
//% [dict release];
|
|
//% [dict release];
|