1 // Copyright 2023 The Chromium Authors 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 "base/test/test_proto_loader.h" 6 7 #include "base/files/file_path.h" 8 #include "base/notreached.h" 9 #include "base/path_service.h" 10 #include "base/test/test.pb.h" 11 #include "testing/gtest/include/gtest/gtest.h" 12 13 namespace base { 14 namespace { 15 GetTestDataRoot()16base::FilePath GetTestDataRoot() { 17 return base::PathService::CheckedGet(base::DIR_GEN_TEST_DATA_ROOT); 18 } 19 LoadTestProto(const std::string & proto_text,google::protobuf::MessageLite & proto)20void LoadTestProto(const std::string& proto_text, 21 google::protobuf::MessageLite& proto) { 22 base::TestProtoLoader loader(GetTestDataRoot().Append(FILE_PATH_LITERAL( 23 "base/test/test_proto.descriptor")), 24 "base.test.TestMessage"); 25 std::string serialized_message; 26 loader.ParseFromText(proto_text, serialized_message); 27 ASSERT_TRUE(proto.ParseFromString(serialized_message)); 28 } 29 30 } // namespace 31 TEST(TestProtoLoaderTest,LoadProto)32TEST(TestProtoLoaderTest, LoadProto) { 33 test::TestMessage proto; 34 LoadTestProto( 35 R"pb( 36 test: "Message" 37 )pb", 38 proto); 39 EXPECT_EQ("Message", proto.test()); 40 } 41 42 } // namespace base 43