]> granicus.if.org Git - llvm/commitdiff
Add unit tests for changes to SmallPtrSet and PointerLikeTypeTraits
authorDaniel Berlin <dberlin@dberlin.org>
Tue, 7 Mar 2017 18:47:52 +0000 (18:47 +0000)
committerDaniel Berlin <dberlin@dberlin.org>
Tue, 7 Mar 2017 18:47:52 +0000 (18:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297182 91177308-0d34-0410-b5e6-96231b3b80d8

unittests/ADT/SmallPtrSetTest.cpp

index d4d963fdc5bdc18ef7b5b8945ff84367e5736614..bb9ee67b7eba33fffddcc7d9f48f00c22aca5cf2 100644 (file)
@@ -12,7 +12,9 @@
 //===----------------------------------------------------------------------===//
 
 #include "gtest/gtest.h"
+#include "llvm/ADT/PointerIntPair.h"
 #include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/Support/PointerLikeTypeTraits.h"
 
 using namespace llvm;
 
@@ -279,3 +281,34 @@ TEST(SmallPtrSetTest, EraseTest) {
   SmallPtrSet<int *, 2> A;
   checkEraseAndIterators(A);
 }
+
+// Verify that const pointers work for count and find even when the underlying
+// SmallPtrSet is not for a const pointer type.
+TEST(SmallPtrSetTest, ConstTest) {
+  SmallPtrSet<int *, 8> IntSet;
+  int A;
+  int *B = &A;
+  const int *C = &A;
+  IntSet.insert(B);
+  EXPECT_EQ(IntSet.count(B), 1u);
+  EXPECT_EQ(IntSet.count(C), 1u);
+  // FIXME: We can't unit test find right now because ABI_BREAKING_CHECKS breaks
+  // find().
+  //  EXPECT_NE(IntSet.find(B), IntSet.end());
+  //  EXPECT_NE(IntSet.find(C), IntSet.end());
+}
+
+// Verify that we automatically get the const version of PointerLikeTypeTraits
+// filled in for us, even for a non-pointer type
+using TestPair = PointerIntPair<int *, 1>;
+
+TEST(SmallPtrSetTest, ConstNonPtrTest) {
+  SmallPtrSet<TestPair, 8> IntSet;
+  int A[1];
+  TestPair Pair(&A[0], 1);
+  IntSet.insert(Pair);
+  EXPECT_EQ(IntSet.count(Pair), 1u);
+  // FIXME: We can't unit test find right now because ABI_BREAKING_CHECKS breaks
+  // find().
+  //  EXPECT_NE(IntSet.find(Pair), IntSet.end());
+}