1// Copyright (c) 2010 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 "chrome/browser/sync/protocol/test.pb.h" 9#include "testing/gtest/include/gtest/gtest.h" 10 11namespace { 12 13TEST(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