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 // http://code.google.com/p/protobuf/ | 3 // http://code.google.com/p/protobuf/ |
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 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 EXPECT_EQ(-numeric_limits<double>::infinity(), | 160 EXPECT_EQ(-numeric_limits<double>::infinity(), |
161 extreme_default.neg_inf_double()); | 161 extreme_default.neg_inf_double()); |
162 EXPECT_TRUE(extreme_default.nan_double() != extreme_default.nan_double()); | 162 EXPECT_TRUE(extreme_default.nan_double() != extreme_default.nan_double()); |
163 EXPECT_EQ(numeric_limits<float>::infinity(), | 163 EXPECT_EQ(numeric_limits<float>::infinity(), |
164 extreme_default.inf_float()); | 164 extreme_default.inf_float()); |
165 EXPECT_EQ(-numeric_limits<float>::infinity(), | 165 EXPECT_EQ(-numeric_limits<float>::infinity(), |
166 extreme_default.neg_inf_float()); | 166 extreme_default.neg_inf_float()); |
167 EXPECT_TRUE(extreme_default.nan_float() != extreme_default.nan_float()); | 167 EXPECT_TRUE(extreme_default.nan_float() != extreme_default.nan_float()); |
168 } | 168 } |
169 | 169 |
| 170 TEST(GeneratedMessageTest, Trigraph) { |
| 171 const unittest::TestExtremeDefaultValues& extreme_default = |
| 172 unittest::TestExtremeDefaultValues::default_instance(); |
| 173 |
| 174 EXPECT_EQ("? ? ?? ?? ??? ?\?/ ?\?-", extreme_default.cpp_trigraph()); |
| 175 } |
| 176 |
170 TEST(GeneratedMessageTest, Accessors) { | 177 TEST(GeneratedMessageTest, Accessors) { |
171 // Set every field to a unique value then go back and check all those | 178 // Set every field to a unique value then go back and check all those |
172 // values. | 179 // values. |
173 unittest::TestAllTypes message; | 180 unittest::TestAllTypes message; |
174 | 181 |
175 TestUtil::SetAllFields(&message); | 182 TestUtil::SetAllFields(&message); |
176 TestUtil::ExpectAllFieldsSet(message); | 183 TestUtil::ExpectAllFieldsSet(message); |
177 | 184 |
178 TestUtil::ModifyRepeatedFields(&message); | 185 TestUtil::ModifyRepeatedFields(&message); |
179 TestUtil::ExpectRepeatedFieldsModified(message); | 186 TestUtil::ExpectRepeatedFieldsModified(message); |
180 } | 187 } |
181 | 188 |
182 TEST(GeneratedMessageTest, MutableStringDefault) { | 189 TEST(GeneratedMessageTest, MutableStringDefault) { |
183 // mutable_foo() for a string should return a string initialized to its | 190 // mutable_foo() for a string should return a string initialized to its |
184 // default value. | 191 // default value. |
185 unittest::TestAllTypes message; | 192 unittest::TestAllTypes message; |
186 | 193 |
187 EXPECT_EQ("hello", *message.mutable_default_string()); | 194 EXPECT_EQ("hello", *message.mutable_default_string()); |
188 | 195 |
189 // Note that the first time we call mutable_foo(), we get a newly-allocated | 196 // Note that the first time we call mutable_foo(), we get a newly-allocated |
190 // string, but if we clear it and call it again, we get the same object again. | 197 // string, but if we clear it and call it again, we get the same object again. |
191 // We should verify that it has its default value in both cases. | 198 // We should verify that it has its default value in both cases. |
192 message.set_default_string("blah"); | 199 message.set_default_string("blah"); |
193 message.Clear(); | 200 message.Clear(); |
194 | 201 |
195 EXPECT_EQ("hello", *message.mutable_default_string()); | 202 EXPECT_EQ("hello", *message.mutable_default_string()); |
196 } | 203 } |
197 | 204 |
| 205 TEST(GeneratedMessageTest, ReleaseString) { |
| 206 // Check that release_foo() starts out NULL, and gives us a value |
| 207 // that we can delete after it's been set. |
| 208 unittest::TestAllTypes message; |
| 209 |
| 210 EXPECT_EQ(NULL, message.release_default_string()); |
| 211 EXPECT_FALSE(message.has_default_string()); |
| 212 EXPECT_EQ("hello", message.default_string()); |
| 213 |
| 214 message.set_default_string("blah"); |
| 215 EXPECT_TRUE(message.has_default_string()); |
| 216 string* str = message.release_default_string(); |
| 217 EXPECT_FALSE(message.has_default_string()); |
| 218 ASSERT_TRUE(str != NULL); |
| 219 EXPECT_EQ("blah", *str); |
| 220 delete str; |
| 221 |
| 222 EXPECT_EQ(NULL, message.release_default_string()); |
| 223 EXPECT_FALSE(message.has_default_string()); |
| 224 EXPECT_EQ("hello", message.default_string()); |
| 225 } |
| 226 |
| 227 TEST(GeneratedMessageTest, ReleaseMessage) { |
| 228 // Check that release_foo() starts out NULL, and gives us a value |
| 229 // that we can delete after it's been set. |
| 230 unittest::TestAllTypes message; |
| 231 |
| 232 EXPECT_EQ(NULL, message.release_optional_nested_message()); |
| 233 EXPECT_FALSE(message.has_optional_nested_message()); |
| 234 |
| 235 message.mutable_optional_nested_message()->set_bb(1); |
| 236 unittest::TestAllTypes::NestedMessage* nest = |
| 237 message.release_optional_nested_message(); |
| 238 EXPECT_FALSE(message.has_optional_nested_message()); |
| 239 ASSERT_TRUE(nest != NULL); |
| 240 EXPECT_EQ(1, nest->bb()); |
| 241 delete nest; |
| 242 |
| 243 EXPECT_EQ(NULL, message.release_optional_nested_message()); |
| 244 EXPECT_FALSE(message.has_optional_nested_message()); |
| 245 } |
| 246 |
198 TEST(GeneratedMessageTest, Clear) { | 247 TEST(GeneratedMessageTest, Clear) { |
199 // Set every field to a unique value, clear the message, then check that | 248 // Set every field to a unique value, clear the message, then check that |
200 // it is cleared. | 249 // it is cleared. |
201 unittest::TestAllTypes message; | 250 unittest::TestAllTypes message; |
202 | 251 |
203 TestUtil::SetAllFields(&message); | 252 TestUtil::SetAllFields(&message); |
204 message.Clear(); | 253 message.Clear(); |
205 TestUtil::ExpectClear(message); | 254 TestUtil::ExpectClear(message); |
206 | 255 |
207 // Unlike with the defaults test, we do NOT expect that requesting embedded | 256 // Unlike with the defaults test, we do NOT expect that requesting embedded |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 | 324 |
276 TestUtil::SetAllFields(&message1); | 325 TestUtil::SetAllFields(&message1); |
277 message2.CopyFrom(message1); | 326 message2.CopyFrom(message1); |
278 TestUtil::ExpectAllFieldsSet(message2); | 327 TestUtil::ExpectAllFieldsSet(message2); |
279 | 328 |
280 // Copying from self should be a no-op. | 329 // Copying from self should be a no-op. |
281 message2.CopyFrom(message2); | 330 message2.CopyFrom(message2); |
282 TestUtil::ExpectAllFieldsSet(message2); | 331 TestUtil::ExpectAllFieldsSet(message2); |
283 } | 332 } |
284 | 333 |
| 334 |
285 TEST(GeneratedMessageTest, SwapWithEmpty) { | 335 TEST(GeneratedMessageTest, SwapWithEmpty) { |
286 unittest::TestAllTypes message1, message2; | 336 unittest::TestAllTypes message1, message2; |
287 TestUtil::SetAllFields(&message1); | 337 TestUtil::SetAllFields(&message1); |
288 | 338 |
289 TestUtil::ExpectAllFieldsSet(message1); | 339 TestUtil::ExpectAllFieldsSet(message1); |
290 TestUtil::ExpectClear(message2); | 340 TestUtil::ExpectClear(message2); |
291 message1.Swap(&message2); | 341 message1.Swap(&message2); |
292 TestUtil::ExpectAllFieldsSet(message2); | 342 TestUtil::ExpectAllFieldsSet(message2); |
293 TestUtil::ExpectClear(message1); | 343 TestUtil::ExpectClear(message1); |
294 } | 344 } |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 | 419 |
370 TEST(GeneratedMessageTest, CopyAssignmentOperator) { | 420 TEST(GeneratedMessageTest, CopyAssignmentOperator) { |
371 unittest::TestAllTypes message1; | 421 unittest::TestAllTypes message1; |
372 TestUtil::SetAllFields(&message1); | 422 TestUtil::SetAllFields(&message1); |
373 | 423 |
374 unittest::TestAllTypes message2; | 424 unittest::TestAllTypes message2; |
375 message2 = message1; | 425 message2 = message1; |
376 TestUtil::ExpectAllFieldsSet(message2); | 426 TestUtil::ExpectAllFieldsSet(message2); |
377 | 427 |
378 // Make sure that self-assignment does something sane. | 428 // Make sure that self-assignment does something sane. |
379 message2 = message2; | 429 message2.operator=(message2); |
380 TestUtil::ExpectAllFieldsSet(message2); | 430 TestUtil::ExpectAllFieldsSet(message2); |
381 } | 431 } |
382 | 432 |
383 TEST(GeneratedMessageTest, UpcastCopyFrom) { | 433 TEST(GeneratedMessageTest, UpcastCopyFrom) { |
384 // Test the CopyFrom method that takes in the generic const Message& | 434 // Test the CopyFrom method that takes in the generic const Message& |
385 // parameter. | 435 // parameter. |
386 unittest::TestAllTypes message1, message2; | 436 unittest::TestAllTypes message1, message2; |
387 | 437 |
388 TestUtil::SetAllFields(&message1); | 438 TestUtil::SetAllFields(&message1); |
389 | 439 |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
711 message1.mutable_optional_nested_message(); | 761 message1.mutable_optional_nested_message(); |
712 ASSERT_EQ(sizeof(unittest::TestAllTypes::NestedMessage), | 762 ASSERT_EQ(sizeof(unittest::TestAllTypes::NestedMessage), |
713 message1.optional_nested_message().SpaceUsed()); | 763 message1.optional_nested_message().SpaceUsed()); |
714 EXPECT_EQ(previous_size + | 764 EXPECT_EQ(previous_size + |
715 sizeof(unittest::TestAllTypes::NestedMessage), | 765 sizeof(unittest::TestAllTypes::NestedMessage), |
716 message1.SpaceUsed()); | 766 message1.SpaceUsed()); |
717 } | 767 } |
718 | 768 |
719 #endif // !PROTOBUF_TEST_NO_DESCRIPTORS | 769 #endif // !PROTOBUF_TEST_NO_DESCRIPTORS |
720 | 770 |
| 771 |
721 TEST(GeneratedMessageTest, FieldConstantValues) { | 772 TEST(GeneratedMessageTest, FieldConstantValues) { |
722 unittest::TestRequired message; | 773 unittest::TestRequired message; |
723 EXPECT_EQ(unittest::TestAllTypes_NestedMessage::kBbFieldNumber, 1); | 774 EXPECT_EQ(unittest::TestAllTypes_NestedMessage::kBbFieldNumber, 1); |
724 EXPECT_EQ(unittest::TestAllTypes::kOptionalInt32FieldNumber, 1); | 775 EXPECT_EQ(unittest::TestAllTypes::kOptionalInt32FieldNumber, 1); |
725 EXPECT_EQ(unittest::TestAllTypes::kOptionalgroupFieldNumber, 16); | 776 EXPECT_EQ(unittest::TestAllTypes::kOptionalgroupFieldNumber, 16); |
726 EXPECT_EQ(unittest::TestAllTypes::kOptionalNestedMessageFieldNumber, 18); | 777 EXPECT_EQ(unittest::TestAllTypes::kOptionalNestedMessageFieldNumber, 18); |
727 EXPECT_EQ(unittest::TestAllTypes::kOptionalNestedEnumFieldNumber, 21); | 778 EXPECT_EQ(unittest::TestAllTypes::kOptionalNestedEnumFieldNumber, 21); |
728 EXPECT_EQ(unittest::TestAllTypes::kRepeatedInt32FieldNumber, 31); | 779 EXPECT_EQ(unittest::TestAllTypes::kRepeatedInt32FieldNumber, 31); |
729 EXPECT_EQ(unittest::TestAllTypes::kRepeatedgroupFieldNumber, 46); | 780 EXPECT_EQ(unittest::TestAllTypes::kRepeatedgroupFieldNumber, 46); |
730 EXPECT_EQ(unittest::TestAllTypes::kRepeatedNestedMessageFieldNumber, 48); | 781 EXPECT_EQ(unittest::TestAllTypes::kRepeatedNestedMessageFieldNumber, 48); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
802 | 853 |
803 EXPECT_EQ(1, unittest::TestEnumWithDupValue_MIN); | 854 EXPECT_EQ(1, unittest::TestEnumWithDupValue_MIN); |
804 EXPECT_EQ(3, unittest::TestEnumWithDupValue_MAX); | 855 EXPECT_EQ(3, unittest::TestEnumWithDupValue_MAX); |
805 EXPECT_EQ(4, unittest::TestEnumWithDupValue_ARRAYSIZE); | 856 EXPECT_EQ(4, unittest::TestEnumWithDupValue_ARRAYSIZE); |
806 | 857 |
807 EXPECT_EQ(unittest::SPARSE_E, unittest::TestSparseEnum_MIN); | 858 EXPECT_EQ(unittest::SPARSE_E, unittest::TestSparseEnum_MIN); |
808 EXPECT_EQ(unittest::SPARSE_C, unittest::TestSparseEnum_MAX); | 859 EXPECT_EQ(unittest::SPARSE_C, unittest::TestSparseEnum_MAX); |
809 EXPECT_EQ(12589235, unittest::TestSparseEnum_ARRAYSIZE); | 860 EXPECT_EQ(12589235, unittest::TestSparseEnum_ARRAYSIZE); |
810 | 861 |
811 // Make sure we can take the address of _MIN, _MAX and _ARRAYSIZE. | 862 // Make sure we can take the address of _MIN, _MAX and _ARRAYSIZE. |
812 void* nullptr = 0; // NULL may be integer-type, not pointer-type. | 863 void* null_pointer = 0; // NULL may be integer-type, not pointer-type. |
813 EXPECT_NE(nullptr, &unittest::TestAllTypes::NestedEnum_MIN); | 864 EXPECT_NE(null_pointer, &unittest::TestAllTypes::NestedEnum_MIN); |
814 EXPECT_NE(nullptr, &unittest::TestAllTypes::NestedEnum_MAX); | 865 EXPECT_NE(null_pointer, &unittest::TestAllTypes::NestedEnum_MAX); |
815 EXPECT_NE(nullptr, &unittest::TestAllTypes::NestedEnum_ARRAYSIZE); | 866 EXPECT_NE(null_pointer, &unittest::TestAllTypes::NestedEnum_ARRAYSIZE); |
816 | 867 |
817 EXPECT_NE(nullptr, &unittest::ForeignEnum_MIN); | 868 EXPECT_NE(null_pointer, &unittest::ForeignEnum_MIN); |
818 EXPECT_NE(nullptr, &unittest::ForeignEnum_MAX); | 869 EXPECT_NE(null_pointer, &unittest::ForeignEnum_MAX); |
819 EXPECT_NE(nullptr, &unittest::ForeignEnum_ARRAYSIZE); | 870 EXPECT_NE(null_pointer, &unittest::ForeignEnum_ARRAYSIZE); |
820 | 871 |
821 // Make sure we can use _MIN, _MAX and _ARRAYSIZE as switch cases. | 872 // Make sure we can use _MIN, _MAX and _ARRAYSIZE as switch cases. |
822 switch (unittest::SPARSE_A) { | 873 switch (unittest::SPARSE_A) { |
823 case unittest::TestSparseEnum_MIN: | 874 case unittest::TestSparseEnum_MIN: |
824 case unittest::TestSparseEnum_MAX: | 875 case unittest::TestSparseEnum_MAX: |
825 case unittest::TestSparseEnum_ARRAYSIZE: | 876 case unittest::TestSparseEnum_ARRAYSIZE: |
826 break; | 877 break; |
827 default: | 878 default: |
828 break; | 879 break; |
829 } | 880 } |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1221 DescriptorPool::generated_pool()->InternalIsFileLoaded( | 1272 DescriptorPool::generated_pool()->InternalIsFileLoaded( |
1222 "google/protobuf/unittest.proto")); | 1273 "google/protobuf/unittest.proto")); |
1223 } | 1274 } |
1224 | 1275 |
1225 } // namespace cpp_unittest | 1276 } // namespace cpp_unittest |
1226 | 1277 |
1227 } // namespace cpp | 1278 } // namespace cpp |
1228 } // namespace compiler | 1279 } // namespace compiler |
1229 } // namespace protobuf | 1280 } // namespace protobuf |
1230 } // namespace google | 1281 } // namespace google |
OLD | NEW |