121 lines · cpp
1//===- llvm/unittest/ADT/PackedVectorTest.cpp - PackedVector tests --------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// BitVectorTest tests fail on PowerPC for unknown reasons, so disable this10// as well since it depends on a BitVector.11#ifndef __powerpc__12 13#include "llvm/ADT/PackedVector.h"14#include "gtest/gtest.h"15 16using namespace llvm;17 18namespace {19 20TEST(PackedVectorTest, Operation) {21 PackedVector<unsigned, 2> Vec;22 EXPECT_EQ(0U, Vec.size());23 EXPECT_TRUE(Vec.empty());24 25 Vec.resize(5);26 EXPECT_EQ(5U, Vec.size());27 EXPECT_FALSE(Vec.empty());28 29 Vec.resize(11);30 EXPECT_EQ(11U, Vec.size());31 EXPECT_FALSE(Vec.empty());32 33 PackedVector<unsigned, 2> Vec2(3);34 EXPECT_EQ(3U, Vec2.size());35 EXPECT_FALSE(Vec2.empty());36 37 Vec.clear();38 EXPECT_EQ(0U, Vec.size());39 EXPECT_TRUE(Vec.empty());40 41 Vec.push_back(2);42 Vec.push_back(0);43 Vec.push_back(1);44 Vec.push_back(3);45 46 EXPECT_EQ(2U, Vec[0]);47 EXPECT_EQ(0U, Vec[1]);48 EXPECT_EQ(1U, Vec[2]);49 EXPECT_EQ(3U, Vec[3]);50 51 EXPECT_FALSE(Vec == Vec2);52 EXPECT_TRUE(Vec != Vec2);53 54 Vec = Vec2;55 EXPECT_TRUE(Vec == Vec2);56 EXPECT_FALSE(Vec != Vec2);57 58 Vec[1] = 1;59 Vec2[1] = 2;60 Vec |= Vec2;61 EXPECT_EQ(3U, Vec[1]);62}63 64TEST(PackedVectorTest, RawBitsSize) {65 PackedVector<unsigned, 3> Vec;66 EXPECT_EQ(0u, Vec.raw_bits().size());67 Vec.push_back(2);68 Vec.push_back(0);69 Vec.push_back(1);70 Vec.push_back(3);71 EXPECT_EQ(12u, Vec.raw_bits().size());72}73 74TEST(PackedVectorTest, SignedValueOverwrite) {75 PackedVector<signed, 4> Vec(1);76 Vec[0] = -1;77 EXPECT_EQ(-1, Vec[0]);78 Vec[0] = 1;79 EXPECT_EQ(1, Vec[0]);80}81 82#ifdef EXPECT_DEBUG_DEATH83 84TEST(PackedVectorTest, UnsignedValues) {85 PackedVector<unsigned, 2> Vec(1);86 Vec[0] = 0;87 Vec[0] = 1;88 Vec[0] = 2;89 Vec[0] = 3;90 EXPECT_DEBUG_DEATH(Vec[0] = 4, "value is too big");91 EXPECT_DEBUG_DEATH(Vec[0] = -1, "value is too big");92 EXPECT_DEBUG_DEATH(Vec[0] = 0x100, "value is too big");93 94 PackedVector<unsigned, 3> Vec2(1);95 Vec2[0] = 0;96 Vec2[0] = 7;97 EXPECT_DEBUG_DEATH(Vec[0] = 8, "value is too big");98}99 100TEST(PackedVectorTest, SignedValues) {101 PackedVector<signed, 2> Vec(1);102 Vec[0] = -2;103 Vec[0] = -1;104 Vec[0] = 0;105 Vec[0] = 1;106 EXPECT_DEBUG_DEATH(Vec[0] = -3, "value is too big");107 EXPECT_DEBUG_DEATH(Vec[0] = 2, "value is too big");108 109 PackedVector<signed, 3> Vec2(1);110 Vec2[0] = -4;111 Vec2[0] = 3;112 EXPECT_DEBUG_DEATH(Vec[0] = -5, "value is too big");113 EXPECT_DEBUG_DEATH(Vec[0] = 4, "value is too big");114}115 116#endif117 118}119 120#endif121