11169586dSLang Hames //===-- extensible_rtti_test.cpp ------------------------------------------===// 21169586dSLang Hames // 31169586dSLang Hames // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41169586dSLang Hames // See https://llvm.org/LICENSE.txt for license information. 51169586dSLang Hames // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61169586dSLang Hames // 71169586dSLang Hames //===----------------------------------------------------------------------===// 81169586dSLang Hames // 91169586dSLang Hames // This file is a part of the ORC runtime. 101169586dSLang Hames // 111169586dSLang Hames // Note: 121169586dSLang Hames // This unit test was adapted from 131169586dSLang Hames // llvm/unittests/Support/ExtensibleRTTITest.cpp 141169586dSLang Hames // 151169586dSLang Hames //===----------------------------------------------------------------------===// 161169586dSLang Hames 171169586dSLang Hames #include "extensible_rtti.h" 181169586dSLang Hames #include "gtest/gtest.h" 191169586dSLang Hames 20*dbd81ba2SMikhail Goncharov using namespace orc_rt; 211169586dSLang Hames 221169586dSLang Hames namespace { 231169586dSLang Hames 241169586dSLang Hames class MyBase : public RTTIExtends<MyBase, RTTIRoot> {}; 251169586dSLang Hames 261169586dSLang Hames class MyDerivedA : public RTTIExtends<MyDerivedA, MyBase> {}; 271169586dSLang Hames 281169586dSLang Hames class MyDerivedB : public RTTIExtends<MyDerivedB, MyBase> {}; 291169586dSLang Hames 301169586dSLang Hames } // end anonymous namespace 311169586dSLang Hames 321169586dSLang Hames TEST(ExtensibleRTTITest, BaseCheck) { 331169586dSLang Hames MyBase MB; 341169586dSLang Hames MyDerivedA MDA; 351169586dSLang Hames MyDerivedB MDB; 361169586dSLang Hames 371169586dSLang Hames // Check MB properties. 381169586dSLang Hames EXPECT_TRUE(isa<RTTIRoot>(MB)); 391169586dSLang Hames EXPECT_TRUE(isa<MyBase>(MB)); 401169586dSLang Hames EXPECT_FALSE(isa<MyDerivedA>(MB)); 411169586dSLang Hames EXPECT_FALSE(isa<MyDerivedB>(MB)); 421169586dSLang Hames 431169586dSLang Hames // Check MDA properties. 441169586dSLang Hames EXPECT_TRUE(isa<RTTIRoot>(MDA)); 451169586dSLang Hames EXPECT_TRUE(isa<MyBase>(MDA)); 461169586dSLang Hames EXPECT_TRUE(isa<MyDerivedA>(MDA)); 471169586dSLang Hames EXPECT_FALSE(isa<MyDerivedB>(MDA)); 481169586dSLang Hames 491169586dSLang Hames // Check MDB properties. 501169586dSLang Hames EXPECT_TRUE(isa<RTTIRoot>(MDB)); 511169586dSLang Hames EXPECT_TRUE(isa<MyBase>(MDB)); 521169586dSLang Hames EXPECT_FALSE(isa<MyDerivedA>(MDB)); 531169586dSLang Hames EXPECT_TRUE(isa<MyDerivedB>(MDB)); 541169586dSLang Hames } 55