Roll src/third_party/WebKit 1dfb44f:c96f7be (svn 183545:183546)
[chromium-blink-merge.git] / sync / util / protobuf_unittest.cc
blob4f654d5d77dc9c922448c7a65f3a9c762d6bcdea
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.
5 #include <string>
6 #include <vector>
8 #include "sync/protocol/test.pb.h"
9 #include "testing/gtest/include/gtest/gtest.h"
11 namespace {
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;
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());
35 } // namespace