blob: e6fed2be222fb470a1a08b0aa8275fd67e9d2bff [file] [log] [blame]
// Copyright 2018 The Goma 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 "cpp_macro_set.h"
#include "absl/memory/memory.h"
#include "cpp_macro.h"
#include "gtest/gtest.h"
namespace devtools_goma {
TEST(CppParserTest, MacroSet) {
auto m0(
absl::make_unique<Macro>("a", Macro::OBJ, ArrayTokenList(), 0, false));
auto m1(
absl::make_unique<Macro>("a", Macro::OBJ, ArrayTokenList(), 0, false));
auto m2(
absl::make_unique<Macro>("a", Macro::OBJ, ArrayTokenList(), 0, false));
auto m3(
absl::make_unique<Macro>("a", Macro::OBJ, ArrayTokenList(), 0, false));
MacroSet a, b, c;
EXPECT_TRUE(a.empty());
a.Set(m1.get());
a.Set(m2.get());
b.Set(m3.get());
EXPECT_FALSE(a.empty());
EXPECT_FALSE(b.empty());
EXPECT_TRUE(a.Has(m1.get()));
EXPECT_FALSE(a.Has(m3.get()));
EXPECT_FALSE(b.Has(m1.get()));
EXPECT_TRUE(b.Has(m3.get()));
a.Union(b);
EXPECT_FALSE(a.Has(m0.get()));
EXPECT_TRUE(a.Has(m1.get()));
EXPECT_TRUE(a.Has(m3.get()));
}
} // namespace devtools_goma