blob: e46c0009ba577b8d69f8b4c282a417714bb185ca [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/proto_extras/proto_matchers.h"
#include "components/proto_extras/test_proto/test_proto.pb.h"
#include "components/proto_extras/test_proto/test_proto.test.h"
#include "components/proto_extras/test_proto/test_proto_dependency.pb.h"
#include "components/proto_extras/test_proto/test_proto_dependency.test.h"
#include "components/proto_extras/test_proto2/test_proto2.pb.h"
#include "components/proto_extras/test_proto2/test_proto2.test.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace proto_extras {
namespace {
using ::testing::Not;
TEST(ProtoTestExtras, NestedMessage) {
TestMessage::NestedMessage nested_message;
EXPECT_THAT(nested_message,
EqualsTestMessage_NestedMessage(TestMessage_NestedMessage()));
nested_message.set_int32_field(1);
EXPECT_THAT(
nested_message,
Not(EqualsTestMessage_NestedMessage(TestMessage_NestedMessage())));
TestMessage::NestedMessage nested_message2;
nested_message2.set_int32_field(1);
EXPECT_THAT(nested_message, EqualsTestMessage_NestedMessage(nested_message2));
}
TEST(ProtoTestExtras, NestedMessageDependency) {
TestMessage::NestedMessage nested_message;
EXPECT_THAT(nested_message,
EqualsTestMessage_NestedMessage(TestMessage_NestedMessage()));
}
TEST(ProtoTestExtras, TestMessagePrimitiveFields) {
TestMessage message;
EXPECT_THAT(message, EqualsTestMessage(TestMessage()));
message.set_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessage(TestMessage())));
TestMessage message2;
message2.set_int32_field(1);
EXPECT_THAT(message, EqualsTestMessage(message2));
message.set_string_field("abc");
EXPECT_THAT(message, Not(EqualsTestMessage(message2)));
message2.set_string_field("abc");
EXPECT_THAT(message, EqualsTestMessage(message2));
message.set_bytes_field("\x01\x02\x03");
EXPECT_THAT(message, Not(EqualsTestMessage(message2)));
message2.set_bytes_field("\x01\x02\x03");
EXPECT_THAT(message, EqualsTestMessage(message2));
message.set_double_field(1.0);
EXPECT_THAT(message, Not(EqualsTestMessage(message2)));
message2.set_double_field(1.0);
EXPECT_THAT(message, EqualsTestMessage(message2));
}
TEST(ProtoTestExtras, TestMessageRepeatedFields) {
TestMessage message;
EXPECT_THAT(message, EqualsTestMessage(TestMessage()));
message.add_repeated_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessage(TestMessage())));
TestMessage message2;
message2.add_repeated_int32_field(1);
EXPECT_THAT(message, EqualsTestMessage(message2));
message.add_repeated_int32_field(2);
EXPECT_THAT(message, Not(EqualsTestMessage(message2)));
message2.add_repeated_int32_field(2);
EXPECT_THAT(message, EqualsTestMessage(message2));
}
TEST(ProtoTestExtras, TestMessageOneofFields) {
TestMessage message;
EXPECT_THAT(message, EqualsTestMessage(TestMessage()));
message.set_maybe_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessage(TestMessage())));
TestMessage message2;
message2.set_maybe_int32_field(1);
EXPECT_THAT(message, EqualsTestMessage(message2));
message.set_maybe_string_field("abc");
EXPECT_THAT(message, Not(EqualsTestMessage(message2)));
message2.set_maybe_string_field("abc");
EXPECT_THAT(message, EqualsTestMessage(message2));
message.mutable_maybe_dependency_message()->set_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessage(message2)));
message2.mutable_maybe_dependency_message()->set_int32_field(1);
EXPECT_THAT(message, EqualsTestMessage(message2));
}
TEST(ProtoTestExtras, TestEnumFields) {
TestMessage message;
EXPECT_THAT(message, EqualsTestMessage(TestMessage()));
message.set_enum_field(TestMessage::ENUM_A);
EXPECT_THAT(message, Not(EqualsTestMessage(TestMessage())));
TestMessage message2;
message2.set_enum_field(TestMessage::ENUM_A);
EXPECT_THAT(message, EqualsTestMessage(message2));
}
TEST(ProtoTestExtras, TestNestedMessages) {
TestMessage message;
EXPECT_THAT(message, EqualsTestMessage(TestMessage()));
message.mutable_nested_message_field()->set_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessage(TestMessage())));
TestMessage message2;
message2.mutable_nested_message_field()->set_int32_field(1);
EXPECT_THAT(message, EqualsTestMessage(message2));
message.mutable_dependency_message()->set_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessage(message2)));
message2.mutable_dependency_message()->set_int32_field(1);
EXPECT_THAT(message, EqualsTestMessage(message2));
}
TEST(ProtoTestExtras, TestMapFields) {
TestMessage message;
TestMessage expected;
(*message.mutable_primitive_map_field())[1] = "hello";
EXPECT_THAT(message, Not(EqualsTestMessage(expected)));
(*expected.mutable_primitive_map_field())[1] = "hello";
EXPECT_THAT(message, EqualsTestMessage(expected));
(*message.mutable_primitive_map_field())[2] = "world";
EXPECT_THAT(message, Not(EqualsTestMessage(expected)));
(*expected.mutable_primitive_map_field())[2] = "world1";
EXPECT_THAT(message, Not(EqualsTestMessage(expected)));
(*expected.mutable_primitive_map_field())[2] = "world";
EXPECT_THAT(message, EqualsTestMessage(expected));
(*message.mutable_message_map_field())["hello"].set_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessage(expected)));
(*expected.mutable_message_map_field())["hello"].set_int32_field(1);
EXPECT_THAT(message, EqualsTestMessage(expected));
(*message.mutable_message_map_field())["hello"].set_int32_field(2);
EXPECT_THAT(message, Not(EqualsTestMessage(expected)));
(*expected.mutable_message_map_field())["hello"].set_int32_field(3);
EXPECT_THAT(message, Not(EqualsTestMessage(expected)));
(*expected.mutable_message_map_field())["hello"].set_int32_field(2);
EXPECT_THAT(message, EqualsTestMessage(expected));
}
TEST(ProtoTestExtrasProto2, TestMessage) {
TestMessageProto2 message;
EXPECT_THAT(message, EqualsTestMessageProto2(TestMessageProto2()));
}
TEST(ProtoTestExtrasProto2, TestMessageProto2PrimitiveFields) {
TestMessageProto2 message;
EXPECT_THAT(message, EqualsTestMessageProto2(TestMessageProto2()));
message.set_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessageProto2(TestMessageProto2())));
TestMessageProto2 message2;
message2.set_int32_field(1);
EXPECT_THAT(message, EqualsTestMessageProto2(message2));
message.set_uint64_field(1);
EXPECT_THAT(message, Not(EqualsTestMessageProto2(message2)));
message2.set_uint64_field(1);
EXPECT_THAT(message, EqualsTestMessageProto2(message2));
message.set_inner_enum(TestMessageProto2::INNER_ENUM_OPTION1);
EXPECT_THAT(message, Not(EqualsTestMessageProto2(message2)));
message2.set_inner_enum(TestMessageProto2::INNER_ENUM_OPTION1);
EXPECT_THAT(message, EqualsTestMessageProto2(message2));
}
TEST(ProtoTestExtrasProto2, RepeatedFields) {
TestMessageProto2 message;
EXPECT_THAT(message, EqualsTestMessageProto2(TestMessageProto2()));
message.add_repeated_int32_field(1);
EXPECT_THAT(message, Not(EqualsTestMessageProto2(TestMessageProto2())));
TestMessageProto2 message2;
message2.add_repeated_int32_field(1);
EXPECT_THAT(message, EqualsTestMessageProto2(message2));
message.add_repeated_embedded_message()->set_str_field("abc");
EXPECT_THAT(message, Not(EqualsTestMessageProto2(message2)));
message2.add_repeated_embedded_message()->set_str_field("abc");
EXPECT_THAT(message, EqualsTestMessageProto2(message2));
}
TEST(ProtoTestExtrasProto2, MapFields) {
TestMessageProto2 message;
TestMessageProto2 expected;
EXPECT_THAT(message, EqualsTestMessageProto2(expected));
(*message.mutable_primitive_map_field())[1] = "hello";
EXPECT_THAT(message, Not(EqualsTestMessageProto2(expected)));
(*expected.mutable_primitive_map_field())[1] = "hello";
EXPECT_THAT(message, EqualsTestMessageProto2(expected));
(*message.mutable_primitive_map_field())[2] = "world";
EXPECT_THAT(message, Not(EqualsTestMessageProto2(expected)));
(*expected.mutable_primitive_map_field())[2] = "world1";
EXPECT_THAT(message, Not(EqualsTestMessageProto2(expected)));
(*expected.mutable_primitive_map_field())[2] = "world";
EXPECT_THAT(message, EqualsTestMessageProto2(expected));
(*message.mutable_message_map_field())["hello"].set_str_field("world");
EXPECT_THAT(message, Not(EqualsTestMessageProto2(expected)));
(*expected.mutable_message_map_field())["hello"].set_str_field("world");
EXPECT_THAT(message, EqualsTestMessageProto2(expected));
(*message.mutable_message_map_field())["hello2"].set_str_field("world2");
EXPECT_THAT(message, Not(EqualsTestMessageProto2(expected)));
(*expected.mutable_message_map_field())["hello2"].set_str_field("world3");
EXPECT_THAT(message, Not(EqualsTestMessageProto2(expected)));
(*expected.mutable_message_map_field())["hello2"].set_str_field("world2");
EXPECT_THAT(message, EqualsTestMessageProto2(expected));
}
} // namespace
} // namespace proto_extras