| Argyrios Kyrtzidis | 59d8c60 | 2011-06-15 19:19:09 +0000 | [diff] [blame] | 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. | 
| Rafael Espindola | 05b5a46 | 2013-07-26 22:13:57 +0000 | [diff] [blame] | 12 | #ifndef __ppc__ | 
| Argyrios Kyrtzidis | 59d8c60 | 2011-06-15 19:19:09 +0000 | [diff] [blame] | 13 |  | 
|  | 14 | #include "llvm/ADT/PackedVector.h" | 
|  | 15 | #include "gtest/gtest.h" | 
|  | 16 |  | 
|  | 17 | using namespace llvm; | 
|  | 18 |  | 
|  | 19 | namespace { | 
|  | 20 |  | 
|  | 21 | TEST(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 |  | 
| Argyrios Kyrtzidis | 59d8c60 | 2011-06-15 19:19:09 +0000 | [diff] [blame] | 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 |  | 
| Argyrios Kyrtzidis | 5d52556 | 2011-06-15 20:39:05 +0000 | [diff] [blame] | 65 | #ifdef EXPECT_DEBUG_DEATH | 
|  | 66 |  | 
| Argyrios Kyrtzidis | 59d8c60 | 2011-06-15 19:19:09 +0000 | [diff] [blame] | 67 | TEST(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 |  | 
|  | 83 | TEST(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 |  | 
| Argyrios Kyrtzidis | 5d52556 | 2011-06-15 20:39:05 +0000 | [diff] [blame] | 99 | #endif | 
|  | 100 |  | 
| Argyrios Kyrtzidis | 59d8c60 | 2011-06-15 19:19:09 +0000 | [diff] [blame] | 101 | } | 
|  | 102 |  | 
|  | 103 | #endif |