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
17 // Constructor can do set-up work for all test here.
StringTableTest()18 StringTableTest::StringTableTest()
19 {
20 // create testee. modify it if need
21 Resolver* R = new Resolver();
22 StrSymPool* Pool = new StrSymPool(1, 1, *R);
23 m_pTestee = new StringTable(*Pool);
24 }
25
26 // Destructor can do clean-up work that doesn't throw exceptions here.
~StringTableTest()27 StringTableTest::~StringTableTest()
28 {
29 delete m_pTestee;
30 }
31
32 // SetUp() will be called immediately before each test.
SetUp()33 void StringTableTest::SetUp()
34 {
35 }
36
37 // TearDown() will be called immediately after each test.
TearDown()38 void StringTableTest::TearDown()
39 {
40 }
41
42 //==========================================================================//
43 // Testcases
44 //
TEST_F(StringTableTest,different_string_size)45 TEST_F(StringTableTest, different_string_size) {
46 int size = 127-32;
47 for (int i = 32; i < 127; ++i) {
48 char c[2];
49 c[0] = i;
50 c[1] = '\0';
51 ASSERT_NE(m_pTestee->insert(c), c);
52 }
53 ASSERT_EQ(m_pTestee->size(), size);
54 }
55
TEST_F(StringTableTest,traverse_begin_to_end)56 TEST_F(StringTableTest, traverse_begin_to_end) {
57 m_pTestee->insert("Hello");
58 m_pTestee->insert("World");
59 m_pTestee->insert("Media");
60 m_pTestee->insert("Tek");
61 StringTable::iterator it = m_pTestee->begin();
62 ASSERT_STREQ(*it, "Hello");
63 ++it;
64 ASSERT_STREQ(*it, "World");
65 ++it;
66 ASSERT_STREQ(*it, "Media");
67 ++it;
68 ASSERT_STREQ(*it, "Tek");
69 ++it;
70 ASSERT_EQ(it, m_pTestee->end());
71 }
72
TEST_F(StringTableTest,null_string)73 TEST_F(StringTableTest, null_string) {
74 m_pTestee->insert("");
75 ASSERT_STREQ(*(m_pTestee->begin()), "");
76 ASSERT_EQ(m_pTestee->size(), 1);
77 }
78