
1 changed files with 56 additions and 0 deletions
@ -0,0 +1,56 @@ |
|||||
|
#include <gtest/gtest.h> |
||||
|
|
||||
|
#include "../src/types.hh" |
||||
|
|
||||
|
|
||||
|
TEST( StringList, Simple ) |
||||
|
{ |
||||
|
pEp::StringList sl; |
||||
|
EXPECT_TRUE(sl.empty()); |
||||
|
EXPECT_EQ(sl.size(), 0); |
||||
|
} |
||||
|
|
||||
|
TEST( StringList, InitList ) |
||||
|
{ |
||||
|
pEp::StringList sl( {"Hello", "world"} ); |
||||
|
EXPECT_EQ( sl.size(), 2); |
||||
|
|
||||
|
sl.clear(); |
||||
|
EXPECT_EQ(sl.size(), 0); |
||||
|
EXPECT_TRUE( sl.empty() ); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
TEST( StringList, Dynamic ) |
||||
|
{ |
||||
|
static const unsigned NumberOfElements = 17; |
||||
|
|
||||
|
pEp::StringList sl; |
||||
|
EXPECT_EQ(sl.size(), 0); |
||||
|
EXPECT_TRUE( sl.empty() ); |
||||
|
|
||||
|
char buffer[16]; |
||||
|
for(unsigned u=0; u<NumberOfElements; ++u) |
||||
|
{ |
||||
|
EXPECT_EQ(sl.size(), u); |
||||
|
snprintf(buffer, 15, "k%u", u); |
||||
|
sl.push_back( buffer ); |
||||
|
} |
||||
|
|
||||
|
auto find_value = [&buffer](const char* v){ return strcmp(v, buffer)==0; }; |
||||
|
|
||||
|
// delete random elements.
|
||||
|
for(unsigned u=0; u<NumberOfElements; ++u) |
||||
|
{ |
||||
|
EXPECT_EQ(sl.size(), NumberOfElements-u); |
||||
|
snprintf(buffer, 15, "k%u", (u*7) % NumberOfElements); // permutate keys order
|
||||
|
auto q = std::find_if( sl.begin(), sl.end(), find_value ); |
||||
|
|
||||
|
ASSERT_NE( q, sl.end() ); // element with key is found
|
||||
|
EXPECT_STREQ( *q, buffer); |
||||
|
sl.erase(q); |
||||
|
|
||||
|
q = std::find_if( sl.begin(), sl.end(), find_value ); |
||||
|
EXPECT_EQ( q, sl.end() ); // element with that key is no longer found
|
||||
|
} |
||||
|
} |
Loading…
Reference in new issue