DebugInfo: Add an assert regarding the subprogram in the subprogram map matching...
[oota-llvm.git] / unittests / ADT / BitVectorTest.cpp
index d836036aeaea4a0dea4267a52b0e6bf80fc3a824..3deaff0fe3569b447451a95ebea6bd162614f1a7 100644 (file)
@@ -141,6 +141,30 @@ TYPED_TEST(BitVectorTest, TrivialOperation) {
   EXPECT_TRUE(Vec.none());
   EXPECT_FALSE(Vec.empty());
 
+  Vec.flip();
+  EXPECT_EQ(130U, Vec.count());
+  EXPECT_EQ(130U, Vec.size());
+  EXPECT_TRUE(Vec.any());
+  EXPECT_TRUE(Vec.all());
+  EXPECT_FALSE(Vec.none());
+  EXPECT_FALSE(Vec.empty());
+
+  Vec.resize(64);
+  EXPECT_EQ(64U, Vec.count());
+  EXPECT_EQ(64U, Vec.size());
+  EXPECT_TRUE(Vec.any());
+  EXPECT_TRUE(Vec.all());
+  EXPECT_FALSE(Vec.none());
+  EXPECT_FALSE(Vec.empty());
+
+  Vec.flip();
+  EXPECT_EQ(0U, Vec.count());
+  EXPECT_EQ(64U, Vec.size());
+  EXPECT_FALSE(Vec.any());
+  EXPECT_FALSE(Vec.all());
+  EXPECT_TRUE(Vec.none());
+  EXPECT_FALSE(Vec.empty());
+
   Inv = TypeParam().flip();
   EXPECT_EQ(0U, Inv.count());
   EXPECT_EQ(0U, Inv.size());
@@ -281,5 +305,99 @@ TYPED_TEST(BitVectorTest, BinOps) {
   EXPECT_FALSE(A.anyCommon(B));
   EXPECT_FALSE(B.anyCommon(A));
 }
+
+TYPED_TEST(BitVectorTest, RangeOps) {
+  TypeParam A;
+  A.resize(256);
+  A.reset();
+  A.set(1, 255);
+
+  EXPECT_FALSE(A.test(0));
+  EXPECT_TRUE( A.test(1));
+  EXPECT_TRUE( A.test(23));
+  EXPECT_TRUE( A.test(254));
+  EXPECT_FALSE(A.test(255));
+
+  TypeParam B;
+  B.resize(256);
+  B.set();
+  B.reset(1, 255);
+
+  EXPECT_TRUE( B.test(0));
+  EXPECT_FALSE(B.test(1));
+  EXPECT_FALSE(B.test(23));
+  EXPECT_FALSE(B.test(254));
+  EXPECT_TRUE( B.test(255));
+
+  TypeParam C;
+  C.resize(3);
+  C.reset();
+  C.set(0, 1);
+
+  EXPECT_TRUE(C.test(0));
+  EXPECT_FALSE( C.test(1));
+  EXPECT_FALSE( C.test(2));
+
+  TypeParam D;
+  D.resize(3);
+  D.set();
+  D.reset(0, 1);
+
+  EXPECT_FALSE(D.test(0));
+  EXPECT_TRUE( D.test(1));
+  EXPECT_TRUE( D.test(2));
+
+  TypeParam E;
+  E.resize(128);
+  E.reset();
+  E.set(1, 33);
+
+  EXPECT_FALSE(E.test(0));
+  EXPECT_TRUE( E.test(1));
+  EXPECT_TRUE( E.test(32));
+  EXPECT_FALSE(E.test(33));
+
+  TypeParam BufferOverrun;
+  unsigned size = sizeof(unsigned long) * 8;
+  BufferOverrun.resize(size);
+  BufferOverrun.reset(0, size);
+  BufferOverrun.set(0, size);
+}
+
+TYPED_TEST(BitVectorTest, CompoundTestReset) {
+  TypeParam A(50, true);
+  TypeParam B(50, false);
+
+  TypeParam C(100, true);
+  TypeParam D(100, false);
+
+  EXPECT_FALSE(A.test(A));
+  EXPECT_TRUE(A.test(B));
+  EXPECT_FALSE(A.test(C));
+  EXPECT_TRUE(A.test(D));
+  EXPECT_FALSE(B.test(A));
+  EXPECT_FALSE(B.test(B));
+  EXPECT_FALSE(B.test(C));
+  EXPECT_FALSE(B.test(D));
+  EXPECT_TRUE(C.test(A));
+  EXPECT_TRUE(C.test(B));
+  EXPECT_FALSE(C.test(C));
+  EXPECT_TRUE(C.test(D));
+
+  A.reset(B);
+  A.reset(D);
+  EXPECT_TRUE(A.all());
+  A.reset(A);
+  EXPECT_TRUE(A.none());
+  A.set();
+  A.reset(C);
+  EXPECT_TRUE(A.none());
+  A.set();
+
+  C.reset(A);
+  EXPECT_EQ(50, C.find_first());
+  C.reset(C);
+  EXPECT_TRUE(C.none());
+}
 }
 #endif