From aa8e535b576ecbf0cfba4caa01aaf074924ab8d6 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Wed, 20 Nov 2013 18:21:25 +0000 Subject: [PATCH] Add a test for assignment operator behavior which was changed in r195239, as well as a comment about the fact that assigning over a moved-from object was in fact tested. Addresses some of the review feedback on r195239. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195260 91177308-0d34-0410-b5e6-96231b3b80d8 --- unittests/ADT/SmallPtrSetTest.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/unittests/ADT/SmallPtrSetTest.cpp b/unittests/ADT/SmallPtrSetTest.cpp index 1b564ac05ac..d885f69b211 100644 --- a/unittests/ADT/SmallPtrSetTest.cpp +++ b/unittests/ADT/SmallPtrSetTest.cpp @@ -16,7 +16,30 @@ using namespace llvm; -// SmallPtrSet swapping test. +TEST(SmallPtrSetTest, Assignment) { + int buf[8]; + for (int i = 0; i < 8; ++i) + buf[i] = 0; + + SmallPtrSet s1; + s1.insert(&buf[0]); + s1.insert(&buf[1]); + + SmallPtrSet s2; + (s2 = s1).insert(&buf[2]); + + // Self assign as well. + (s2 = s2).insert(&buf[3]); + + s1 = s2; + EXPECT_EQ(4U, s1.size()); + for (int i = 0; i < 8; ++i) + if (i < 4) + EXPECT_TRUE(s1.count(&buf[i])); + else + EXPECT_FALSE(s1.count(&buf[i])); +} + TEST(SmallPtrSetTest, GrowthTest) { int i; int buf[8]; @@ -112,6 +135,7 @@ TEST(SmallPtrSetTest, CopyAndMoveTest) { else EXPECT_FALSE(s3.count(&buf[i])); + // Move assign to the moved-from object. s1 = llvm_move(s3); EXPECT_EQ(4U, s1.size()); for (int i = 0; i < 8; ++i) -- 2.34.1