| OLD | NEW |
| 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 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 874 XCTAssertEqualObjects(fieldsParse, fieldsOrig); | 874 XCTAssertEqualObjects(fieldsParse, fieldsOrig); |
| 875 | 875 |
| 876 TestUnpackedExtensions *extsParse = | 876 TestUnpackedExtensions *extsParse = |
| 877 [TestUnpackedExtensions parseFromData:fieldsData | 877 [TestUnpackedExtensions parseFromData:fieldsData |
| 878 extensionRegistry:[UnittestRoot extensionRegistry] | 878 extensionRegistry:[UnittestRoot extensionRegistry] |
| 879 error:NULL]; | 879 error:NULL]; |
| 880 XCTAssertNotNil(extsParse); | 880 XCTAssertNotNil(extsParse); |
| 881 XCTAssertEqualObjects(extsParse, extsOrig); | 881 XCTAssertEqualObjects(extsParse, extsOrig); |
| 882 } | 882 } |
| 883 | 883 |
| 884 - (void)testErrorSubsectionInvalidLimit { | |
| 885 NSData *data = DataFromCStr( | |
| 886 "\x0A\x08\x0A\x07\x12\x04\x72\x02\x4B\x50\x12\x04\x72\x02\x4B\x50"); | |
| 887 NSError *error = nil; | |
| 888 NestedTestAllTypes *msg = [NestedTestAllTypes parseFromData:data | |
| 889 error:&error]; | |
| 890 XCTAssertNil(msg); | |
| 891 XCTAssertNotNil(error); | |
| 892 XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain); | |
| 893 XCTAssertEqual(error.code, GPBCodedInputStreamErrorInvalidSubsectionLimit); | |
| 894 } | |
| 895 | |
| 896 - (void)testErrorSubsectionLimitReached { | |
| 897 NSData *data = DataFromCStr("\x0A\x06\x12\x03\x72\x02\x4B\x50"); | |
| 898 NSError *error = nil; | |
| 899 NestedTestAllTypes *msg = [NestedTestAllTypes parseFromData:data | |
| 900 error:&error]; | |
| 901 XCTAssertNil(msg); | |
| 902 XCTAssertNotNil(error); | |
| 903 XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain); | |
| 904 XCTAssertEqual(error.code, GPBCodedInputStreamErrorSubsectionLimitReached); | |
| 905 } | |
| 906 | |
| 907 - (void)testErrorInvalidVarint { | |
| 908 NSData *data = DataFromCStr("\x72\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); | |
| 909 NSError *error = nil; | |
| 910 TestAllTypes *msg = [TestAllTypes parseFromData:data error:&error]; | |
| 911 XCTAssertNil(msg); | |
| 912 XCTAssertNotNil(error); | |
| 913 XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain); | |
| 914 XCTAssertEqual(error.code, GPBCodedInputStreamErrorInvalidVarInt); | |
| 915 } | |
| 916 | |
| 917 - (void)testErrorInvalidUTF8 { | |
| 918 NSData *data = DataFromCStr("\x72\x04\xF4\xFF\xFF\xFF"); | |
| 919 NSError *error = nil; | |
| 920 TestAllTypes *msg = [TestAllTypes parseFromData:data error:&error]; | |
| 921 XCTAssertNil(msg); | |
| 922 XCTAssertNotNil(error); | |
| 923 XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain); | |
| 924 XCTAssertEqual(error.code, GPBCodedInputStreamErrorInvalidUTF8); | |
| 925 } | |
| 926 | |
| 927 - (void)testErrorInvalidSize { | |
| 928 NSData *data = DataFromCStr("\x72\x03\x4B\x50"); | |
| 929 NSError *error = nil; | |
| 930 NestedTestAllTypes *msg = [NestedTestAllTypes parseFromData:data | |
| 931 error:&error]; | |
| 932 XCTAssertNil(msg); | |
| 933 XCTAssertNotNil(error); | |
| 934 XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain); | |
| 935 XCTAssertEqual(error.code, GPBCodedInputStreamErrorInvalidSize); | |
| 936 } | |
| 937 | |
| 938 - (void)testErrorInvalidTag { | |
| 939 NSData *data = DataFromCStr("\x0F"); | |
| 940 NSError *error = nil; | |
| 941 NestedTestAllTypes *msg = [NestedTestAllTypes parseFromData:data | |
| 942 error:&error]; | |
| 943 XCTAssertNil(msg); | |
| 944 XCTAssertNotNil(error); | |
| 945 XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain); | |
| 946 XCTAssertEqual(error.code, GPBCodedInputStreamErrorInvalidTag); | |
| 947 } | |
| 948 | |
| 949 - (void)testErrorRecursionDepthReached { | |
| 950 NSData *data = DataFromCStr( | |
| 951 "\x0A\x86\x01\x0A\x83\x01\x0A\x80\x01\x0A\x7E\x0A\x7C\x0A\x7A\x0A\x78" | |
| 952 "\x0A\x76\x0A\x74\x0A\x72\x0A\x70\x0A\x6E\x0A\x6C\x0A\x6A\x0A\x68" | |
| 953 "\x0A\x66\x0A\x64\x0A\x62\x0A\x60\x0A\x5E\x0A\x5C\x0A\x5A\x0A\x58" | |
| 954 "\x0A\x56\x0A\x54\x0A\x52\x0A\x50\x0A\x4E\x0A\x4C\x0A\x4A\x0A\x48" | |
| 955 "\x0A\x46\x0A\x44\x0A\x42\x0A\x40\x0A\x3E\x0A\x3C\x0A\x3A\x0A\x38" | |
| 956 "\x0A\x36\x0A\x34\x0A\x32\x0A\x30\x0A\x2E\x0A\x2C\x0A\x2A\x0A\x28" | |
| 957 "\x0A\x26\x0A\x24\x0A\x22\x0A\x20\x0A\x1E\x0A\x1C\x0A\x1A\x0A\x18" | |
| 958 "\x0A\x16\x0A\x14\x0A\x12\x0A\x10\x0A\x0E\x0A\x0C\x0A\x0A\x0A\x08" | |
| 959 "\x0A\x06\x12\x04\x72\x02\x4B\x50"); | |
| 960 NSError *error = nil; | |
| 961 NestedTestAllTypes *msg = [NestedTestAllTypes parseFromData:data | |
| 962 error:&error]; | |
| 963 XCTAssertNil(msg); | |
| 964 XCTAssertNotNil(error); | |
| 965 XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain); | |
| 966 XCTAssertEqual(error.code, GPBCodedInputStreamErrorRecursionDepthExceeded); | |
| 967 } | |
| 968 | |
| 969 #ifdef DEBUG | |
| 970 - (void)testErrorMissingRequiredField { | |
| 971 NSData *data = DataFromCStr(""); | |
| 972 NSError *error = nil; | |
| 973 TestRequired *msg = [TestRequired parseFromData:data error:&error]; | |
| 974 XCTAssertNil(msg); | |
| 975 XCTAssertNotNil(error); | |
| 976 XCTAssertEqualObjects(error.domain, GPBMessageErrorDomain); | |
| 977 XCTAssertEqual(error.code, GPBMessageErrorCodeMissingRequiredField); | |
| 978 } | |
| 979 #endif | |
| 980 | |
| 981 #pragma mark - Subset from from map_tests.cc | 884 #pragma mark - Subset from from map_tests.cc |
| 982 | 885 |
| 983 // TEST(GeneratedMapFieldTest, StandardWireFormat) | 886 // TEST(GeneratedMapFieldTest, StandardWireFormat) |
| 984 - (void)testMap_StandardWireFormat { | 887 - (void)testMap_StandardWireFormat { |
| 985 NSData *data = DataFromCStr("\x0A\x04\x08\x01\x10\x01"); | 888 NSData *data = DataFromCStr("\x0A\x04\x08\x01\x10\x01"); |
| 986 | 889 |
| 987 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; | 890 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; |
| 988 XCTAssertEqual(msg.mapInt32Int32.count, 1U); | 891 XCTAssertEqual(msg.mapInt32Int32.count, 1U); |
| 989 int32_t val = 666; | 892 int32_t val = 666; |
| 990 XCTAssertTrue([msg.mapInt32Int32 getInt32:&val forKey:1]); | 893 XCTAssertTrue([msg.mapInt32Int32 valueForKey:1 value:&val]); |
| 991 XCTAssertEqual(val, 1); | 894 XCTAssertEqual(val, 1); |
| 992 | 895 |
| 993 [msg release]; | 896 [msg release]; |
| 994 } | 897 } |
| 995 | 898 |
| 996 // TEST(GeneratedMapFieldTest, UnorderedWireFormat) | 899 // TEST(GeneratedMapFieldTest, UnorderedWireFormat) |
| 997 - (void)testMap_UnorderedWireFormat { | 900 - (void)testMap_UnorderedWireFormat { |
| 998 // put value before key in wire format | 901 // put value before key in wire format |
| 999 NSData *data = DataFromCStr("\x0A\x04\x10\x01\x08\x02"); | 902 NSData *data = DataFromCStr("\x0A\x04\x10\x01\x08\x02"); |
| 1000 | 903 |
| 1001 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; | 904 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; |
| 1002 XCTAssertEqual(msg.mapInt32Int32.count, 1U); | 905 XCTAssertEqual(msg.mapInt32Int32.count, 1U); |
| 1003 int32_t val = 666; | 906 int32_t val = 666; |
| 1004 XCTAssertTrue([msg.mapInt32Int32 getInt32:&val forKey:2]); | 907 XCTAssertTrue([msg.mapInt32Int32 valueForKey:2 value:&val]); |
| 1005 XCTAssertEqual(val, 1); | 908 XCTAssertEqual(val, 1); |
| 1006 | 909 |
| 1007 [msg release]; | 910 [msg release]; |
| 1008 } | 911 } |
| 1009 | 912 |
| 1010 // TEST(GeneratedMapFieldTest, DuplicatedKeyWireFormat) | 913 // TEST(GeneratedMapFieldTest, DuplicatedKeyWireFormat) |
| 1011 - (void)testMap_DuplicatedKeyWireFormat { | 914 - (void)testMap_DuplicatedKeyWireFormat { |
| 1012 // Two key fields in wire format | 915 // Two key fields in wire format |
| 1013 NSData *data = DataFromCStr("\x0A\x06\x08\x01\x08\x02\x10\x01"); | 916 NSData *data = DataFromCStr("\x0A\x06\x08\x01\x08\x02\x10\x01"); |
| 1014 | 917 |
| 1015 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; | 918 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; |
| 1016 XCTAssertEqual(msg.mapInt32Int32.count, 1U); | 919 XCTAssertEqual(msg.mapInt32Int32.count, 1U); |
| 1017 int32_t val = 666; | 920 int32_t val = 666; |
| 1018 XCTAssertTrue([msg.mapInt32Int32 getInt32:&val forKey:2]); | 921 XCTAssertTrue([msg.mapInt32Int32 valueForKey:2 value:&val]); |
| 1019 XCTAssertEqual(val, 1); | 922 XCTAssertEqual(val, 1); |
| 1020 | 923 |
| 1021 [msg release]; | 924 [msg release]; |
| 1022 } | 925 } |
| 1023 | 926 |
| 1024 // TEST(GeneratedMapFieldTest, DuplicatedValueWireFormat) | 927 // TEST(GeneratedMapFieldTest, DuplicatedValueWireFormat) |
| 1025 - (void)testMap_DuplicatedValueWireFormat { | 928 - (void)testMap_DuplicatedValueWireFormat { |
| 1026 // Two value fields in wire format | 929 // Two value fields in wire format |
| 1027 NSData *data = DataFromCStr("\x0A\x06\x08\x01\x10\x01\x10\x02"); | 930 NSData *data = DataFromCStr("\x0A\x06\x08\x01\x10\x01\x10\x02"); |
| 1028 | 931 |
| 1029 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; | 932 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; |
| 1030 XCTAssertEqual(msg.mapInt32Int32.count, 1U); | 933 XCTAssertEqual(msg.mapInt32Int32.count, 1U); |
| 1031 int32_t val = 666; | 934 int32_t val = 666; |
| 1032 XCTAssertTrue([msg.mapInt32Int32 getInt32:&val forKey:1]); | 935 XCTAssertTrue([msg.mapInt32Int32 valueForKey:1 value:&val]); |
| 1033 XCTAssertEqual(val, 2); | 936 XCTAssertEqual(val, 2); |
| 1034 | 937 |
| 1035 [msg release]; | 938 [msg release]; |
| 1036 } | 939 } |
| 1037 | 940 |
| 1038 // TEST(GeneratedMapFieldTest, MissedKeyWireFormat) | 941 // TEST(GeneratedMapFieldTest, MissedKeyWireFormat) |
| 1039 - (void)testMap_MissedKeyWireFormat { | 942 - (void)testMap_MissedKeyWireFormat { |
| 1040 // No key field in wire format | 943 // No key field in wire format |
| 1041 NSData *data = DataFromCStr("\x0A\x02\x10\x01"); | 944 NSData *data = DataFromCStr("\x0A\x02\x10\x01"); |
| 1042 | 945 |
| 1043 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; | 946 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; |
| 1044 XCTAssertEqual(msg.mapInt32Int32.count, 1U); | 947 XCTAssertEqual(msg.mapInt32Int32.count, 1U); |
| 1045 int32_t val = 666; | 948 int32_t val = 666; |
| 1046 XCTAssertTrue([msg.mapInt32Int32 getInt32:&val forKey:0]); | 949 XCTAssertTrue([msg.mapInt32Int32 valueForKey:0 value:&val]); |
| 1047 XCTAssertEqual(val, 1); | 950 XCTAssertEqual(val, 1); |
| 1048 | 951 |
| 1049 [msg release]; | 952 [msg release]; |
| 1050 } | 953 } |
| 1051 | 954 |
| 1052 // TEST(GeneratedMapFieldTest, MissedValueWireFormat) | 955 // TEST(GeneratedMapFieldTest, MissedValueWireFormat) |
| 1053 - (void)testMap_MissedValueWireFormat { | 956 - (void)testMap_MissedValueWireFormat { |
| 1054 // No value field in wire format | 957 // No value field in wire format |
| 1055 NSData *data = DataFromCStr("\x0A\x02\x08\x01"); | 958 NSData *data = DataFromCStr("\x0A\x02\x08\x01"); |
| 1056 | 959 |
| 1057 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; | 960 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; |
| 1058 XCTAssertEqual(msg.mapInt32Int32.count, 1U); | 961 XCTAssertEqual(msg.mapInt32Int32.count, 1U); |
| 1059 int32_t val = 666; | 962 int32_t val = 666; |
| 1060 XCTAssertTrue([msg.mapInt32Int32 getInt32:&val forKey:1]); | 963 XCTAssertTrue([msg.mapInt32Int32 valueForKey:1 value:&val]); |
| 1061 XCTAssertEqual(val, 0); | 964 XCTAssertEqual(val, 0); |
| 1062 | 965 |
| 1063 [msg release]; | 966 [msg release]; |
| 1064 } | 967 } |
| 1065 | 968 |
| 1066 // TEST(GeneratedMapFieldTest, UnknownFieldWireFormat) | 969 // TEST(GeneratedMapFieldTest, UnknownFieldWireFormat) |
| 1067 - (void)testMap_UnknownFieldWireFormat { | 970 - (void)testMap_UnknownFieldWireFormat { |
| 1068 // Unknown field in wire format | 971 // Unknown field in wire format |
| 1069 NSData *data = DataFromCStr("\x0A\x06\x08\x02\x10\x03\x18\x01"); | 972 NSData *data = DataFromCStr("\x0A\x06\x08\x02\x10\x03\x18\x01"); |
| 1070 | 973 |
| 1071 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; | 974 TestMap *msg = [[TestMap alloc] initWithData:data error:NULL]; |
| 1072 XCTAssertEqual(msg.mapInt32Int32.count, 1U); | 975 XCTAssertEqual(msg.mapInt32Int32.count, 1U); |
| 1073 int32_t val = 666; | 976 int32_t val = 666; |
| 1074 XCTAssertTrue([msg.mapInt32Int32 getInt32:&val forKey:2]); | 977 XCTAssertTrue([msg.mapInt32Int32 valueForKey:2 value:&val]); |
| 1075 XCTAssertEqual(val, 3); | 978 XCTAssertEqual(val, 3); |
| 1076 | 979 |
| 1077 [msg release]; | 980 [msg release]; |
| 1078 } | 981 } |
| 1079 | 982 |
| 1080 // TEST(GeneratedMapFieldTest, CorruptedWireFormat) | 983 // TEST(GeneratedMapFieldTest, CorruptedWireFormat) |
| 1081 - (void)testMap_CorruptedWireFormat { | 984 - (void)testMap_CorruptedWireFormat { |
| 1082 // corrupted data in wire format | 985 // corrupted data in wire format |
| 1083 NSData *data = DataFromCStr("\x0A\x06\x08\x02\x11\x03"); | 986 NSData *data = DataFromCStr("\x0A\x06\x08\x02\x11\x03"); |
| 1084 | 987 |
| 1085 NSError *error = nil; | 988 NSError *error = nil; |
| 1086 TestMap *msg = [TestMap parseFromData:data error:&error]; | 989 TestMap *msg = [TestMap parseFromData:data error:&error]; |
| 1087 XCTAssertNil(msg); | 990 XCTAssertNil(msg); |
| 1088 XCTAssertNotNil(error); | 991 XCTAssertNotNil(error); |
| 1089 XCTAssertEqualObjects(error.domain, GPBCodedInputStreamErrorDomain); | 992 XCTAssertEqualObjects(error.domain, GPBMessageErrorDomain); |
| 1090 XCTAssertEqual(error.code, GPBCodedInputStreamErrorInvalidSubsectionLimit); | 993 XCTAssertEqual(error.code, GPBMessageErrorCodeMalformedData); |
| 1091 } | 994 } |
| 1092 | 995 |
| 1093 // TEST(GeneratedMapFieldTest, Proto2UnknownEnum) | 996 // TEST(GeneratedMapFieldTest, Proto2UnknownEnum) |
| 1094 - (void)testMap_Proto2UnknownEnum { | 997 - (void)testMap_Proto2UnknownEnum { |
| 1095 TestEnumMapPlusExtra *orig = [[TestEnumMapPlusExtra alloc] init]; | 998 TestEnumMapPlusExtra *orig = [[TestEnumMapPlusExtra alloc] init]; |
| 1096 | 999 |
| 1097 orig.knownMapField = [GPBInt32EnumDictionary | 1000 orig.knownMapField = [GPBInt32EnumDictionary |
| 1098 dictionaryWithValidationFunction:Proto2MapEnumPlusExtra_IsValidValue]; | 1001 dictionaryWithValidationFunction:Proto2MapEnumPlusExtra_IsValidValue]; |
| 1099 orig.unknownMapField = [GPBInt32EnumDictionary | 1002 orig.unknownMapField = [GPBInt32EnumDictionary |
| 1100 dictionaryWithValidationFunction:Proto2MapEnumPlusExtra_IsValidValue]; | 1003 dictionaryWithValidationFunction:Proto2MapEnumPlusExtra_IsValidValue]; |
| 1101 [orig.knownMapField setEnum:Proto2MapEnumPlusExtra_EProto2MapEnumFoo | 1004 [orig.knownMapField setValue:Proto2MapEnumPlusExtra_EProto2MapEnumFoo |
| 1102 forKey:0]; | 1005 forKey:0]; |
| 1103 [orig.unknownMapField setEnum:Proto2MapEnumPlusExtra_EProto2MapEnumExtra | 1006 [orig.unknownMapField setValue:Proto2MapEnumPlusExtra_EProto2MapEnumExtra |
| 1104 forKey:0]; | 1007 forKey:0]; |
| 1105 | 1008 |
| 1106 NSData *data = [orig data]; | 1009 NSData *data = [orig data]; |
| 1107 XCTAssertNotNil(data); | 1010 XCTAssertNotNil(data); |
| 1108 TestEnumMap *msg1 = [TestEnumMap parseFromData:data error:NULL]; | 1011 TestEnumMap *msg1 = [TestEnumMap parseFromData:data error:NULL]; |
| 1109 XCTAssertEqual(msg1.knownMapField.count, 1U); | 1012 XCTAssertEqual(msg1.knownMapField.count, 1U); |
| 1110 int32_t val = -1; | 1013 int32_t val = -1; |
| 1111 XCTAssertTrue([msg1.knownMapField getEnum:&val forKey:0]); | 1014 XCTAssertTrue([msg1.knownMapField valueForKey:0 value:&val]); |
| 1112 XCTAssertEqual(val, Proto2MapEnum_Proto2MapEnumFoo); | 1015 XCTAssertEqual(val, Proto2MapEnum_Proto2MapEnumFoo); |
| 1113 XCTAssertEqual(msg1.unknownFields.countOfFields, 1U); | 1016 XCTAssertEqual(msg1.unknownFields.countOfFields, 1U); |
| 1114 | 1017 |
| 1115 data = [msg1 data]; | 1018 data = [msg1 data]; |
| 1116 TestEnumMapPlusExtra *msg2 = | 1019 TestEnumMapPlusExtra *msg2 = |
| 1117 [TestEnumMapPlusExtra parseFromData:data error:NULL]; | 1020 [TestEnumMapPlusExtra parseFromData:data error:NULL]; |
| 1118 val = -1; | 1021 val = -1; |
| 1119 XCTAssertEqual(msg2.knownMapField.count, 1U); | 1022 XCTAssertEqual(msg2.knownMapField.count, 1U); |
| 1120 XCTAssertTrue([msg2.knownMapField getEnum:&val forKey:0]); | 1023 XCTAssertTrue([msg2.knownMapField valueForKey:0 value:&val]); |
| 1121 XCTAssertEqual(val, Proto2MapEnumPlusExtra_EProto2MapEnumFoo); | 1024 XCTAssertEqual(val, Proto2MapEnumPlusExtra_EProto2MapEnumFoo); |
| 1122 val = -1; | 1025 val = -1; |
| 1123 XCTAssertEqual(msg2.unknownMapField.count, 1U); | 1026 XCTAssertEqual(msg2.unknownMapField.count, 1U); |
| 1124 XCTAssertTrue([msg2.unknownMapField getEnum:&val forKey:0]); | 1027 XCTAssertTrue([msg2.unknownMapField valueForKey:0 value:&val]); |
| 1125 XCTAssertEqual(val, Proto2MapEnumPlusExtra_EProto2MapEnumExtra); | 1028 XCTAssertEqual(val, Proto2MapEnumPlusExtra_EProto2MapEnumExtra); |
| 1126 XCTAssertEqual(msg2.unknownFields.countOfFields, 0U); | 1029 XCTAssertEqual(msg2.unknownFields.countOfFields, 0U); |
| 1127 | 1030 |
| 1128 XCTAssertEqualObjects(orig, msg2); | 1031 XCTAssertEqualObjects(orig, msg2); |
| 1129 | 1032 |
| 1130 [orig release]; | 1033 [orig release]; |
| 1131 } | 1034 } |
| 1132 | 1035 |
| 1133 #pragma mark - Map Round Tripping | 1036 #pragma mark - Map Round Tripping |
| 1134 | 1037 |
| 1135 - (void)testProto2MapRoundTripping { | 1038 - (void)testProto2MapRoundTripping { |
| 1136 Message2 *msg = [[Message2 alloc] init]; | 1039 Message2 *msg = [[Message2 alloc] init]; |
| 1137 | 1040 |
| 1138 // Key/Value data should result in different byte lengths on wire to ensure | 1041 // Key/Value data should result in different byte lengths on wire to ensure |
| 1139 // everything is right. | 1042 // everything is right. |
| 1140 [msg.mapInt32Int32 setInt32:1000 forKey:200]; | 1043 [msg.mapInt32Int32 setValue:1000 forKey:200]; |
| 1141 [msg.mapInt32Int32 setInt32:101 forKey:2001]; | 1044 [msg.mapInt32Int32 setValue:101 forKey:2001]; |
| 1142 [msg.mapInt64Int64 setInt64:1002 forKey:202]; | 1045 [msg.mapInt64Int64 setValue:1002 forKey:202]; |
| 1143 [msg.mapInt64Int64 setInt64:103 forKey:2003]; | 1046 [msg.mapInt64Int64 setValue:103 forKey:2003]; |
| 1144 [msg.mapUint32Uint32 setUInt32:1004 forKey:204]; | 1047 [msg.mapUint32Uint32 setValue:1004 forKey:204]; |
| 1145 [msg.mapUint32Uint32 setUInt32:105 forKey:2005]; | 1048 [msg.mapUint32Uint32 setValue:105 forKey:2005]; |
| 1146 [msg.mapUint64Uint64 setUInt64:1006 forKey:206]; | 1049 [msg.mapUint64Uint64 setValue:1006 forKey:206]; |
| 1147 [msg.mapUint64Uint64 setUInt64:107 forKey:2007]; | 1050 [msg.mapUint64Uint64 setValue:107 forKey:2007]; |
| 1148 [msg.mapSint32Sint32 setInt32:1008 forKey:208]; | 1051 [msg.mapSint32Sint32 setValue:1008 forKey:208]; |
| 1149 [msg.mapSint32Sint32 setInt32:109 forKey:2009]; | 1052 [msg.mapSint32Sint32 setValue:109 forKey:2009]; |
| 1150 [msg.mapSint64Sint64 setInt64:1010 forKey:210]; | 1053 [msg.mapSint64Sint64 setValue:1010 forKey:210]; |
| 1151 [msg.mapSint64Sint64 setInt64:111 forKey:2011]; | 1054 [msg.mapSint64Sint64 setValue:111 forKey:2011]; |
| 1152 [msg.mapFixed32Fixed32 setUInt32:1012 forKey:212]; | 1055 [msg.mapFixed32Fixed32 setValue:1012 forKey:212]; |
| 1153 [msg.mapFixed32Fixed32 setUInt32:113 forKey:2013]; | 1056 [msg.mapFixed32Fixed32 setValue:113 forKey:2013]; |
| 1154 [msg.mapFixed64Fixed64 setUInt64:1014 forKey:214]; | 1057 [msg.mapFixed64Fixed64 setValue:1014 forKey:214]; |
| 1155 [msg.mapFixed64Fixed64 setUInt64:115 forKey:2015]; | 1058 [msg.mapFixed64Fixed64 setValue:115 forKey:2015]; |
| 1156 [msg.mapSfixed32Sfixed32 setInt32:1016 forKey:216]; | 1059 [msg.mapSfixed32Sfixed32 setValue:1016 forKey:216]; |
| 1157 [msg.mapSfixed32Sfixed32 setInt32:117 forKey:2017]; | 1060 [msg.mapSfixed32Sfixed32 setValue:117 forKey:2017]; |
| 1158 [msg.mapSfixed64Sfixed64 setInt64:1018 forKey:218]; | 1061 [msg.mapSfixed64Sfixed64 setValue:1018 forKey:218]; |
| 1159 [msg.mapSfixed64Sfixed64 setInt64:119 forKey:2019]; | 1062 [msg.mapSfixed64Sfixed64 setValue:119 forKey:2019]; |
| 1160 [msg.mapInt32Float setFloat:1020.f forKey:220]; | 1063 [msg.mapInt32Float setValue:1020.f forKey:220]; |
| 1161 [msg.mapInt32Float setFloat:121.f forKey:2021]; | 1064 [msg.mapInt32Float setValue:121.f forKey:2021]; |
| 1162 [msg.mapInt32Double setDouble:1022. forKey:222]; | 1065 [msg.mapInt32Double setValue:1022. forKey:222]; |
| 1163 [msg.mapInt32Double setDouble:123. forKey:2023]; | 1066 [msg.mapInt32Double setValue:123. forKey:2023]; |
| 1164 [msg.mapBoolBool setBool:false forKey:true]; | 1067 [msg.mapBoolBool setValue:false forKey:true]; |
| 1165 [msg.mapBoolBool setBool:true forKey:false]; | 1068 [msg.mapBoolBool setValue:true forKey:false]; |
| 1166 msg.mapStringString[@"224"] = @"1024"; | 1069 msg.mapStringString[@"224"] = @"1024"; |
| 1167 msg.mapStringString[@"2025"] = @"125"; | 1070 msg.mapStringString[@"2025"] = @"125"; |
| 1168 msg.mapStringBytes[@"226"] = DataFromCStr("1026"); | 1071 msg.mapStringBytes[@"226"] = DataFromCStr("1026"); |
| 1169 msg.mapStringBytes[@"2027"] = DataFromCStr("127"); | 1072 msg.mapStringBytes[@"2027"] = DataFromCStr("127"); |
| 1170 Message2 *val1 = [[Message2 alloc] init]; | 1073 Message2 *val1 = [[Message2 alloc] init]; |
| 1171 val1.optionalInt32 = 1028; | 1074 val1.optionalInt32 = 1028; |
| 1172 Message2 *val2 = [[Message2 alloc] init]; | 1075 Message2 *val2 = [[Message2 alloc] init]; |
| 1173 val2.optionalInt32 = 129; | 1076 val2.optionalInt32 = 129; |
| 1174 [msg.mapStringMessage setObject:val1 forKey:@"228"]; | 1077 [msg.mapStringMessage setValue:val1 forKey:@"228"]; |
| 1175 [msg.mapStringMessage setObject:val2 forKey:@"2029"]; | 1078 [msg.mapStringMessage setValue:val2 forKey:@"2029"]; |
| 1176 [msg.mapInt32Bytes setObject:DataFromCStr("1030 bytes") forKey:230]; | 1079 [msg.mapInt32Bytes setObject:DataFromCStr("1030 bytes") forKey:230]; |
| 1177 [msg.mapInt32Bytes setObject:DataFromCStr("131") forKey:2031]; | 1080 [msg.mapInt32Bytes setObject:DataFromCStr("131") forKey:2031]; |
| 1178 [msg.mapInt32Enum setEnum:Message2_Enum_Bar forKey:232]; | 1081 [msg.mapInt32Enum setValue:Message2_Enum_Bar forKey:232]; |
| 1179 [msg.mapInt32Enum setEnum:Message2_Enum_Baz forKey:2033]; | 1082 [msg.mapInt32Enum setValue:Message2_Enum_Baz forKey:2033]; |
| 1180 Message2 *val3 = [[Message2 alloc] init]; | 1083 Message2 *val3 = [[Message2 alloc] init]; |
| 1181 val3.optionalInt32 = 1034; | 1084 val3.optionalInt32 = 1034; |
| 1182 Message2 *val4 = [[Message2 alloc] init]; | 1085 Message2 *val4 = [[Message2 alloc] init]; |
| 1183 val4.optionalInt32 = 135; | 1086 val4.optionalInt32 = 135; |
| 1184 [msg.mapInt32Message setObject:val3 forKey:234]; | 1087 [msg.mapInt32Message setObject:val3 forKey:234]; |
| 1185 [msg.mapInt32Message setObject:val4 forKey:2035]; | 1088 [msg.mapInt32Message setObject:val4 forKey:2035]; |
| 1186 | 1089 |
| 1187 NSData *data = [msg data]; | 1090 NSData *data = [msg data]; |
| 1188 XCTAssertNotNil(data); | 1091 XCTAssertNotNil(data); |
| 1189 Message2 *msg2 = [[Message2 alloc] initWithData:data error:NULL]; | 1092 Message2 *msg2 = [[Message2 alloc] initWithData:data error:NULL]; |
| 1190 | 1093 |
| 1191 XCTAssertNotEqual(msg2, msg); // Pointer comparison | 1094 XCTAssertNotEqual(msg2, msg); // Pointer comparison |
| 1192 XCTAssertEqualObjects(msg2, msg); | 1095 XCTAssertEqualObjects(msg2, msg); |
| 1193 | 1096 |
| 1194 [val4 release]; | 1097 [val4 release]; |
| 1195 [val3 release]; | 1098 [val3 release]; |
| 1196 [val2 release]; | 1099 [val2 release]; |
| 1197 [val1 release]; | 1100 [val1 release]; |
| 1198 [msg2 release]; | 1101 [msg2 release]; |
| 1199 [msg release]; | 1102 [msg release]; |
| 1200 } | 1103 } |
| 1201 | 1104 |
| 1202 @end | 1105 @end |
| OLD | NEW |