brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · df2cbf0 Raw
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