From 71d5a2540a98c81f5bcaeb48805e0e2881f530ef Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sun, 16 Apr 2017 16:01:22 +0000 Subject: Vendor import of llvm trunk r300422: https://llvm.org/svn/llvm-project/llvm/trunk@300422 --- unittests/DebugInfo/PDB/StringTableBuilderTest.cpp | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 unittests/DebugInfo/PDB/StringTableBuilderTest.cpp (limited to 'unittests/DebugInfo/PDB/StringTableBuilderTest.cpp') diff --git a/unittests/DebugInfo/PDB/StringTableBuilderTest.cpp b/unittests/DebugInfo/PDB/StringTableBuilderTest.cpp new file mode 100644 index 000000000000..7c4838778e43 --- /dev/null +++ b/unittests/DebugInfo/PDB/StringTableBuilderTest.cpp @@ -0,0 +1,55 @@ +//===- StringTableBuilderTest.cpp -----------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "ErrorChecking.h" + +#include "llvm/DebugInfo/PDB/Native/StringTable.h" +#include "llvm/DebugInfo/PDB/Native/StringTableBuilder.h" +#include "llvm/Support/BinaryByteStream.h" +#include "llvm/Support/BinaryStreamReader.h" +#include "llvm/Support/BinaryStreamWriter.h" + +#include "gtest/gtest.h" + +using namespace llvm; +using namespace llvm::pdb; +using namespace llvm::support; + +namespace { +class StringTableBuilderTest : public ::testing::Test {}; +} + +TEST_F(StringTableBuilderTest, Simple) { + // Create /names table contents. + StringTableBuilder Builder; + EXPECT_EQ(1U, Builder.insert("foo")); + EXPECT_EQ(5U, Builder.insert("bar")); + EXPECT_EQ(1U, Builder.insert("foo")); + EXPECT_EQ(9U, Builder.insert("baz")); + + std::vector Buffer(Builder.finalize()); + MutableBinaryByteStream OutStream(Buffer, little); + BinaryStreamWriter Writer(OutStream); + EXPECT_NO_ERROR(Builder.commit(Writer)); + + // Reads the contents back. + BinaryByteStream InStream(Buffer, little); + BinaryStreamReader Reader(InStream); + StringTable Table; + EXPECT_NO_ERROR(Table.load(Reader)); + + EXPECT_EQ(3U, Table.getNameCount()); + EXPECT_EQ(1U, Table.getHashVersion()); + EXPECT_EQ("foo", Table.getStringForID(1)); + EXPECT_EQ("bar", Table.getStringForID(5)); + EXPECT_EQ("baz", Table.getStringForID(9)); + EXPECT_EQ(1U, Table.getIDForString("foo")); + EXPECT_EQ(5U, Table.getIDForString("bar")); + EXPECT_EQ(9U, Table.getIDForString("baz")); +} -- cgit v1.2.3