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