From d159467ad66b21172d6d88a9f8e496c5b6c2ba4e Mon Sep 17 00:00:00 2001 From: Gabor Greif Date: Thu, 22 Jul 2010 15:24:48 +0000 Subject: add dyn_cast tests and beef up others a bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109109 91177308-0d34-0410-b5e6-96231b3b80d8 --- unittests/Support/Casting.cpp | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) (limited to 'unittests') diff --git a/unittests/Support/Casting.cpp b/unittests/Support/Casting.cpp index 68019ddc9a..962215c8f2 100644 --- a/unittests/Support/Casting.cpp +++ b/unittests/Support/Casting.cpp @@ -21,7 +21,9 @@ namespace llvm { // struct bar { bar() {} - //struct foo *baz(); + struct foo *baz(); + struct foo *caz(); + // struct foo *daz(); private: bar(const bar &); }; @@ -40,8 +42,17 @@ template <> struct isa_impl { } }; -/*foo *bar::baz() { +foo *bar::baz() { return cast(this); +} + +foo *bar::caz() { + return cast_or_null(this); +} + + +/*foo *bar::daz() { + return dyn_cast(this); }*/ @@ -80,9 +91,8 @@ TEST(CastingTest, cast) { EXPECT_NE(F6, null_foo); foo *F7 = cast(fub()); EXPECT_EQ(F7, null_foo); - -/* foo *F8 = B1.baz(); - EXPECT_NE(F8, null_foo);*/ + foo *F8 = B1.baz(); + EXPECT_NE(F8, null_foo); } TEST(CastingTest, cast_or_null) { @@ -94,6 +104,25 @@ TEST(CastingTest, cast_or_null) { EXPECT_NE(F13, null_foo); const foo *F14 = cast_or_null(fub()); // Shouldn't print. EXPECT_EQ(F14, null_foo); + foo *F15 = B1.caz(); + EXPECT_NE(F15, null_foo); +} + +TEST(CastingTest, dyn_cast) { + // foo &F1 = dyn_cast(B1); + // EXPECT_NE(&F1, null_foo); + const foo *F3 = dyn_cast(B2); + EXPECT_NE(F3, null_foo); + const foo *F4 = dyn_cast(B2); + EXPECT_NE(F4, null_foo); + // const foo &F5 = dyn_cast(B3); + // EXPECT_NE(&F5, null_foo); + const foo *F6 = dyn_cast(B4); + EXPECT_NE(F6, null_foo); + foo *F7 = dyn_cast(fub()); + EXPECT_EQ(F7, null_foo); + // foo *F8 = B1.daz(); + // EXPECT_NE(F8, null_foo); } // These lines are errors... -- cgit v1.2.3