| // Copyright 2022 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "gn/target_public_pair.h" |
| #include "util/test/test.h" |
| |
| TEST(TargetPublicPairTest, ConstructionAndMutation) { |
| // Fake target pointer values. |
| const auto* a_target = reinterpret_cast<const Target*>(1000); |
| const auto* b_target = reinterpret_cast<const Target*>(2000); |
| |
| TargetPublicPair a_pair(a_target, true); |
| EXPECT_EQ(a_target, a_pair.target()); |
| EXPECT_TRUE(a_pair.is_public()); |
| |
| TargetPublicPair b_pair(b_target, false); |
| EXPECT_EQ(b_target, b_pair.target()); |
| EXPECT_FALSE(b_pair.is_public()); |
| |
| a_pair.set_target(b_target); |
| EXPECT_EQ(b_target, a_pair.target()); |
| EXPECT_TRUE(a_pair.is_public()); |
| |
| a_pair.set_is_public(false); |
| EXPECT_EQ(b_target, a_pair.target()); |
| EXPECT_FALSE(a_pair.is_public()); |
| |
| a_pair = TargetPublicPair(a_target, true); |
| EXPECT_EQ(a_target, a_pair.target()); |
| EXPECT_TRUE(a_pair.is_public()); |
| |
| b_pair = std::move(a_pair); |
| EXPECT_EQ(a_target, b_pair.target()); |
| EXPECT_TRUE(b_pair.is_public()); |
| } |
| |
| TEST(TargetPublicPairTest, Builder) { |
| const auto* a_target = reinterpret_cast<const Target*>(1000); |
| const auto* b_target = reinterpret_cast<const Target*>(2000); |
| TargetPublicPairListBuilder builder; |
| |
| builder.Append(a_target, false); |
| builder.Append(b_target, false); |
| builder.Append(a_target, true); |
| builder.Append(b_target, false); |
| |
| auto list = builder.Build(); |
| EXPECT_EQ(2u, list.size()); |
| EXPECT_EQ(a_target, list[0].target()); |
| EXPECT_EQ(b_target, list[1].target()); |
| EXPECT_TRUE(list[0].is_public()); |
| EXPECT_FALSE(list[1].is_public()); |
| } |