From 296ca41b2d305f4aaf1d0562c7da90dc20cd9e14 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Wed, 21 Aug 2013 21:30:23 +0000 Subject: Basic unit tests for PointerUnion git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188933 91177308-0d34-0410-b5e6-96231b3b80d8 --- unittests/ADT/CMakeLists.txt | 1 + unittests/ADT/PointerUnionTest.cpp | 64 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 unittests/ADT/PointerUnionTest.cpp (limited to 'unittests') diff --git a/unittests/ADT/CMakeLists.txt b/unittests/ADT/CMakeLists.txt index 9aad793..2125657 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 0000000..7eb7181 --- /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 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()); + EXPECT_TRUE(a.is()); + EXPECT_TRUE(b.is()); + EXPECT_FALSE(b.is()); + EXPECT_TRUE(n.is()); + EXPECT_FALSE(n.is()); +} + +TEST_F(PointerUnionTest, Get) { + EXPECT_EQ(a.get(), &f); + EXPECT_EQ(b.get(), &i); + EXPECT_EQ(n.get(), (int*)0); +} + +} // end anonymous namespace -- cgit v1.1