• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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