xref: /llvm-project/llvm/unittests/DebugInfo/PDB/StringTableBuilderTest.cpp (revision cb30e705d8006b5bb7671ab2b364e8c38b6c0232)
1 //===- StringTableBuilderTest.cpp -----------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "llvm/DebugInfo/PDB/Native/PDBStringTable.h"
11 #include "llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h"
12 #include "llvm/Support/BinaryByteStream.h"
13 #include "llvm/Support/BinaryStreamReader.h"
14 #include "llvm/Support/BinaryStreamWriter.h"
15 #include "llvm/Testing/Support/Error.h"
16 
17 #include "gtest/gtest.h"
18 
19 using namespace llvm;
20 using namespace llvm::pdb;
21 using namespace llvm::support;
22 
23 namespace {
24 class StringTableBuilderTest : public ::testing::Test {};
25 }
26 
27 TEST_F(StringTableBuilderTest, Simple) {
28   // Create /names table contents.
29   PDBStringTableBuilder Builder;
30   EXPECT_EQ(1U, Builder.insert("foo"));
31   EXPECT_EQ(5U, Builder.insert("bar"));
32   EXPECT_EQ(1U, Builder.insert("foo"));
33   EXPECT_EQ(9U, Builder.insert("baz"));
34 
35   std::vector<uint8_t> Buffer(Builder.calculateSerializedSize());
36   MutableBinaryByteStream OutStream(Buffer, little);
37   BinaryStreamWriter Writer(OutStream);
38   EXPECT_THAT_ERROR(Builder.commit(Writer), Succeeded());
39 
40   // Reads the contents back.
41   BinaryByteStream InStream(Buffer, little);
42   BinaryStreamReader Reader(InStream);
43   PDBStringTable Table;
44   EXPECT_THAT_ERROR(Table.reload(Reader), Succeeded());
45 
46   EXPECT_EQ(3U, Table.getNameCount());
47   EXPECT_EQ(1U, Table.getHashVersion());
48 
49   EXPECT_THAT_EXPECTED(Table.getStringForID(1), HasValue("foo"));
50   EXPECT_THAT_EXPECTED(Table.getStringForID(5), HasValue("bar"));
51   EXPECT_THAT_EXPECTED(Table.getStringForID(9), HasValue("baz"));
52   EXPECT_THAT_EXPECTED(Table.getIDForString("foo"), HasValue(1U));
53   EXPECT_THAT_EXPECTED(Table.getIDForString("bar"), HasValue(5U));
54   EXPECT_THAT_EXPECTED(Table.getIDForString("baz"), HasValue(9U));
55 }
56