xref: /llvm-project/compiler-rt/lib/orc/tests/unit/extensible_rtti_test.cpp (revision dbd81ba2e85c2f244f22c983d96a106eae65c06a)
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