blob: 8b08a0c5b3ce7a7e20a2188f4cf1aedc9e830ace [file] [log] [blame]
// 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());
}