Home | History | Annotate | Download | only in util
      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