| OLD | NEW |
| 1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
| 2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 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 1153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1164 | 1164 |
| 1165 // Simply accessing the map should not make any fields visible. | 1165 // Simply accessing the map should not make any fields visible. |
| 1166 XCTAssertNotNil(message.a.a.iToI); | 1166 XCTAssertNotNil(message.a.a.iToI); |
| 1167 XCTAssertFalse([message hasA]); | 1167 XCTAssertFalse([message hasA]); |
| 1168 XCTAssertFalse([message.a hasA]); | 1168 XCTAssertFalse([message.a hasA]); |
| 1169 XCTAssertNotNil(message2.a.a.strToStr); | 1169 XCTAssertNotNil(message2.a.a.strToStr); |
| 1170 XCTAssertFalse([message2 hasA]); | 1170 XCTAssertFalse([message2 hasA]); |
| 1171 XCTAssertFalse([message2.a hasA]); | 1171 XCTAssertFalse([message2.a hasA]); |
| 1172 | 1172 |
| 1173 // But adding an element to the map should. | 1173 // But adding an element to the map should. |
| 1174 [message.a.a.iToI setValue:100 forKey:200]; | 1174 [message.a.a.iToI setInt32:100 forKey:200]; |
| 1175 XCTAssertTrue([message hasA]); | 1175 XCTAssertTrue([message hasA]); |
| 1176 XCTAssertTrue([message.a hasA]); | 1176 XCTAssertTrue([message.a hasA]); |
| 1177 XCTAssertEqual([message.a.a.iToI count], (NSUInteger)1); | 1177 XCTAssertEqual([message.a.a.iToI count], (NSUInteger)1); |
| 1178 [message2.a.a.strToStr setObject:@"foo" forKey:@"bar"]; | 1178 [message2.a.a.strToStr setObject:@"foo" forKey:@"bar"]; |
| 1179 XCTAssertTrue([message2 hasA]); | 1179 XCTAssertTrue([message2 hasA]); |
| 1180 XCTAssertTrue([message2.a hasA]); | 1180 XCTAssertTrue([message2.a hasA]); |
| 1181 XCTAssertEqual([message2.a.a.strToStr count], (NSUInteger)1); | 1181 XCTAssertEqual([message2.a.a.strToStr count], (NSUInteger)1); |
| 1182 } | 1182 } |
| 1183 | 1183 |
| 1184 - (void)testAutocreatedMapShared { | 1184 - (void)testAutocreatedMapShared { |
| 1185 // Multiple objects pointing to the same map. | 1185 // Multiple objects pointing to the same map. |
| 1186 TestRecursiveMessageWithRepeatedField *message1a = | 1186 TestRecursiveMessageWithRepeatedField *message1a = |
| 1187 [TestRecursiveMessageWithRepeatedField message]; | 1187 [TestRecursiveMessageWithRepeatedField message]; |
| 1188 TestRecursiveMessageWithRepeatedField *message1b = | 1188 TestRecursiveMessageWithRepeatedField *message1b = |
| 1189 [TestRecursiveMessageWithRepeatedField message]; | 1189 [TestRecursiveMessageWithRepeatedField message]; |
| 1190 message1a.a.iToI = message1b.a.iToI; | 1190 message1a.a.iToI = message1b.a.iToI; |
| 1191 XCTAssertTrue([message1a hasA]); | 1191 XCTAssertTrue([message1a hasA]); |
| 1192 XCTAssertFalse([message1b hasA]); | 1192 XCTAssertFalse([message1b hasA]); |
| 1193 [message1a.a.iToI setValue:1 forKey:2]; | 1193 [message1a.a.iToI setInt32:1 forKey:2]; |
| 1194 XCTAssertTrue([message1a hasA]); | 1194 XCTAssertTrue([message1a hasA]); |
| 1195 XCTAssertTrue([message1b hasA]); | 1195 XCTAssertTrue([message1b hasA]); |
| 1196 XCTAssertEqual(message1a.a.iToI, message1b.a.iToI); | 1196 XCTAssertEqual(message1a.a.iToI, message1b.a.iToI); |
| 1197 | 1197 |
| 1198 TestRecursiveMessageWithRepeatedField *message2a = | 1198 TestRecursiveMessageWithRepeatedField *message2a = |
| 1199 [TestRecursiveMessageWithRepeatedField message]; | 1199 [TestRecursiveMessageWithRepeatedField message]; |
| 1200 TestRecursiveMessageWithRepeatedField *message2b = | 1200 TestRecursiveMessageWithRepeatedField *message2b = |
| 1201 [TestRecursiveMessageWithRepeatedField message]; | 1201 [TestRecursiveMessageWithRepeatedField message]; |
| 1202 message2a.a.strToStr = message2b.a.strToStr; | 1202 message2a.a.strToStr = message2b.a.strToStr; |
| 1203 XCTAssertTrue([message2a hasA]); | 1203 XCTAssertTrue([message2a hasA]); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1217 TestRecursiveMessageWithRepeatedField *message2 = | 1217 TestRecursiveMessageWithRepeatedField *message2 = |
| 1218 [[message copy] autorelease]; | 1218 [[message copy] autorelease]; |
| 1219 // Pointer conparisions. | 1219 // Pointer conparisions. |
| 1220 XCTAssertNotEqual(message.strToStr, message2.strToStr); | 1220 XCTAssertNotEqual(message.strToStr, message2.strToStr); |
| 1221 XCTAssertNotEqual(message.iToI, message2.iToI); | 1221 XCTAssertNotEqual(message.iToI, message2.iToI); |
| 1222 | 1222 |
| 1223 // Mutable copy should copy empty arrays that were explicitly set (end up | 1223 // Mutable copy should copy empty arrays that were explicitly set (end up |
| 1224 // with different objects that are equal). | 1224 // with different objects that are equal). |
| 1225 TestRecursiveMessageWithRepeatedField *message3 = | 1225 TestRecursiveMessageWithRepeatedField *message3 = |
| 1226 [TestRecursiveMessageWithRepeatedField message]; | 1226 [TestRecursiveMessageWithRepeatedField message]; |
| 1227 message3.iToI = [GPBInt32Int32Dictionary dictionaryWithValue:10 forKey:20]; | 1227 message3.iToI = [GPBInt32Int32Dictionary dictionaryWithInt32:10 forKey:20]; |
| 1228 message3.strToStr = | 1228 message3.strToStr = |
| 1229 [NSMutableDictionary dictionaryWithObject:@"abc" forKey:@"123"]; | 1229 [NSMutableDictionary dictionaryWithObject:@"abc" forKey:@"123"]; |
| 1230 XCTAssertNotNil(message.iToI); | 1230 XCTAssertNotNil(message.iToI); |
| 1231 XCTAssertNotNil(message.iToI); | 1231 XCTAssertNotNil(message.iToI); |
| 1232 TestRecursiveMessageWithRepeatedField *message4 = | 1232 TestRecursiveMessageWithRepeatedField *message4 = |
| 1233 [[message3 copy] autorelease]; | 1233 [[message3 copy] autorelease]; |
| 1234 XCTAssertNotEqual(message3.iToI, message4.iToI); | 1234 XCTAssertNotEqual(message3.iToI, message4.iToI); |
| 1235 XCTAssertEqualObjects(message3.iToI, message4.iToI); | 1235 XCTAssertEqualObjects(message3.iToI, message4.iToI); |
| 1236 XCTAssertNotEqual(message3.strToStr, message4.strToStr); | 1236 XCTAssertNotEqual(message3.strToStr, message4.strToStr); |
| 1237 XCTAssertEqualObjects(message3.strToStr, message4.strToStr); | 1237 XCTAssertEqualObjects(message3.strToStr, message4.strToStr); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1285 // Replacing map should orphan the old one and cause its creator to become | 1285 // Replacing map should orphan the old one and cause its creator to become |
| 1286 // visible. | 1286 // visible. |
| 1287 { | 1287 { |
| 1288 TestRecursiveMessageWithRepeatedField *message = | 1288 TestRecursiveMessageWithRepeatedField *message = |
| 1289 [TestRecursiveMessageWithRepeatedField message]; | 1289 [TestRecursiveMessageWithRepeatedField message]; |
| 1290 XCTAssertNotNil(message.a); | 1290 XCTAssertNotNil(message.a); |
| 1291 XCTAssertNotNil(message.a.iToI); | 1291 XCTAssertNotNil(message.a.iToI); |
| 1292 XCTAssertFalse([message hasA]); | 1292 XCTAssertFalse([message hasA]); |
| 1293 GPBInt32Int32Dictionary *iToI = [message.a.iToI retain]; | 1293 GPBInt32Int32Dictionary *iToI = [message.a.iToI retain]; |
| 1294 XCTAssertEqual(iToI->_autocreator, message.a); // Pointer comparision | 1294 XCTAssertEqual(iToI->_autocreator, message.a); // Pointer comparision |
| 1295 message.a.iToI = [GPBInt32Int32Dictionary dictionaryWithValue:6 forKey:7]; | 1295 message.a.iToI = [GPBInt32Int32Dictionary dictionaryWithInt32:6 forKey:7]; |
| 1296 XCTAssertTrue([message hasA]); | 1296 XCTAssertTrue([message hasA]); |
| 1297 XCTAssertNotEqual(message.a.iToI, iToI); // Pointer comparision | 1297 XCTAssertNotEqual(message.a.iToI, iToI); // Pointer comparision |
| 1298 XCTAssertNil(iToI->_autocreator); | 1298 XCTAssertNil(iToI->_autocreator); |
| 1299 [iToI release]; | 1299 [iToI release]; |
| 1300 } | 1300 } |
| 1301 | 1301 |
| 1302 { | 1302 { |
| 1303 TestRecursiveMessageWithRepeatedField *message = | 1303 TestRecursiveMessageWithRepeatedField *message = |
| 1304 [TestRecursiveMessageWithRepeatedField message]; | 1304 [TestRecursiveMessageWithRepeatedField message]; |
| 1305 XCTAssertNotNil(message.a); | 1305 XCTAssertNotNil(message.a); |
| (...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2013 // And when set to different values. | 2013 // And when set to different values. |
| 2014 msg1.boolField2 = YES; | 2014 msg1.boolField2 = YES; |
| 2015 XCTAssertNotEqualObjects(msg1Prime, msg1); | 2015 XCTAssertNotEqualObjects(msg1Prime, msg1); |
| 2016 // And then they match again. | 2016 // And then they match again. |
| 2017 msg1.boolField2 = NO; | 2017 msg1.boolField2 = NO; |
| 2018 XCTAssertEqualObjects(msg1Prime, msg1); | 2018 XCTAssertEqualObjects(msg1Prime, msg1); |
| 2019 XCTAssertEqual([msg1 hash], [msg1Prime hash]); | 2019 XCTAssertEqual([msg1 hash], [msg1Prime hash]); |
| 2020 } | 2020 } |
| 2021 | 2021 |
| 2022 @end | 2022 @end |
| OLD | NEW |