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 | e2760b75e9dc7217777b512704ed47a9a6d0f88d (patch) | |
tree | 31cc6f34e56d83655abad2b0ea44a2dcd1af144c /llvm/unittests/ADT/PointerUnionTest.cpp | |
parent | 570d3020e3f2352238003f7459dc9650dd63ab8e (diff) | |
download | llvm-e2760b75e9dc7217777b512704ed47a9a6d0f88d.zip llvm-e2760b75e9dc7217777b512704ed47a9a6d0f88d.tar.gz llvm-e2760b75e9dc7217777b512704ed47a9a6d0f88d.tar.bz2 |
Basic unit tests for PointerUnion
llvm-svn: 188933
Diffstat (limited to 'llvm/unittests/ADT/PointerUnionTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/PointerUnionTest.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/PointerUnionTest.cpp b/llvm/unittests/ADT/PointerUnionTest.cpp new file mode 100644 index 0000000..7eb7181 --- /dev/null +++ b/llvm/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 |