| // 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 "gn/target.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()); | |
| } |