| //===- 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 |