You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.7 KiB
64 lines
1.7 KiB
#include <gtest/gtest.h>
|
|
|
|
#include "../src/types.hh"
|
|
|
|
typedef pEp::StringPair SP;
|
|
|
|
|
|
TEST(StringPair, Simple)
|
|
{
|
|
pEp::StringPair s1{ "key", "value" };
|
|
pEp::StringPairList spl;
|
|
EXPECT_TRUE(spl.empty());
|
|
EXPECT_EQ(spl.size(), 0);
|
|
|
|
// pEp::StringPair s2{ std::string{"key2"}, std::string{"value"} };
|
|
}
|
|
|
|
|
|
TEST(StringPair, InitList)
|
|
{
|
|
const std::initializer_list<pEp::StringPair> il{ SP{ "key0", "value0" }, SP{ "key1", "value1" } };
|
|
pEp::StringPairList spl(il);
|
|
EXPECT_EQ(spl.size(), 2);
|
|
|
|
spl.clear();
|
|
EXPECT_EQ(spl.size(), 0);
|
|
EXPECT_TRUE(spl.empty());
|
|
}
|
|
|
|
|
|
TEST(StringPair, Dynamic)
|
|
{
|
|
static const unsigned NumberOfElements = 17;
|
|
|
|
char key[16];
|
|
char value[16];
|
|
|
|
pEp::StringPairList spl;
|
|
EXPECT_EQ(spl.size(), 0);
|
|
EXPECT_TRUE(spl.empty());
|
|
|
|
for (unsigned u = 0; u < NumberOfElements; ++u) {
|
|
EXPECT_EQ(spl.size(), u);
|
|
snprintf(key, 15, "k%u", u);
|
|
snprintf(value, 15, "v%u", u * 91);
|
|
spl.push_back(pEp::StringPair{ key, value });
|
|
}
|
|
|
|
auto find_by_key = [&key](const ::stringpair_t* sp) { return strcmp(sp->key, key) == 0; };
|
|
|
|
// delete random elements.
|
|
for (unsigned u = 0; u < NumberOfElements; ++u) {
|
|
EXPECT_EQ(spl.size(), NumberOfElements - u);
|
|
snprintf(key, 15, "k%u", (u * 7) % NumberOfElements); // permutate keys order
|
|
auto q = std::find_if(spl.begin(), spl.end(), find_by_key);
|
|
|
|
ASSERT_NE(q, spl.end()); // element with key is found
|
|
EXPECT_STREQ(q->key, key);
|
|
spl.erase(q);
|
|
|
|
q = std::find_if(spl.begin(), spl.end(), find_by_key);
|
|
EXPECT_EQ(q, spl.end()); // element with that key is no longer found
|
|
}
|
|
}
|
|
|