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 |