//===- llvm/unittest/ADT/PackedVectorTest.cpp - PackedVector tests --------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // BitVectorTest tests fail on PowerPC for unknown reasons, so disable this // as well since it depends on a BitVector. #ifndef __ppc__ #include "llvm/ADT/PackedVector.h" #include "gtest/gtest.h" using namespace llvm; namespace { TEST(PackedVectorTest, Operation) { PackedVector<unsigned, 2> Vec; EXPECT_EQ(0U, Vec.size()); EXPECT_TRUE(Vec.empty()); Vec.resize(5); EXPECT_EQ(5U, Vec.size()); EXPECT_FALSE(Vec.empty()); Vec.resize(11); EXPECT_EQ(11U, Vec.size()); EXPECT_FALSE(Vec.empty()); PackedVector<unsigned, 2> Vec2(3); EXPECT_EQ(3U, Vec2.size()); EXPECT_FALSE(Vec2.empty()); Vec.clear(); EXPECT_EQ(0U, Vec.size()); EXPECT_TRUE(Vec.empty()); Vec.push_back(2); Vec.push_back(0); Vec.push_back(1); Vec.push_back(3); EXPECT_EQ(2U, Vec[0]); EXPECT_EQ(0U, Vec[1]); EXPECT_EQ(1U, Vec[2]); EXPECT_EQ(3U, Vec[3]); EXPECT_FALSE(Vec == Vec2); EXPECT_TRUE(Vec != Vec2); Vec2.swap(Vec); EXPECT_EQ(3U, Vec.size()); EXPECT_FALSE(Vec.empty()); EXPECT_EQ(0U, Vec[0]); EXPECT_EQ(0U, Vec[1]); EXPECT_EQ(0U, Vec[2]); EXPECT_EQ(2U, Vec2[0]); EXPECT_EQ(0U, Vec2[1]); EXPECT_EQ(1U, Vec2[2]); EXPECT_EQ(3U, Vec2[3]); Vec = Vec2; EXPECT_TRUE(Vec == Vec2); EXPECT_FALSE(Vec != Vec2); Vec[1] = 1; Vec2[1] = 2; Vec |= Vec2; EXPECT_EQ(3U, Vec[1]); } #ifdef EXPECT_DEBUG_DEATH TEST(PackedVectorTest, UnsignedValues) { PackedVector<unsigned, 2> Vec(1); Vec[0] = 0; Vec[0] = 1; Vec[0] = 2; Vec[0] = 3; EXPECT_DEBUG_DEATH(Vec[0] = 4, "value is too big"); EXPECT_DEBUG_DEATH(Vec[0] = -1, "value is too big"); EXPECT_DEBUG_DEATH(Vec[0] = 0x100, "value is too big"); PackedVector<unsigned, 3> Vec2(1); Vec2[0] = 0; Vec2[0] = 7; EXPECT_DEBUG_DEATH(Vec[0] = 8, "value is too big"); } TEST(PackedVectorTest, SignedValues) { PackedVector<signed, 2> Vec(1); Vec[0] = -2; Vec[0] = -1; Vec[0] = 0; Vec[0] = 1; EXPECT_DEBUG_DEATH(Vec[0] = -3, "value is too big"); EXPECT_DEBUG_DEATH(Vec[0] = 2, "value is too big"); PackedVector<signed, 3> Vec2(1); Vec2[0] = -4; Vec2[0] = 3; EXPECT_DEBUG_DEATH(Vec[0] = -5, "value is too big"); EXPECT_DEBUG_DEATH(Vec[0] = 4, "value is too big"); } #endif } #endif