1*e0b6c992SLang Hames //===-- extensible_rtti_test.cpp ------------------------------------------===// 2*e0b6c992SLang Hames // 3*e0b6c992SLang Hames // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*e0b6c992SLang Hames // See https://llvm.org/LICENSE.txt for license information. 5*e0b6c992SLang Hames // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*e0b6c992SLang Hames // 7*e0b6c992SLang Hames //===----------------------------------------------------------------------===// 8*e0b6c992SLang Hames // 9*e0b6c992SLang Hames // This file is a part of the ORC runtime. 10*e0b6c992SLang Hames // 11*e0b6c992SLang Hames // Note: 12*e0b6c992SLang Hames // This unit test was adapted from 13*e0b6c992SLang Hames // llvm/unittests/Support/ExtensibleRTTITest.cpp 14*e0b6c992SLang Hames // 15*e0b6c992SLang Hames //===----------------------------------------------------------------------===// 16*e0b6c992SLang Hames 17*e0b6c992SLang Hames #include "extensible_rtti.h" 18*e0b6c992SLang Hames #include "gtest/gtest.h" 19*e0b6c992SLang Hames 20*e0b6c992SLang Hames using namespace __orc_rt; 21*e0b6c992SLang Hames 22*e0b6c992SLang Hames namespace { 23*e0b6c992SLang Hames 24*e0b6c992SLang Hames class MyBase : public RTTIExtends<MyBase, RTTIRoot> {}; 25*e0b6c992SLang Hames 26*e0b6c992SLang Hames class MyDerivedA : public RTTIExtends<MyDerivedA, MyBase> {}; 27*e0b6c992SLang Hames 28*e0b6c992SLang Hames class MyDerivedB : public RTTIExtends<MyDerivedB, MyBase> {}; 29*e0b6c992SLang Hames 30*e0b6c992SLang Hames } // end anonymous namespace 31*e0b6c992SLang Hames TEST(ExtensibleRTTITest,BaseCheck)32*e0b6c992SLang HamesTEST(ExtensibleRTTITest, BaseCheck) { 33*e0b6c992SLang Hames MyBase MB; 34*e0b6c992SLang Hames MyDerivedA MDA; 35*e0b6c992SLang Hames MyDerivedB MDB; 36*e0b6c992SLang Hames 37*e0b6c992SLang Hames // Check MB properties. 38*e0b6c992SLang Hames EXPECT_TRUE(isa<RTTIRoot>(MB)); 39*e0b6c992SLang Hames EXPECT_TRUE(isa<MyBase>(MB)); 40*e0b6c992SLang Hames EXPECT_FALSE(isa<MyDerivedA>(MB)); 41*e0b6c992SLang Hames EXPECT_FALSE(isa<MyDerivedB>(MB)); 42*e0b6c992SLang Hames 43*e0b6c992SLang Hames // Check MDA properties. 44*e0b6c992SLang Hames EXPECT_TRUE(isa<RTTIRoot>(MDA)); 45*e0b6c992SLang Hames EXPECT_TRUE(isa<MyBase>(MDA)); 46*e0b6c992SLang Hames EXPECT_TRUE(isa<MyDerivedA>(MDA)); 47*e0b6c992SLang Hames EXPECT_FALSE(isa<MyDerivedB>(MDA)); 48*e0b6c992SLang Hames 49*e0b6c992SLang Hames // Check MDB properties. 50*e0b6c992SLang Hames EXPECT_TRUE(isa<RTTIRoot>(MDB)); 51*e0b6c992SLang Hames EXPECT_TRUE(isa<MyBase>(MDB)); 52*e0b6c992SLang Hames EXPECT_FALSE(isa<MyDerivedA>(MDB)); 53*e0b6c992SLang Hames EXPECT_TRUE(isa<MyDerivedB>(MDB)); 54*e0b6c992SLang Hames } 55