//===- 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); }