1//===- llvm/unittest/ADT/PackedVectorTest.cpp - PackedVector tests --------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// BitVectorTest tests fail on PowerPC for unknown reasons, so disable this 11// as well since it depends on a BitVector. 12#ifndef __ppc__ 13 14#include "llvm/ADT/PackedVector.h" 15#include "gtest/gtest.h" 16 17using namespace llvm; 18 19namespace { 20 21TEST(PackedVectorTest, Operation) { 22 PackedVector<unsigned, 2> Vec; 23 EXPECT_EQ(0U, Vec.size()); 24 EXPECT_TRUE(Vec.empty()); 25 26 Vec.resize(5); 27 EXPECT_EQ(5U, Vec.size()); 28 EXPECT_FALSE(Vec.empty()); 29 30 Vec.resize(11); 31 EXPECT_EQ(11U, Vec.size()); 32 EXPECT_FALSE(Vec.empty()); 33 34 PackedVector<unsigned, 2> Vec2(3); 35 EXPECT_EQ(3U, Vec2.size()); 36 EXPECT_FALSE(Vec2.empty()); 37 38 Vec.clear(); 39 EXPECT_EQ(0U, Vec.size()); 40 EXPECT_TRUE(Vec.empty()); 41 42 Vec.push_back(2); 43 Vec.push_back(0); 44 Vec.push_back(1); 45 Vec.push_back(3); 46 47 EXPECT_EQ(2U, Vec[0]); 48 EXPECT_EQ(0U, Vec[1]); 49 EXPECT_EQ(1U, Vec[2]); 50 EXPECT_EQ(3U, Vec[3]); 51 52 EXPECT_FALSE(Vec == Vec2); 53 EXPECT_TRUE(Vec != Vec2); 54 55 Vec = Vec2; 56 EXPECT_TRUE(Vec == Vec2); 57 EXPECT_FALSE(Vec != Vec2); 58 59 Vec[1] = 1; 60 Vec2[1] = 2; 61 Vec |= Vec2; 62 EXPECT_EQ(3U, Vec[1]); 63} 64 65#ifdef EXPECT_DEBUG_DEATH 66 67TEST(PackedVectorTest, UnsignedValues) { 68 PackedVector<unsigned, 2> Vec(1); 69 Vec[0] = 0; 70 Vec[0] = 1; 71 Vec[0] = 2; 72 Vec[0] = 3; 73 EXPECT_DEBUG_DEATH(Vec[0] = 4, "value is too big"); 74 EXPECT_DEBUG_DEATH(Vec[0] = -1, "value is too big"); 75 EXPECT_DEBUG_DEATH(Vec[0] = 0x100, "value is too big"); 76 77 PackedVector<unsigned, 3> Vec2(1); 78 Vec2[0] = 0; 79 Vec2[0] = 7; 80 EXPECT_DEBUG_DEATH(Vec[0] = 8, "value is too big"); 81} 82 83TEST(PackedVectorTest, SignedValues) { 84 PackedVector<signed, 2> Vec(1); 85 Vec[0] = -2; 86 Vec[0] = -1; 87 Vec[0] = 0; 88 Vec[0] = 1; 89 EXPECT_DEBUG_DEATH(Vec[0] = -3, "value is too big"); 90 EXPECT_DEBUG_DEATH(Vec[0] = 2, "value is too big"); 91 92 PackedVector<signed, 3> Vec2(1); 93 Vec2[0] = -4; 94 Vec2[0] = 3; 95 EXPECT_DEBUG_DEATH(Vec[0] = -5, "value is too big"); 96 EXPECT_DEBUG_DEATH(Vec[0] = 4, "value is too big"); 97} 98 99#endif 100 101} 102 103#endif 104