102 lines · cpp
1//===- llvm/unittest/CodeGen/DwarfStringPoolEntryRefTest.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-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/CodeGen/DwarfStringPoolEntry.h"10#include "llvm/Support/Allocator.h"11#include "llvm/Testing/Support/Error.h"12 13#include "gmock/gmock.h"14#include "gtest/gtest.h"15 16using namespace llvm;17 18TEST(DwarfStringPoolEntryRefTest, TestFullEntry) {19 BumpPtrAllocator Allocator;20 StringMapEntry<DwarfStringPoolEntry> *StringEntry1 =21 StringMapEntry<DwarfStringPoolEntry>::create(22 "Key1", Allocator, DwarfStringPoolEntry{nullptr, 0, 0});23 24 EXPECT_TRUE(StringEntry1->getKey() == "Key1");25 EXPECT_TRUE(StringEntry1->second.Symbol == nullptr);26 EXPECT_TRUE(StringEntry1->second.Offset == 0);27 EXPECT_TRUE(StringEntry1->second.Index == 0);28 29 DwarfStringPoolEntryRef Ref1(*StringEntry1);30 EXPECT_TRUE(Ref1.getString() == "Key1");31 EXPECT_TRUE(Ref1.getOffset() == 0);32 EXPECT_TRUE(Ref1.getIndex() == 0);33 34 DwarfStringPoolEntryRef Ref2(*StringEntry1);35 EXPECT_TRUE(Ref2.getString() == "Key1");36 EXPECT_TRUE(Ref2.getOffset() == 0);37 EXPECT_TRUE(Ref2.getIndex() == 0);38 EXPECT_TRUE(Ref1 == Ref2);39 EXPECT_FALSE(Ref1 != Ref2);40 41 StringMapEntry<DwarfStringPoolEntry> *StringEntry2 =42 StringMapEntry<DwarfStringPoolEntry>::create(43 "Key2", Allocator, DwarfStringPoolEntry{nullptr, 0x1000, 1});44 EXPECT_TRUE(StringEntry2->getKey() == "Key2");45 EXPECT_TRUE(StringEntry2->second.Symbol == nullptr);46 EXPECT_TRUE(StringEntry2->second.Offset == 0x1000);47 EXPECT_TRUE(StringEntry2->second.Index == 1);48 49 DwarfStringPoolEntryRef Ref3(*StringEntry2);50 EXPECT_TRUE(Ref3.getString() == "Key2");51 EXPECT_TRUE(Ref3.getOffset() == 0x1000);52 EXPECT_TRUE(Ref3.getIndex() == 1);53 EXPECT_TRUE(Ref1 != Ref3);54}55 56bool isEntryEqual(const DwarfStringPoolEntry &LHS,57 const DwarfStringPoolEntry &RHS) {58 return LHS.Symbol == RHS.Symbol && LHS.Offset == RHS.Offset &&59 LHS.Index == RHS.Index;60}61 62TEST(DwarfStringPoolEntryRefTest, TestShortEntry) {63 DwarfStringPoolEntryWithExtString DwarfEntry1 = {{nullptr, 0, 0}, "Key1"};64 65 DwarfStringPoolEntryRef Ref1(DwarfEntry1);66 EXPECT_TRUE(Ref1.getString() == "Key1");67 EXPECT_TRUE(Ref1.getOffset() == 0);68 EXPECT_TRUE(Ref1.getIndex() == 0);69 EXPECT_TRUE(isEntryEqual(Ref1.getEntry(), DwarfEntry1));70 71 DwarfStringPoolEntryRef Ref2(DwarfEntry1);72 EXPECT_TRUE(Ref2.getString() == "Key1");73 EXPECT_TRUE(Ref2.getOffset() == 0);74 EXPECT_TRUE(isEntryEqual(Ref2.getEntry(), DwarfEntry1));75 EXPECT_TRUE(Ref1 == Ref2);76 EXPECT_FALSE(Ref1 != Ref2);77 78 DwarfStringPoolEntryWithExtString DwarfEntry2 = {{nullptr, 0x1000, 1},79 "Key2"};80 81 DwarfStringPoolEntryRef Ref3(DwarfEntry2);82 EXPECT_TRUE(Ref3.getString() == "Key2");83 EXPECT_TRUE(Ref3.getOffset() == 0x1000);84 EXPECT_TRUE(Ref3.getIndex() == 1);85 EXPECT_TRUE(isEntryEqual(Ref3.getEntry(), DwarfEntry2));86 EXPECT_TRUE(Ref1 != Ref3);87}88 89TEST(DwarfStringPoolEntryRefTest, CompareFullAndShort) {90 BumpPtrAllocator Allocator;91 92 DwarfStringPoolEntryWithExtString DwarfEntry1 = {{nullptr, 0, 0}, "Key1"};93 DwarfStringPoolEntryRef Ref1(DwarfEntry1);94 95 StringMapEntry<DwarfStringPoolEntry> *StringEntry2 =96 StringMapEntry<DwarfStringPoolEntry>::create(97 "Key1", Allocator, DwarfStringPoolEntry{nullptr, 0, 0});98 DwarfStringPoolEntryRef Ref2(*StringEntry2);99 100 EXPECT_FALSE(Ref1 == Ref2);101}102