1*c28a977bSCarlos Alberto Enciso //===- llvm/unittest/DebugInfo/LogicalView/StringPoolTest.cpp -------------===//
2*c28a977bSCarlos Alberto Enciso //
3*c28a977bSCarlos Alberto Enciso // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*c28a977bSCarlos Alberto Enciso // See https://llvm.org/LICENSE.txt for license information.
5*c28a977bSCarlos Alberto Enciso // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*c28a977bSCarlos Alberto Enciso //
7*c28a977bSCarlos Alberto Enciso //===----------------------------------------------------------------------===//
8*c28a977bSCarlos Alberto Enciso
9*c28a977bSCarlos Alberto Enciso #include "llvm/DebugInfo/LogicalView/Core/LVStringPool.h"
10*c28a977bSCarlos Alberto Enciso #include <vector>
11*c28a977bSCarlos Alberto Enciso
12*c28a977bSCarlos Alberto Enciso #include "gtest/gtest.h"
13*c28a977bSCarlos Alberto Enciso
14*c28a977bSCarlos Alberto Enciso using namespace llvm;
15*c28a977bSCarlos Alberto Enciso using namespace llvm::logicalview;
16*c28a977bSCarlos Alberto Enciso
17*c28a977bSCarlos Alberto Enciso namespace {
18*c28a977bSCarlos Alberto Enciso
TEST(StringPoolTest,AddStrings)19*c28a977bSCarlos Alberto Enciso TEST(StringPoolTest, AddStrings) {
20*c28a977bSCarlos Alberto Enciso LVStringPool PoolInstance;
21*c28a977bSCarlos Alberto Enciso EXPECT_EQ(0u, PoolInstance.getSize());
22*c28a977bSCarlos Alberto Enciso
23*c28a977bSCarlos Alberto Enciso // Get indexes for the initial strings.
24*c28a977bSCarlos Alberto Enciso EXPECT_EQ(1u, PoolInstance.getIndex("one"));
25*c28a977bSCarlos Alberto Enciso EXPECT_EQ(2u, PoolInstance.getIndex("two"));
26*c28a977bSCarlos Alberto Enciso EXPECT_EQ(3u, PoolInstance.getIndex("three"));
27*c28a977bSCarlos Alberto Enciso EXPECT_EQ(4u, PoolInstance.getIndex("four"));
28*c28a977bSCarlos Alberto Enciso EXPECT_EQ(5u, PoolInstance.getIndex("five"));
29*c28a977bSCarlos Alberto Enciso EXPECT_EQ(5u, PoolInstance.getSize());
30*c28a977bSCarlos Alberto Enciso
31*c28a977bSCarlos Alberto Enciso // Verify the string returned by the given index.
32*c28a977bSCarlos Alberto Enciso EXPECT_EQ("one", PoolInstance.getString(1));
33*c28a977bSCarlos Alberto Enciso EXPECT_EQ("two", PoolInstance.getString(2));
34*c28a977bSCarlos Alberto Enciso EXPECT_EQ("three", PoolInstance.getString(3));
35*c28a977bSCarlos Alberto Enciso EXPECT_EQ("four", PoolInstance.getString(4));
36*c28a977bSCarlos Alberto Enciso EXPECT_EQ("five", PoolInstance.getString(5));
37*c28a977bSCarlos Alberto Enciso EXPECT_EQ(5u, PoolInstance.getSize());
38*c28a977bSCarlos Alberto Enciso
39*c28a977bSCarlos Alberto Enciso // Get indexes for the same initial strings.
40*c28a977bSCarlos Alberto Enciso EXPECT_EQ(5u, PoolInstance.getIndex("five"));
41*c28a977bSCarlos Alberto Enciso EXPECT_EQ(4u, PoolInstance.getIndex("four"));
42*c28a977bSCarlos Alberto Enciso EXPECT_EQ(3u, PoolInstance.getIndex("three"));
43*c28a977bSCarlos Alberto Enciso EXPECT_EQ(2u, PoolInstance.getIndex("two"));
44*c28a977bSCarlos Alberto Enciso EXPECT_EQ(1u, PoolInstance.getIndex("one"));
45*c28a977bSCarlos Alberto Enciso EXPECT_EQ(5u, PoolInstance.getSize());
46*c28a977bSCarlos Alberto Enciso
47*c28a977bSCarlos Alberto Enciso // Empty string gets the index zero.
48*c28a977bSCarlos Alberto Enciso EXPECT_EQ(0u, PoolInstance.getIndex(""));
49*c28a977bSCarlos Alberto Enciso EXPECT_EQ(5u, PoolInstance.getSize());
50*c28a977bSCarlos Alberto Enciso
51*c28a977bSCarlos Alberto Enciso // Empty string for invalid index.
52*c28a977bSCarlos Alberto Enciso EXPECT_EQ("", PoolInstance.getString(620));
53*c28a977bSCarlos Alberto Enciso
54*c28a977bSCarlos Alberto Enciso // Lookup for strings
55*c28a977bSCarlos Alberto Enciso EXPECT_EQ(5u, PoolInstance.findIndex("five"));
56*c28a977bSCarlos Alberto Enciso EXPECT_TRUE(PoolInstance.isValidIndex(PoolInstance.findIndex("five")));
57*c28a977bSCarlos Alberto Enciso EXPECT_FALSE(PoolInstance.isValidIndex(PoolInstance.findIndex("FIVE")));
58*c28a977bSCarlos Alberto Enciso }
59*c28a977bSCarlos Alberto Enciso
60*c28a977bSCarlos Alberto Enciso } // namespace
61