mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-15 07:59:57 +00:00
149fe5ef04
This causes the other special members (like move and copy construction, and move assignment) to come through for free. Some code in clang was depending on the (deprecated, in the original code) copy ctor. Now that there's no user-defined special members, they're all available without any deprecation concerns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244835 91177308-0d34-0410-b5e6-96231b3b80d8
104 lines
2.2 KiB
C++
104 lines
2.2 KiB
C++
//===- 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);
|
|
|
|
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
|