Home | History | Annotate | Download | only in unittests
      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.
     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.
     25 StringTableTest::~StringTableTest() {
     26   delete m_pTestee;
     27 }
     28 
     29 // SetUp() will be called immediately before each test.
     30 void StringTableTest::SetUp() {
     31 }
     32 
     33 // TearDown() will be called immediately after each test.
     34 void StringTableTest::TearDown() {
     35 }
     36 
     37 //==========================================================================//
     38 // Testcases
     39 //
     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 
     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 
     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