xref: /aosp_15_r20/external/private-join-and-compute/private_join_and_compute/util/proto_util_test.cc (revision a6aa18fbfbf9cb5cd47356a9d1b057768998488c)
1 /*
2  * Copyright 2019 Google LLC.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     https://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "private_join_and_compute/util/proto_util.h"
17 
18 #include <gmock/gmock.h>
19 #include <gtest/gtest.h>
20 
21 #include <string>
22 #include <vector>
23 
24 #include "private_join_and_compute/util/file_test.pb.h"
25 #include "private_join_and_compute/util/status_testing.inc"
26 
27 namespace private_join_and_compute {
28 
29 namespace {
30 using testing::TestProto;
31 
TEST(ProtoUtilsTest,ConvertsToAndFrom)32 TEST(ProtoUtilsTest, ConvertsToAndFrom) {
33   TestProto expected_test_proto;
34   expected_test_proto.set_record("data");
35   expected_test_proto.set_dummy("dummy");
36   std::string serialized = ProtoUtils::ToString(expected_test_proto);
37   TestProto actual_test_proto = ProtoUtils::FromString<TestProto>(serialized);
38   EXPECT_EQ(actual_test_proto.record(), expected_test_proto.record());
39   EXPECT_EQ(actual_test_proto.dummy(), expected_test_proto.dummy());
40 }
41 
TEST(ProtoUtilsTest,ReadWriteToFile)42 TEST(ProtoUtilsTest, ReadWriteToFile) {
43   std::string filename = ::testing::TempDir() + "/proto_file";
44 
45   TestProto expected_test_proto;
46   expected_test_proto.set_record("data");
47   expected_test_proto.set_dummy("dummy");
48 
49   ASSERT_TRUE(ProtoUtils::WriteProtoToFile(expected_test_proto, filename).ok());
50   ASSERT_OK_AND_ASSIGN(TestProto actual_test_proto,
51                        ProtoUtils::ReadProtoFromFile<TestProto>(filename));
52   EXPECT_EQ(actual_test_proto.record(), expected_test_proto.record());
53   EXPECT_EQ(actual_test_proto.dummy(), expected_test_proto.dummy());
54 }
55 
TEST(ProtoUtilsTest,ReadWriteManyToFile)56 TEST(ProtoUtilsTest, ReadWriteManyToFile) {
57   std::string filename = ::testing::TempDir() + "/proto_file";
58 
59   TestProto expected_test_proto;
60   expected_test_proto.set_record("data");
61   expected_test_proto.set_dummy("dummy");
62 
63   std::vector<TestProto> test_vector = {
64       expected_test_proto, expected_test_proto, expected_test_proto};
65 
66   ASSERT_TRUE(ProtoUtils::WriteRecordsToFile(filename, test_vector).ok());
67   ASSERT_OK_AND_ASSIGN(std::vector<TestProto> result,
68                        ProtoUtils::ReadProtosFromFile<TestProto>(filename));
69   EXPECT_EQ(result.size(), test_vector.size());
70   for (const TestProto& result_element : result) {
71     EXPECT_EQ(result_element.record(), expected_test_proto.record());
72     EXPECT_EQ(result_element.dummy(), expected_test_proto.dummy());
73   }
74 }
75 
76 }  // namespace
77 
78 }  // namespace private_join_and_compute
79