69 lines
2.0 KiB
C++
69 lines
2.0 KiB
C++
//===- unittests/Analysis/FlowSensitive/SourceLocationsLatticeTest.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/Analysis/FlowSensitive/SourceLocationsLattice.h"
|
|
|
|
#include "clang/Analysis/FlowSensitive/DataflowLattice.h"
|
|
#include "clang/Basic/SourceLocation.h"
|
|
#include "gmock/gmock.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace clang {
|
|
namespace dataflow {
|
|
namespace {
|
|
|
|
TEST(SourceLocationsLatticeTest, Comparison) {
|
|
const SourceLocationsLattice Bottom;
|
|
const SourceLocationsLattice NonBottom(
|
|
{SourceLocation::getFromRawEncoding(0)});
|
|
|
|
EXPECT_TRUE(Bottom == Bottom);
|
|
EXPECT_FALSE(Bottom == NonBottom);
|
|
EXPECT_FALSE(NonBottom == Bottom);
|
|
EXPECT_TRUE(NonBottom == NonBottom);
|
|
|
|
EXPECT_FALSE(Bottom != Bottom);
|
|
EXPECT_TRUE(Bottom != NonBottom);
|
|
EXPECT_TRUE(NonBottom != Bottom);
|
|
EXPECT_FALSE(NonBottom != NonBottom);
|
|
}
|
|
|
|
TEST(SourceLocationsLatticeTest, Join) {
|
|
const SourceLocationsLattice Bottom;
|
|
const SourceLocationsLattice NonBottom(
|
|
{SourceLocation::getFromRawEncoding(0)});
|
|
{
|
|
SourceLocationsLattice LHS = Bottom;
|
|
const SourceLocationsLattice RHS = Bottom;
|
|
EXPECT_EQ(LHS.join(RHS), LatticeJoinEffect::Unchanged);
|
|
EXPECT_EQ(LHS, Bottom);
|
|
}
|
|
{
|
|
SourceLocationsLattice LHS = NonBottom;
|
|
const SourceLocationsLattice RHS = Bottom;
|
|
EXPECT_EQ(LHS.join(RHS), LatticeJoinEffect::Unchanged);
|
|
EXPECT_EQ(LHS, NonBottom);
|
|
}
|
|
{
|
|
SourceLocationsLattice LHS = Bottom;
|
|
const SourceLocationsLattice RHS = NonBottom;
|
|
EXPECT_EQ(LHS.join(RHS), LatticeJoinEffect::Changed);
|
|
EXPECT_EQ(LHS, NonBottom);
|
|
}
|
|
{
|
|
SourceLocationsLattice LHS = NonBottom;
|
|
const SourceLocationsLattice RHS = NonBottom;
|
|
EXPECT_EQ(LHS.join(RHS), LatticeJoinEffect::Unchanged);
|
|
EXPECT_EQ(LHS, NonBottom);
|
|
}
|
|
}
|
|
|
|
} // namespace
|
|
} // namespace dataflow
|
|
} // namespace clang
|