1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include <string> 6 #include <vector> 7 8 #include "sync/protocol/test.pb.h" 9 #include "testing/gtest/include/gtest/gtest.h" 10 11 namespace { 12 13 TEST(SyncProtobufTest, TestUnknownFields) { 14 // This tests ensures that we retain unknown fields in protocol buffers by 15 // serialising UnknownFieldsTestB, which is a superset of UnknownFieldsTestA, 16 // and checking we get back to the same message after parsing/serialising via 17 // UnknownFieldsTestA. 18 sync_pb::UnknownFieldsTestA a; 19 sync_pb::UnknownFieldsTestB b; 20 sync_pb::UnknownFieldsTestB b2; 21 22 b.set_foo(true); 23 b.set_bar(true); 24 std::string serialized; 25 ASSERT_TRUE(b.SerializeToString(&serialized)); 26 ASSERT_TRUE(a.ParseFromString(serialized)); 27 ASSERT_TRUE(a.foo()); 28 std::string serialized2; 29 ASSERT_TRUE(a.SerializeToString(&serialized2)); 30 ASSERT_TRUE(b2.ParseFromString(serialized2)); 31 ASSERT_TRUE(b2.foo()); 32 ASSERT_TRUE(b2.bar()); 33 } 34 35 } // namespace 36