The "extensible_" prefix on these files was inherited from LLVM, where it distinguished the dynamic RTTI APIs from the LLVM's custom static RTTI APIs. In the ORC runtime these files will be used to hold all of our RTTI APIs (the current dynamic ones, and any static ones added in the future), so we shouldn't use this prefix.
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
//===-- rtti_test.cpp -----------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file is a part of the ORC runtime.
|
|
//
|
|
// Note:
|
|
// This unit test was adapted from
|
|
// llvm/unittests/Support/ExtensibleRTTITest.cpp
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "rtti.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
using namespace orc_rt;
|
|
|
|
namespace {
|
|
|
|
class MyBase : public RTTIExtends<MyBase, RTTIRoot> {};
|
|
|
|
class MyDerivedA : public RTTIExtends<MyDerivedA, MyBase> {};
|
|
|
|
class MyDerivedB : public RTTIExtends<MyDerivedB, MyBase> {};
|
|
|
|
} // end anonymous namespace
|
|
|
|
TEST(ExtensibleRTTITest, BaseCheck) {
|
|
MyBase MB;
|
|
MyDerivedA MDA;
|
|
MyDerivedB MDB;
|
|
|
|
// Check MB properties.
|
|
EXPECT_TRUE(isa<RTTIRoot>(MB));
|
|
EXPECT_TRUE(isa<MyBase>(MB));
|
|
EXPECT_FALSE(isa<MyDerivedA>(MB));
|
|
EXPECT_FALSE(isa<MyDerivedB>(MB));
|
|
|
|
// Check MDA properties.
|
|
EXPECT_TRUE(isa<RTTIRoot>(MDA));
|
|
EXPECT_TRUE(isa<MyBase>(MDA));
|
|
EXPECT_TRUE(isa<MyDerivedA>(MDA));
|
|
EXPECT_FALSE(isa<MyDerivedB>(MDA));
|
|
|
|
// Check MDB properties.
|
|
EXPECT_TRUE(isa<RTTIRoot>(MDB));
|
|
EXPECT_TRUE(isa<MyBase>(MDB));
|
|
EXPECT_FALSE(isa<MyDerivedA>(MDB));
|
|
EXPECT_TRUE(isa<MyDerivedB>(MDB));
|
|
}
|