Add a test for assignment operator behavior which was changed in
authorChandler Carruth <chandlerc@gmail.com>
Wed, 20 Nov 2013 18:21:25 +0000 (18:21 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 20 Nov 2013 18:21:25 +0000 (18:21 +0000)
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

index 1b564ac05ac008b73564ef0a68fdfbad207660ba..d885f69b211f24797934ce745a99a6b8e27d25e9 100644 (file)
 
 using namespace llvm;
 
-// SmallPtrSet swapping test.
+TEST(SmallPtrSetTest, Assignment) {
+  int buf[8];
+  for (int i = 0; i < 8; ++i)
+    buf[i] = 0;
+
+  SmallPtrSet<int *, 4> s1;
+  s1.insert(&buf[0]);
+  s1.insert(&buf[1]);
+
+  SmallPtrSet<int *, 4> 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)