================
@@ -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

Reply via email to