1 // Copyright 2022 The Chromium Authors. All rights reserved.
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 "gn/target_public_pair.h"
6 #include "util/test/test.h"
7
TEST(TargetPublicPairTest,ConstructionAndMutation)8 TEST(TargetPublicPairTest, ConstructionAndMutation) {
9 // Fake target pointer values.
10 const auto* a_target = reinterpret_cast<const Target*>(1000);
11 const auto* b_target = reinterpret_cast<const Target*>(2000);
12
13 TargetPublicPair a_pair(a_target, true);
14 EXPECT_EQ(a_target, a_pair.target());
15 EXPECT_TRUE(a_pair.is_public());
16
17 TargetPublicPair b_pair(b_target, false);
18 EXPECT_EQ(b_target, b_pair.target());
19 EXPECT_FALSE(b_pair.is_public());
20
21 a_pair.set_target(b_target);
22 EXPECT_EQ(b_target, a_pair.target());
23 EXPECT_TRUE(a_pair.is_public());
24
25 a_pair.set_is_public(false);
26 EXPECT_EQ(b_target, a_pair.target());
27 EXPECT_FALSE(a_pair.is_public());
28
29 a_pair = TargetPublicPair(a_target, true);
30 EXPECT_EQ(a_target, a_pair.target());
31 EXPECT_TRUE(a_pair.is_public());
32
33 b_pair = std::move(a_pair);
34 EXPECT_EQ(a_target, b_pair.target());
35 EXPECT_TRUE(b_pair.is_public());
36 }
37
TEST(TargetPublicPairTest,Builder)38 TEST(TargetPublicPairTest, Builder) {
39 const auto* a_target = reinterpret_cast<const Target*>(1000);
40 const auto* b_target = reinterpret_cast<const Target*>(2000);
41 TargetPublicPairListBuilder builder;
42
43 builder.Append(a_target, false);
44 builder.Append(b_target, false);
45 builder.Append(a_target, true);
46 builder.Append(b_target, false);
47
48 auto list = builder.Build();
49 EXPECT_EQ(2u, list.size());
50 EXPECT_EQ(a_target, list[0].target());
51 EXPECT_EQ(b_target, list[1].target());
52 EXPECT_TRUE(list[0].is_public());
53 EXPECT_FALSE(list[1].is_public());
54 }
55