================ @@ -0,0 +1,95 @@ +//===------- unittests/Analysis/Scalable/UnsafeBufferUsageTest.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/Scalable/Analyses/UnsafeBufferUsage/UnsafeBufferUsage.h" +#include "clang/Analysis/Scalable/Model/EntityId.h" +#include "clang/Analysis/Scalable/Model/EntityIdTable.h" +#include "gtest/gtest.h" +#include <memory> + +using namespace clang; +using namespace ssaf; + +namespace { + +class UnsafeBufferUsageTest : public testing::Test { +protected: + EntityIdTable Table; + UnsafeBufferUsageTUSummaryBuilder Builder; +}; + +////////////////////////////////////////////////////////////// +// Data Structure Tests // +////////////////////////////////////////////////////////////// + +#define EXPECT_CONTAINS(Set, Elt) EXPECT_NE((Set)->find(Elt), (Set)->end()); +#define EXPECT_EXCLUDES(Set, Elt) EXPECT_EQ((Set)->find(Elt), (Set)->end()); + +TEST_F(UnsafeBufferUsageTest, PointerKindVariableComparison) { + EntityId E1 = Table.getId({"c:@F@foo", "", {}}); + EntityId E2 = Table.getId({"c:@F@bar", "", {}}); + + auto P1 = Builder.buildPointerKindVariable(E1, 2); + auto P2 = Builder.buildPointerKindVariable(E1, 2); + auto P3 = Builder.buildPointerKindVariable(E1, 1); + auto P4 = Builder.buildPointerKindVariable(E2, 2); + + EXPECT_EQ(P1, P2); + EXPECT_NE(P1, P3); + EXPECT_NE(P1, P4); + EXPECT_NE(P3, P4); + EXPECT_TRUE(P3 < P2); + EXPECT_TRUE(P3 < P4); + EXPECT_FALSE(P1 < P2); + EXPECT_FALSE(P2 < P1); +} + +TEST_F(UnsafeBufferUsageTest, UnsafeBufferUsageEntitySummaryTest) { + EntityId E1 = Table.getId({"c:@F@foo", "", {}}); + EntityId E2 = Table.getId({"c:@F@bar", "", {}}); + EntityId E3 = Table.getId({"c:@F@baz", "", {}}); + + auto P1 = Builder.buildPointerKindVariable(E1, 1); + auto P2 = Builder.buildPointerKindVariable(E1, 2); + auto P3 = Builder.buildPointerKindVariable(E2, 1); + auto P4 = Builder.buildPointerKindVariable(E2, 2); + auto P5 = Builder.buildPointerKindVariable(E3, 1); + auto P6 = Builder.buildPointerKindVariable(E3, 2); + + PointerKindVariableSet Set{P1, P2, P3, P4, P5}; + auto ES = Builder.buildUnsafeBufferUsageEntitySummary(std::move(Set)); ---------------- steakhal wrote:
```suggestion auto ES = Builder.buildUnsafeBufferUsageEntitySummary(std::move(Set)); ASSERT_TRUE(ES); ``` And then later just pass `*ES` instead of `ES` to the assertions. https://github.com/llvm/llvm-project/pull/181067 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
