diff options
author | Gabor Greif <ggreif@gmail.com> | 2010-07-22 15:24:48 +0000 |
---|---|---|
committer | Gabor Greif <ggreif@gmail.com> | 2010-07-22 15:24:48 +0000 |
commit | d159467ad66b21172d6d88a9f8e496c5b6c2ba4e (patch) | |
tree | 604eb1adb6af225653ecf3b96aff1af97651c902 /unittests | |
parent | 1ac022974a75aaccc11d9f7f024044cba7ee99f8 (diff) | |
download | external_llvm-d159467ad66b21172d6d88a9f8e496c5b6c2ba4e.zip external_llvm-d159467ad66b21172d6d88a9f8e496c5b6c2ba4e.tar.gz external_llvm-d159467ad66b21172d6d88a9f8e496c5b6c2ba4e.tar.bz2 |
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
Diffstat (limited to 'unittests')
-rw-r--r-- | unittests/Support/Casting.cpp | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/unittests/Support/Casting.cpp b/unittests/Support/Casting.cpp index 68019dd..962215c 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> { } }; -/*foo *bar::baz() { +foo *bar::baz() { return cast<foo>(this); +} + +foo *bar::caz() { + return cast_or_null<foo>(this); +} + + +/*foo *bar::daz() { + return dyn_cast<foo>(this); }*/ @@ -80,9 +91,8 @@ TEST(CastingTest, cast) { EXPECT_NE(F6, null_foo); foo *F7 = cast<foo>(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<foo>(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<foo>(B1); + // EXPECT_NE(&F1, null_foo); + const foo *F3 = dyn_cast<foo>(B2); + EXPECT_NE(F3, null_foo); + const foo *F4 = dyn_cast<foo>(B2); + EXPECT_NE(F4, null_foo); + // const foo &F5 = dyn_cast<foo>(B3); + // EXPECT_NE(&F5, null_foo); + const foo *F6 = dyn_cast<foo>(B4); + EXPECT_NE(F6, null_foo); + foo *F7 = dyn_cast<foo>(fub()); + EXPECT_EQ(F7, null_foo); + // foo *F8 = B1.daz(); + // EXPECT_NE(F8, null_foo); } // These lines are errors... |