xref: /llvm-project/llvm/unittests/DebugInfo/PDB/StringTableBuilderTest.cpp (revision c504ae3cefc0fab043bb76f992045c9770ef87c1)
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 "ErrorChecking.h"
11 
12 #include "llvm/DebugInfo/PDB/Native/PDBStringTable.h"
13 #include "llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h"
14 #include "llvm/Support/BinaryByteStream.h"
15 #include "llvm/Support/BinaryStreamReader.h"
16 #include "llvm/Support/BinaryStreamWriter.h"
17 
18 #include "gtest/gtest.h"
19 
20 using namespace llvm;
21 using namespace llvm::pdb;
22 using namespace llvm::support;
23 
24 namespace {
25 class StringTableBuilderTest : public ::testing::Test {};
26 }
27 
28 TEST_F(StringTableBuilderTest, Simple) {
29   // Create /names table contents.
30   PDBStringTableBuilder Builder;
31   EXPECT_EQ(1U, Builder.insert("foo"));
32   EXPECT_EQ(5U, Builder.insert("bar"));
33   EXPECT_EQ(1U, Builder.insert("foo"));
34   EXPECT_EQ(9U, Builder.insert("baz"));
35 
36   std::vector<uint8_t> Buffer(Builder.calculateSerializedSize());
37   MutableBinaryByteStream OutStream(Buffer, little);
38   BinaryStreamWriter Writer(OutStream);
39   EXPECT_NO_ERROR(Builder.commit(Writer));
40 
41   // Reads the contents back.
42   BinaryByteStream InStream(Buffer, little);
43   BinaryStreamReader Reader(InStream);
44   PDBStringTable Table;
45   EXPECT_NO_ERROR(Table.reload(Reader));
46 
47   EXPECT_EQ(3U, Table.getNameCount());
48   EXPECT_EQ(1U, Table.getHashVersion());
49   EXPECT_EQ("foo", Table.getStringForID(1));
50   EXPECT_EQ("bar", Table.getStringForID(5));
51   EXPECT_EQ("baz", Table.getStringForID(9));
52   EXPECT_EQ(1U, Table.getIDForString("foo"));
53   EXPECT_EQ(5U, Table.getIDForString("bar"));
54   EXPECT_EQ(9U, Table.getIDForString("baz"));
55 }
56