Horizon Official Technical Documentation
ReferenceListTest.cpp File Reference
#include "Core/Structures/LinkedList/ReferenceList/Reference.hpp"
#include "Core/Structures/LinkedList/ReferenceList/RefManager.hpp"
#include <boost/test/unit_test.hpp>
#include <cstring>
#include <iostream>
#include <cassert>
+ Include dependency graph for ReferenceListTest.cpp:

Classes

class  TestRefManager< OBJECT >
 
class  TestReference< OBJECT >
 
class  TestObject< T >
 
class  Player
 

Macros

#define BOOST_TEST_MODULE   "ReferenceListTest"
 
#define MAX_LIMIT   10000
 

Functions

 BOOST_AUTO_TEST_CASE (ReferenceListTest)
 

Macro Definition Documentation

◆ BOOST_TEST_MODULE

#define BOOST_TEST_MODULE   "ReferenceListTest"

◆ MAX_LIMIT

#define MAX_LIMIT   10000

Function Documentation

◆ BOOST_AUTO_TEST_CASE()

BOOST_AUTO_TEST_CASE ( ReferenceListTest  )
129{
130 TestRefManager<Player> playerRefMgr;
131 std::shared_ptr<Player> player[MAX_LIMIT];
132 int var[MAX_LIMIT];
133
134 // Test for validity of reference after adding it.
135 for (int i = 0; i < MAX_LIMIT; i++) {
136 var[i] = i;
137 player[i] = std::make_shared<Player>();
138 player[i]->add_reference(playerRefMgr);
139 player[i]->get_reference().source()->set_id(var[i]);
140 BOOST_CHECK_EQUAL(player[i]->valid(), true);
141 }
142
143 // Test to verify post-increment forward iteration.
144 int ofs = MAX_LIMIT - 1;
145 for (auto it = playerRefMgr.begin(); it != TestRefManager<Player>::iterator(nullptr); it++)
146 BOOST_CHECK_EQUAL(it->source()->get_id(), var[ofs--]);
147
148 // Test to verify pre-increment forward iteration.
149 ofs = MAX_LIMIT - 1;
150 for (auto it = playerRefMgr.begin(); it != TestRefManager<Player>::iterator(nullptr); ++it)
151 BOOST_CHECK_EQUAL(it->source()->get_id(), var[ofs--]);
152
153 // Test to verify the size of the list.
154 BOOST_CHECK_EQUAL(playerRefMgr.get_size(), MAX_LIMIT);
155
156 // Test to verify if the previous of first element of the Head is nullptr.
157 if (playerRefMgr.first()->prev() != nullptr)
158 BOOST_FAIL("Prev of first is not null!");
159 // Test to verify if next of last element of the Head is nullptr.
160 if (playerRefMgr.last()->next() != nullptr)
161 BOOST_FAIL("Next of last is not null!");
162
163 // Test for validity of reference after removing it.
164 for (int i = 0; i < MAX_LIMIT; i++) {
165 player[i]->remove_reference();
166 BOOST_CHECK_EQUAL(player[i]->valid(), false);
167 }
168
169 // Test to verify all elements were removed successfully.
170 BOOST_CHECK_EQUAL(playerRefMgr.get_size(), 0);
171}
#define MAX_LIMIT
Definition: ReferenceListTest.cpp:126
Element * next()
Returns the next Element in the list.
Definition: Element.hpp:36
Element * last()
Returns the last Element in the list.
Definition: Head.hpp:50
uint32_t get_size() const
returns the number of Elements in the list (not including the head and tail Elements or the first and...
Definition: Head.hpp:69
Reference< TO, FROM > * prev()
Definition: Reference.hpp:91
iterator begin()
Definition: ReferenceListTest.cpp:60
TestReference< OBJECT > * first()
Definition: ReferenceListTest.cpp:50

References TestRefManager< OBJECT >::begin(), TestRefManager< OBJECT >::first(), Horizon::Structures::LinkedList::Head::get_size(), Horizon::Structures::LinkedList::Head::last(), MAX_LIMIT, Horizon::Structures::LinkedList::Element::next(), and Horizon::Structures::LinkedList::Reference< TO, FROM >::prev().

+ Here is the call graph for this function: