diff options
Diffstat (limited to 'src/google/protobuf/unknown_field_set_unittest.cc')
-rw-r--r-- | src/google/protobuf/unknown_field_set_unittest.cc | 97 |
1 files changed, 5 insertions, 92 deletions
diff --git a/src/google/protobuf/unknown_field_set_unittest.cc b/src/google/protobuf/unknown_field_set_unittest.cc index aaaa2e8..1235c9e 100644 --- a/src/google/protobuf/unknown_field_set_unittest.cc +++ b/src/google/protobuf/unknown_field_set_unittest.cc @@ -1,6 +1,6 @@ // Protocol Buffers - Google's data interchange format // Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ +// http://code.google.com/p/protobuf/ // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -46,13 +46,15 @@ #include <google/protobuf/stubs/common.h> #include <google/protobuf/testing/googletest.h> #include <gtest/gtest.h> -#include <google/protobuf/stubs/stl_util.h> +#include <google/protobuf/stubs/stl_util-inl.h> namespace google { namespace protobuf { using internal::WireFormat; +namespace { + class UnknownFieldSetTest : public testing::Test { protected: virtual void SetUp() { @@ -105,8 +107,6 @@ class UnknownFieldSetTest : public testing::Test { UnknownFieldSet* unknown_fields_; }; -namespace { - TEST_F(UnknownFieldSetTest, AllFieldsPresent) { // All fields of TestAllTypes should be present, in numeric order (because // that's the order we parsed them in). Fields that are not valid field @@ -118,12 +118,7 @@ TEST_F(UnknownFieldSetTest, AllFieldsPresent) { const FieldDescriptor* field = descriptor_->FindFieldByNumber(i); if (field != NULL) { ASSERT_LT(pos, unknown_fields_->field_count()); - // Do not check oneof field if it is not set. - if (field->containing_oneof() == NULL) { - EXPECT_EQ(i, unknown_fields_->field(pos++).number()); - } else if (i == unknown_fields_->field(pos).number()) { - pos++; - } + EXPECT_EQ(i, unknown_fields_->field(pos++).number()); if (field->is_repeated()) { // Should have a second instance. ASSERT_LT(pos, unknown_fields_->field_count()); @@ -302,21 +297,12 @@ TEST_F(UnknownFieldSetTest, MergeFrom) { destination.DebugString()); } - TEST_F(UnknownFieldSetTest, Clear) { // Clear the set. empty_message_.Clear(); EXPECT_EQ(0, unknown_fields_->field_count()); } -TEST_F(UnknownFieldSetTest, ClearAndFreeMemory) { - EXPECT_GT(unknown_fields_->field_count(), 0); - unknown_fields_->ClearAndFreeMemory(); - EXPECT_EQ(0, unknown_fields_->field_count()); - unknown_fields_->AddVarint(123456, 654321); - EXPECT_EQ(1, unknown_fields_->field_count()); -} - TEST_F(UnknownFieldSetTest, ParseKnownAndUnknown) { // Test mixing known and unknown fields when parsing. @@ -512,7 +498,6 @@ TEST_F(UnknownFieldSetTest, SpaceUsed) { EXPECT_LT(base_size, empty_message.SpaceUsed()); } - TEST_F(UnknownFieldSetTest, Empty) { UnknownFieldSet unknown_fields; EXPECT_TRUE(unknown_fields.empty()); @@ -522,78 +507,6 @@ TEST_F(UnknownFieldSetTest, Empty) { EXPECT_TRUE(unknown_fields.empty()); } -TEST_F(UnknownFieldSetTest, DeleteSubrange) { - // Exhaustively test the deletion of every possible subrange in arrays of all - // sizes from 0 through 9. - for (int size = 0; size < 10; ++size) { - for (int num = 0; num <= size; ++num) { - for (int start = 0; start < size - num; ++start) { - // Create a set with "size" fields. - UnknownFieldSet unknown; - for (int i = 0; i < size; ++i) { - unknown.AddFixed32(i, i); - } - // Delete the specified subrange. - unknown.DeleteSubrange(start, num); - // Make sure the resulting field values are still correct. - EXPECT_EQ(size - num, unknown.field_count()); - for (int i = 0; i < unknown.field_count(); ++i) { - if (i < start) { - EXPECT_EQ(i, unknown.field(i).fixed32()); - } else { - EXPECT_EQ(i + num, unknown.field(i).fixed32()); - } - } - } - } - } -} - -void CheckDeleteByNumber(const vector<int>& field_numbers, int deleted_number, - const vector<int>& expected_field_nubmers) { - UnknownFieldSet unknown_fields; - for (int i = 0; i < field_numbers.size(); ++i) { - unknown_fields.AddFixed32(field_numbers[i], i); - } - unknown_fields.DeleteByNumber(deleted_number); - ASSERT_EQ(expected_field_nubmers.size(), unknown_fields.field_count()); - for (int i = 0; i < expected_field_nubmers.size(); ++i) { - EXPECT_EQ(expected_field_nubmers[i], - unknown_fields.field(i).number()); - } -} - -#define MAKE_VECTOR(x) vector<int>(x, x + GOOGLE_ARRAYSIZE(x)) -TEST_F(UnknownFieldSetTest, DeleteByNumber) { - CheckDeleteByNumber(vector<int>(), 1, vector<int>()); - static const int kTestFieldNumbers1[] = {1, 2, 3}; - static const int kFieldNumberToDelete1 = 1; - static const int kExpectedFieldNumbers1[] = {2, 3}; - CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers1), kFieldNumberToDelete1, - MAKE_VECTOR(kExpectedFieldNumbers1)); - static const int kTestFieldNumbers2[] = {1, 2, 3}; - static const int kFieldNumberToDelete2 = 2; - static const int kExpectedFieldNumbers2[] = {1, 3}; - CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers2), kFieldNumberToDelete2, - MAKE_VECTOR(kExpectedFieldNumbers2)); - static const int kTestFieldNumbers3[] = {1, 2, 3}; - static const int kFieldNumberToDelete3 = 3; - static const int kExpectedFieldNumbers3[] = {1, 2}; - CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers3), kFieldNumberToDelete3, - MAKE_VECTOR(kExpectedFieldNumbers3)); - static const int kTestFieldNumbers4[] = {1, 2, 1, 4, 1}; - static const int kFieldNumberToDelete4 = 1; - static const int kExpectedFieldNumbers4[] = {2, 4}; - CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers4), kFieldNumberToDelete4, - MAKE_VECTOR(kExpectedFieldNumbers4)); - static const int kTestFieldNumbers5[] = {1, 2, 3, 4, 5}; - static const int kFieldNumberToDelete5 = 6; - static const int kExpectedFieldNumbers5[] = {1, 2, 3, 4, 5}; - CheckDeleteByNumber(MAKE_VECTOR(kTestFieldNumbers5), kFieldNumberToDelete5, - MAKE_VECTOR(kExpectedFieldNumbers5)); -} -#undef MAKE_VECTOR } // namespace - } // namespace protobuf } // namespace google |