| //===- StringTableTest.cpp ------------------------------------------------===// |
| // |
| // The MCLinker Project |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| #include "StringTableTest.h" |
| #include "mcld/LD/StringTable.h" |
| #include <cstring> |
| |
| using namespace mcld; |
| using namespace mcldtest; |
| |
| |
| // Constructor can do set-up work for all test here. |
| StringTableTest::StringTableTest() |
| { |
| // create testee. modify it if need |
| Resolver* R = new Resolver(); |
| StrSymPool* Pool = new StrSymPool(1, 1, *R); |
| m_pTestee = new StringTable(*Pool); |
| } |
| |
| // Destructor can do clean-up work that doesn't throw exceptions here. |
| StringTableTest::~StringTableTest() |
| { |
| delete m_pTestee; |
| } |
| |
| // SetUp() will be called immediately before each test. |
| void StringTableTest::SetUp() |
| { |
| } |
| |
| // TearDown() will be called immediately after each test. |
| void StringTableTest::TearDown() |
| { |
| } |
| |
| //==========================================================================// |
| // Testcases |
| // |
| TEST_F(StringTableTest, different_string_size) { |
| int size = 127-32; |
| for (int i = 32; i < 127; ++i) { |
| char c[2]; |
| c[0] = i; |
| c[1] = '\0'; |
| ASSERT_NE(m_pTestee->insert(c), c); |
| } |
| ASSERT_EQ(m_pTestee->size(), size); |
| } |
| |
| TEST_F(StringTableTest, traverse_begin_to_end) { |
| m_pTestee->insert("Hello"); |
| m_pTestee->insert("World"); |
| m_pTestee->insert("Media"); |
| m_pTestee->insert("Tek"); |
| StringTable::iterator it = m_pTestee->begin(); |
| ASSERT_STREQ(*it, "Hello"); |
| ++it; |
| ASSERT_STREQ(*it, "World"); |
| ++it; |
| ASSERT_STREQ(*it, "Media"); |
| ++it; |
| ASSERT_STREQ(*it, "Tek"); |
| ++it; |
| ASSERT_EQ(it, m_pTestee->end()); |
| } |
| |
| TEST_F(StringTableTest, null_string) { |
| m_pTestee->insert(""); |
| ASSERT_STREQ(*(m_pTestee->begin()), ""); |
| ASSERT_EQ(m_pTestee->size(), 1); |
| } |