118 lines · cpp
1#include "clang/AST/UnresolvedSet.h"2#include "clang/AST/Decl.h"3#include "gtest/gtest.h"4 5using namespace clang;6 7class UnresolvedSetTest : public ::testing::Test {8protected:9 // For this test we don't care about the contents of the NamedDecl,10 // so just use a dummy struct of appropriate size and alignment.11 struct alignas(NamedDecl) DummyDecl {12 char contents[sizeof(NamedDecl)];13 };14 DummyDecl d0, d1, d2, d3;15 NamedDecl *n0, *n1, *n2, *n3;16 UnresolvedSet<2> set;17 18 void SetUp() override {19 n0 = reinterpret_cast<NamedDecl*>(&d0);20 n1 = reinterpret_cast<NamedDecl*>(&d1);21 n2 = reinterpret_cast<NamedDecl*>(&d2);22 n3 = reinterpret_cast<NamedDecl*>(&d3);23 set.addDecl(n0);24 set.addDecl(n1);25 set.addDecl(n2);26 set.addDecl(n3);27 }28};29 30TEST_F(UnresolvedSetTest, Size) { EXPECT_EQ(set.size(), 4u); }31 32TEST_F(UnresolvedSetTest, ArrayOperator) {33 EXPECT_EQ(set[0].getDecl(), n0);34 EXPECT_EQ(set[1].getDecl(), n1);35 EXPECT_EQ(set[2].getDecl(), n2);36 EXPECT_EQ(set[3].getDecl(), n3);37}38 39TEST_F(UnresolvedSetTest, EraseIntegerFromStart) {40 set.erase(0);41 EXPECT_EQ(set.size(), 3u);42 EXPECT_EQ(set[0].getDecl(), n3);43 EXPECT_EQ(set[1].getDecl(), n1);44 EXPECT_EQ(set[2].getDecl(), n2);45 46 set.erase(0);47 EXPECT_EQ(set.size(), 2u);48 EXPECT_EQ(set[0].getDecl(), n2);49 EXPECT_EQ(set[1].getDecl(), n1);50 51 set.erase(0);52 EXPECT_EQ(set.size(), 1u);53 EXPECT_EQ(set[0].getDecl(), n1);54 55 set.erase(0);56 EXPECT_EQ(set.size(), 0u);57}58 59TEST_F(UnresolvedSetTest, EraseIntegerFromEnd) {60 set.erase(3);61 EXPECT_EQ(set.size(), 3u);62 EXPECT_EQ(set[0].getDecl(), n0);63 EXPECT_EQ(set[1].getDecl(), n1);64 EXPECT_EQ(set[2].getDecl(), n2);65 66 set.erase(2);67 EXPECT_EQ(set.size(), 2u);68 EXPECT_EQ(set[0].getDecl(), n0);69 EXPECT_EQ(set[1].getDecl(), n1);70 71 set.erase(1);72 EXPECT_EQ(set.size(), 1u);73 EXPECT_EQ(set[0].getDecl(), n0);74 75 set.erase(0);76 EXPECT_EQ(set.size(), 0u);77}78 79TEST_F(UnresolvedSetTest, EraseIteratorFromStart) {80 set.erase(set.begin());81 EXPECT_EQ(set.size(), 3u);82 EXPECT_EQ(set[0].getDecl(), n3);83 EXPECT_EQ(set[1].getDecl(), n1);84 EXPECT_EQ(set[2].getDecl(), n2);85 86 set.erase(set.begin());87 EXPECT_EQ(set.size(), 2u);88 EXPECT_EQ(set[0].getDecl(), n2);89 EXPECT_EQ(set[1].getDecl(), n1);90 91 set.erase(set.begin());92 EXPECT_EQ(set.size(), 1u);93 EXPECT_EQ(set[0].getDecl(), n1);94 95 set.erase(set.begin());96 EXPECT_EQ(set.size(), 0u);97}98 99TEST_F(UnresolvedSetTest, EraseIteratorFromEnd) {100 set.erase(--set.end());101 EXPECT_EQ(set.size(), 3u);102 EXPECT_EQ(set[0].getDecl(), n0);103 EXPECT_EQ(set[1].getDecl(), n1);104 EXPECT_EQ(set[2].getDecl(), n2);105 106 set.erase(--set.end());107 EXPECT_EQ(set.size(), 2u);108 EXPECT_EQ(set[0].getDecl(), n0);109 EXPECT_EQ(set[1].getDecl(), n1);110 111 set.erase(--set.end());112 EXPECT_EQ(set.size(), 1u);113 EXPECT_EQ(set[0].getDecl(), n0);114 115 set.erase(--set.end());116 EXPECT_EQ(set.size(), 0u);117}118