brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 8e82d11 Raw
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