1 //===- StringTableTest.cpp ------------------------------------------------===//
2 //
3 //                     The MCLinker Project
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #include "StringTableTest.h"
10 #include "mcld/LD/StringTable.h"
11 #include <cstring>
12 
13 using namespace mcld;
14 using namespace mcldtest;
15 
16 // Constructor can do set-up work for all test here.
StringTableTest()17 StringTableTest::StringTableTest() {
18   // create testee. modify it if need
19   Resolver* R = new Resolver();
20   StrSymPool* Pool = new StrSymPool(1, 1, *R);
21   m_pTestee = new StringTable(*Pool);
22 }
23 
24 // Destructor can do clean-up work that doesn't throw exceptions here.
~StringTableTest()25 StringTableTest::~StringTableTest() {
26   delete m_pTestee;
27 }
28 
29 // SetUp() will be called immediately before each test.
SetUp()30 void StringTableTest::SetUp() {
31 }
32 
33 // TearDown() will be called immediately after each test.
TearDown()34 void StringTableTest::TearDown() {
35 }
36 
37 //==========================================================================//
38 // Testcases
39 //
TEST_F(StringTableTest,different_string_size)40 TEST_F(StringTableTest, different_string_size) {
41   int size = 127 - 32;
42   for (int i = 32; i < 127; ++i) {
43     char c[2];
44     c[0] = i;
45     c[1] = '\0';
46     ASSERT_NE(m_pTestee->insert(c), c);
47   }
48   ASSERT_EQ(m_pTestee->size(), size);
49 }
50 
TEST_F(StringTableTest,traverse_begin_to_end)51 TEST_F(StringTableTest, traverse_begin_to_end) {
52   m_pTestee->insert("Hello");
53   m_pTestee->insert("World");
54   m_pTestee->insert("Media");
55   m_pTestee->insert("Tek");
56   StringTable::iterator it = m_pTestee->begin();
57   ASSERT_STREQ(*it, "Hello");
58   ++it;
59   ASSERT_STREQ(*it, "World");
60   ++it;
61   ASSERT_STREQ(*it, "Media");
62   ++it;
63   ASSERT_STREQ(*it, "Tek");
64   ++it;
65   ASSERT_EQ(it, m_pTestee->end());
66 }
67 
TEST_F(StringTableTest,null_string)68 TEST_F(StringTableTest, null_string) {
69   m_pTestee->insert("");
70   ASSERT_STREQ(*(m_pTestee->begin()), "");
71   ASSERT_EQ(m_pTestee->size(), 1);
72 }
73