- Rename `clang/{include,lib,unittests}/Analysis/Scalable/` to
`clang/{include,lib,unittests}/ScalableStaticAnalysisFramework/Core/`
- Update header-guards with their new paths
- Rename the library `clangAnalysisScalable` to
`clangScalableStaticAnalysisFrameworkCore`
- Add a new `Clang_ScalableStaticAnalysisFramework` module to
`module.modulemap`
- Update GN build files, GitHub PR labeler, and documentation
- Harmonise license comments
- Add a missing header-guard
159 lines
4.9 KiB
C++
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
|