• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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