1
0
mirror of https://github.com/falk-werner/webfuse synced 2024-10-27 20:34:10 +00:00
falk-werner_webfuse/test/test_dlist.cc

49 lines
1.1 KiB
C++
Raw Normal View History

2019-04-03 21:34:39 +00:00
#include <gtest/gtest.h>
#include "webfuse/core/dlist.h"
#include "webfuse/core/container_of.h"
namespace
{
struct Item
{
wf_dlist_item item;
char value;
};
}
TEST(DList, prepend)
{
struct wf_dlist list;
wf_dlist_init(&list);
ASSERT_EQ(nullptr, list.first);
Item a;
a.value = 'a';
wf_dlist_prepend(&list, &a.item);
ASSERT_EQ(&a.item, list.first);
ASSERT_EQ(nullptr, a.item.next);
ASSERT_EQ(nullptr, a.item.prev);
Item b;
b.value = 'b';
wf_dlist_prepend(&list, &b.item);
ASSERT_EQ(&b.item, list.first);
ASSERT_EQ(&a.item, b.item.next);
ASSERT_EQ(nullptr, b.item.prev);
ASSERT_EQ(nullptr, a.item.next);
ASSERT_EQ(&b.item, a.item.prev);
Item c;
c.value = 'c';
wf_dlist_prepend(&list, &c.item);
ASSERT_EQ(&c.item, list.first);
ASSERT_EQ(&b.item, c.item.next);
ASSERT_EQ(nullptr, c.item.prev);
ASSERT_EQ(&a.item, b.item.next);
ASSERT_EQ(&c.item, b.item.prev);
ASSERT_EQ(nullptr, a.item.next);
ASSERT_EQ(&b.item, a.item.prev);
wf_dlist_cleanup(&list, nullptr, nullptr);
ASSERT_EQ(nullptr, list.first);
}