squall/test/List.cpp

118 lines
2.7 KiB
C++
Raw Normal View History

2020-11-01 17:45:45 -06:00
#include "storm/List.hpp"
#include "test/Test.hpp"
2020-09-16 01:28:32 -05:00
struct TestListNode : TSLinkedNode<TestListNode> {
uint32_t index = 0;
};
TEST_CASE("TSList", "[list]") {
SECTION("constructs correctly") {
STORM_LIST(TestListNode) list;
REQUIRE(list.Head() == nullptr);
}
}
TEST_CASE("TSList::Head", "[list]") {
SECTION("returns nullptr for uninitialized list") {
STORM_LIST(TestListNode) list;
REQUIRE(list.Head() == nullptr);
}
}
2020-09-16 01:28:32 -05:00
TEST_CASE("TSList::LinkToHead", "[list]") {
SECTION("links node to head correctly") {
STORM_LIST(TestListNode) list;
auto node = new TestListNode();
list.LinkToHead(node);
REQUIRE(list.Head() == node);
2020-09-16 23:12:09 -05:00
delete node;
2020-09-16 01:28:32 -05:00
}
2020-09-21 22:47:23 -05:00
SECTION("links multiple nodes to head correctly") {
STORM_LIST(TestListNode) list;
auto node1 = new TestListNode();
list.LinkToHead(node1);
auto node2 = new TestListNode();
list.LinkToHead(node2);
REQUIRE(list.Head() == node2);
REQUIRE(list.Tail() == node1);
delete node1;
delete node2;
}
SECTION("links node to head after linking node to tail correctly") {
STORM_LIST(TestListNode) list;
auto node1 = new TestListNode();
list.LinkToTail(node1);
auto node2 = new TestListNode();
list.LinkToHead(node2);
REQUIRE(list.Head() == node2);
REQUIRE(list.Tail() == node1);
delete node1;
delete node2;
}
}
TEST_CASE("TSList::LinkToTail", "[list]") {
2020-09-21 22:47:23 -05:00
SECTION("links node to tail correctly") {
STORM_LIST(TestListNode) list;
auto node = new TestListNode();
list.LinkToTail(node);
REQUIRE(list.Tail() == node);
delete node;
}
SECTION("links multiple nodes to tail correctly") {
2020-09-21 22:47:23 -05:00
STORM_LIST(TestListNode) list;
auto node1 = new TestListNode();
list.LinkToTail(node1);
2020-09-21 22:47:23 -05:00
auto node2 = new TestListNode();
list.LinkToTail(node2);
REQUIRE(list.Head() == node1);
REQUIRE(list.Tail() == node2);
delete node1;
delete node2;
}
SECTION("links node to tail after linking node to head correctly") {
2020-09-21 22:47:23 -05:00
STORM_LIST(TestListNode) list;
auto node1 = new TestListNode();
list.LinkToHead(node1);
auto node2 = new TestListNode();
list.LinkToTail(node2);
2020-09-21 22:47:23 -05:00
REQUIRE(list.Head() == node1);
REQUIRE(list.Tail() == node2);
2020-09-21 22:47:23 -05:00
delete node1;
delete node2;
}
2020-09-16 01:28:32 -05:00
}
TEST_CASE("TSList::Tail", "[list]") {
SECTION("returns nullptr for uninitialized list") {
STORM_LIST(TestListNode) list;
REQUIRE(list.Tail() == nullptr);
}
}