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