aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/PointerUnionTest.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2013-08-21 21:30:23 +0000
committerDavid Blaikie <dblaikie@gmail.com>2013-08-21 21:30:23 +0000
commite2760b75e9dc7217777b512704ed47a9a6d0f88d (patch)
tree31cc6f34e56d83655abad2b0ea44a2dcd1af144c /llvm/unittests/ADT/PointerUnionTest.cpp
parent570d3020e3f2352238003f7459dc9650dd63ab8e (diff)
downloadllvm-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.cpp64
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