mirror of
https://github.com/falk-werner/webfuse
synced 2024-10-27 20:34:10 +00:00
49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
|
#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);
|
||
|
}
|