Files
TheRock/compiler/amd-llvm/clang/unittests/ScalableStaticAnalysisFramework/BuildNamespaceTest.cpp
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

159 lines
4.9 KiB
C++

//===- BuildNamespaceTest.cpp ---------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "clang/ScalableStaticAnalysisFramework/Core/Model/BuildNamespace.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Support/FormatProviders.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/raw_ostream.h"
#include "gtest/gtest.h"
namespace clang::ssaf {
namespace {
TEST(BuildNamespaceTest, Equality) {
auto BN1 = BuildNamespace::makeCompilationUnit("test.cpp");
auto BN2 = BuildNamespace::makeCompilationUnit("test.cpp");
auto BN3 = BuildNamespace::makeCompilationUnit("other.cpp");
EXPECT_EQ(BN1, BN2);
EXPECT_NE(BN1, BN3);
}
TEST(BuildNamespaceTest, DifferentKinds) {
BuildNamespace CU(BuildNamespaceKind::CompilationUnit, "test");
BuildNamespace LU(BuildNamespaceKind::LinkUnit, "test");
EXPECT_NE(CU, LU);
}
// NestedBuildNamespace Tests
TEST(NestedBuildNamespaceTest, DefaultConstruction) {
NestedBuildNamespace NBN;
EXPECT_TRUE(NBN.empty());
}
TEST(NestedBuildNamespaceTest, SingleNamespaceConstruction) {
auto BN = BuildNamespace::makeCompilationUnit("test.cpp");
NestedBuildNamespace NBN(BN);
EXPECT_FALSE(NBN.empty());
}
TEST(NestedBuildNamespaceTest, MakeTU) {
auto NBN = NestedBuildNamespace::makeCompilationUnit("test.cpp");
EXPECT_FALSE(NBN.empty());
}
TEST(NestedBuildNamespaceTest, Equality) {
auto NBN1 = NestedBuildNamespace::makeCompilationUnit("test.cpp");
auto NBN2 = NestedBuildNamespace::makeCompilationUnit("test.cpp");
auto NBN3 = NestedBuildNamespace::makeCompilationUnit("other.cpp");
EXPECT_EQ(NBN1, NBN2);
EXPECT_NE(NBN1, NBN3);
}
TEST(NestedBuildNamespaceTest, MakeQualified) {
auto NBN1 = NestedBuildNamespace::makeCompilationUnit("test.cpp");
BuildNamespace LinkNS(BuildNamespaceKind::LinkUnit, "app");
NestedBuildNamespace NBN2(LinkNS);
auto Qualified = NBN1.makeQualified(NBN2);
EXPECT_NE(Qualified, NBN1);
EXPECT_NE(Qualified, NBN2);
}
TEST(NestedBuildNamespaceTest, EmptyQualified) {
NestedBuildNamespace Empty;
auto NBN = NestedBuildNamespace::makeCompilationUnit("test.cpp");
auto Qualified = Empty.makeQualified(NBN);
EXPECT_EQ(Qualified, NBN);
}
TEST(BuildNamespaceKindTest, FormatProvider) {
EXPECT_EQ(llvm::formatv("{0}", BuildNamespaceKind::CompilationUnit).str(),
"CompilationUnit");
EXPECT_EQ(llvm::formatv("{0}", BuildNamespaceKind::LinkUnit).str(),
"LinkUnit");
}
TEST(BuildNamespaceKindTest, StreamOutputCompilationUnit) {
std::string S;
llvm::raw_string_ostream(S) << BuildNamespaceKind::CompilationUnit;
EXPECT_EQ(S, "CompilationUnit");
}
TEST(BuildNamespaceKindTest, StreamOutputLinkUnit) {
std::string S;
llvm::raw_string_ostream(S) << BuildNamespaceKind::LinkUnit;
EXPECT_EQ(S, "LinkUnit");
}
TEST(BuildNamespaceTest, FormatProvider) {
EXPECT_EQ(
llvm::formatv("{0}", BuildNamespace(BuildNamespaceKind::CompilationUnit,
"test.cpp"))
.str(),
"BuildNamespace(CompilationUnit, test.cpp)");
}
TEST(NestedBuildNamespaceTest, FormatProvider) {
NestedBuildNamespace NBN(
BuildNamespace(BuildNamespaceKind::CompilationUnit, "test.cpp"));
EXPECT_EQ(
llvm::formatv("{0}", NBN).str(),
"NestedBuildNamespace([BuildNamespace(CompilationUnit, test.cpp)])");
}
TEST(BuildNamespaceTest, StreamOutputCompilationUnit) {
BuildNamespace BN(BuildNamespaceKind::CompilationUnit, "test.cpp");
std::string S;
llvm::raw_string_ostream(S) << BN;
EXPECT_EQ(S, "BuildNamespace(CompilationUnit, test.cpp)");
}
TEST(BuildNamespaceTest, StreamOutputLinkUnit) {
BuildNamespace BN(BuildNamespaceKind::LinkUnit, "app");
std::string S;
llvm::raw_string_ostream(S) << BN;
EXPECT_EQ(S, "BuildNamespace(LinkUnit, app)");
}
TEST(NestedBuildNamespaceTest, StreamOutputEmpty) {
NestedBuildNamespace NBN;
std::string S;
llvm::raw_string_ostream(S) << NBN;
EXPECT_EQ(S, "NestedBuildNamespace([])");
}
TEST(NestedBuildNamespaceTest, StreamOutputSingle) {
NestedBuildNamespace NBN(
BuildNamespace(BuildNamespaceKind::CompilationUnit, "test.cpp"));
std::string S;
llvm::raw_string_ostream(S) << NBN;
EXPECT_EQ(
S, "NestedBuildNamespace([BuildNamespace(CompilationUnit, test.cpp)])");
}
TEST(NestedBuildNamespaceTest, StreamOutputMultiple) {
NestedBuildNamespace NBN(
BuildNamespace(BuildNamespaceKind::CompilationUnit, "test.cpp"));
NBN = NBN.makeQualified(NestedBuildNamespace(
BuildNamespace(BuildNamespaceKind::LinkUnit, "app")));
std::string S;
llvm::raw_string_ostream(S) << NBN;
EXPECT_EQ(S, "NestedBuildNamespace([BuildNamespace(CompilationUnit, "
"test.cpp), BuildNamespace(LinkUnit, app)])");
}
} // namespace
} // namespace clang::ssaf