1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===----------- StringTableBuilderTest.cpp -------------------------------===//
2dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
3dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//                     The LLVM Compiler Infrastructure
4dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
5dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// This file is distributed under the University of Illinois Open Source
6dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// License. See LICENSE.TXT for details.
7dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
8dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===----------------------------------------------------------------------===//
9dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
10cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#include "llvm/MC/StringTableBuilder.h"
11dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "gtest/gtest.h"
12dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include <string>
13dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
14dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesusing namespace llvm;
15dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
16dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesnamespace {
17dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
18dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesTEST(StringTableBuilderTest, Basic) {
19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  StringTableBuilder B;
20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  B.add("foo");
22dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  B.add("bar");
23dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  B.add("foobar");
24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  B.finalize();
26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  std::string Expected;
28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  Expected += '\x00';
29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  Expected += "foobar";
30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  Expected += '\x00';
31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  Expected += "foo";
32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  Expected += '\x00';
33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  EXPECT_EQ(Expected, B.data());
35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  EXPECT_EQ(1U, B.getOffset("foobar"));
36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  EXPECT_EQ(4U, B.getOffset("bar"));
37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  EXPECT_EQ(8U, B.getOffset("foo"));
38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines}
39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
40dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines}
41