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