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 | |