diff options
author | David Blaikie <dblaikie@gmail.com> | 2013-08-21 21:30:23 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2013-08-21 21:30:23 +0000 |
commit | 296ca41b2d305f4aaf1d0562c7da90dc20cd9e14 (patch) | |
tree | b358e64985c12d473aa7a61b2ed004fa491dcb67 /unittests | |
parent | dd778b230e60092be1553461f68fa8ec37c5fdc0 (diff) | |
download | llvm-296ca41b2d305f4aaf1d0562c7da90dc20cd9e14.tar.gz llvm-296ca41b2d305f4aaf1d0562c7da90dc20cd9e14.tar.bz2 llvm-296ca41b2d305f4aaf1d0562c7da90dc20cd9e14.tar.xz |
Basic unit tests for PointerUnion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188933 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r-- | unittests/ADT/CMakeLists.txt | 1 | ||||
-rw-r--r-- | unittests/ADT/PointerUnionTest.cpp | 64 |
2 files changed, 65 insertions, 0 deletions
diff --git a/unittests/ADT/CMakeLists.txt b/unittests/ADT/CMakeLists.txt index 9aad793d8b..2125657433 100644 --- a/unittests/ADT/CMakeLists.txt +++ b/unittests/ADT/CMakeLists.txt @@ -21,6 +21,7 @@ set(ADTSources MapVectorTest.cpp OptionalTest.cpp PackedVectorTest.cpp + PointerUnionTest.cpp SCCIteratorTest.cpp SmallPtrSetTest.cpp SmallStringTest.cpp diff --git a/unittests/ADT/PointerUnionTest.cpp b/unittests/ADT/PointerUnionTest.cpp new file mode 100644 index 0000000000..7eb718112d --- /dev/null +++ b/unittests/ADT/PointerUnionTest.cpp @@ -0,0 +1,64 @@ +//===- llvm/unittest/ADT/PointerUnionTest.cpp - Optional unit tests -------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "gtest/gtest.h" +#include "llvm/ADT/PointerUnion.h" +using namespace llvm; + +namespace { + +typedef PointerUnion<int*, float*> PU; + +// Test fixture +class PointerUnionTest : public testing::Test { +}; + +float f = 3.14f; +int i = 42; + +const PU a(&f); +const PU b(&i); +const PU n; + +TEST_F(PointerUnionTest, Comparison) { + EXPECT_TRUE(a != b); + EXPECT_FALSE(a == b); + EXPECT_TRUE(b != n); + EXPECT_FALSE(b == n); +} + +TEST_F(PointerUnionTest, Null) { + EXPECT_FALSE(a.isNull()); + EXPECT_FALSE(b.isNull()); + EXPECT_TRUE(n.isNull()); + EXPECT_FALSE(!a); + EXPECT_FALSE(!b); + EXPECT_TRUE(!n); + // workaround an issue with EXPECT macros and explicit bool + EXPECT_TRUE((bool)a); + EXPECT_TRUE((bool)b); + EXPECT_FALSE(n); +} + +TEST_F(PointerUnionTest, Is) { + EXPECT_FALSE(a.is<int*>()); + EXPECT_TRUE(a.is<float*>()); + EXPECT_TRUE(b.is<int*>()); + EXPECT_FALSE(b.is<float*>()); + EXPECT_TRUE(n.is<int*>()); + EXPECT_FALSE(n.is<float*>()); +} + +TEST_F(PointerUnionTest, Get) { + EXPECT_EQ(a.get<float*>(), &f); + EXPECT_EQ(b.get<int*>(), &i); + EXPECT_EQ(n.get<int*>(), (int*)0); +} + +} // end anonymous namespace |