From: Daniel Berlin Date: Tue, 7 Mar 2017 18:47:52 +0000 (+0000) Subject: Add unit tests for changes to SmallPtrSet and PointerLikeTypeTraits X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=05382afa99700b5f75dd429fe10eecbe92795984;p=llvm Add unit tests for changes to SmallPtrSet and PointerLikeTypeTraits git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297182 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/unittests/ADT/SmallPtrSetTest.cpp b/unittests/ADT/SmallPtrSetTest.cpp index d4d963fdc5b..bb9ee67b7eb 100644 --- a/unittests/ADT/SmallPtrSetTest.cpp +++ b/unittests/ADT/SmallPtrSetTest.cpp @@ -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 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 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; + +TEST(SmallPtrSetTest, ConstNonPtrTest) { + SmallPtrSet 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()); +}