Implemented basic containers and ref pointers

This commit is contained in:
HOEGLER Stefan
2020-02-25 00:45:20 +01:00
parent 4c491a9378
commit a14237d6ce
31 changed files with 1212 additions and 36 deletions
+141
View File
@@ -0,0 +1,141 @@
#include "EngineTest.h"
#include "Containers/Array.h"
#define BOOST_TEST_MODULE SeeleEngine
#include <boost/test/unit_test.hpp>
using namespace Seele;
BOOST_AUTO_TEST_SUITE(Array_Suite)
BOOST_AUTO_TEST_CASE(empty_constructur)
{
Array<uint8> array;
BOOST_CHECK_EQUAL(array.size(), 0);
}
BOOST_AUTO_TEST_CASE(initialial_size)
{
Array<uint8> array(3);
BOOST_CHECK_EQUAL(array.size(), 3);
}
BOOST_AUTO_TEST_CASE(resize)
{
Array<uint8> array;
array.add(2);
array.add(3);
BOOST_CHECK_EQUAL(array.size(), 2);
array.resize(5);
BOOST_CHECK_EQUAL(array.size(), 5);
}
BOOST_AUTO_TEST_CASE(clear)
{
Array<uint8> array;
array.add(3);
array.add(2);
array.add(6);
BOOST_CHECK_EQUAL(array.size(), 3);
array.clear();
BOOST_CHECK_EQUAL(array.size(), 0);
}
BOOST_AUTO_TEST_CASE(remove_keeporder)
{
Array<uint8> array;
array.add(1);
array.add(2);
array.add(3);
array.add(4);
array.add(5);
array.remove(1);
BOOST_CHECK_EQUAL(array[1], 3);
BOOST_CHECK_EQUAL(array[2], 4);
BOOST_CHECK_EQUAL(array[3], 5);
BOOST_CHECK_EQUAL(array.size(), 4);
}
BOOST_AUTO_TEST_CASE(remove_swap)
{
Array<uint8> array;
array.add(1);
array.add(2);
array.add(3);
array.add(4);
array.add(5);
array.remove(1, false);
BOOST_CHECK_EQUAL(array[1], 5);
BOOST_CHECK_EQUAL(array[2], 3);
BOOST_CHECK_EQUAL(array[3], 4);
BOOST_CHECK_EQUAL(array.size(), 4);
}
BOOST_AUTO_TEST_CASE(remove_iterator)
{
Array<uint8> array;
array.add(1);
array.add(2);
array.add(3);
array.add(4);
array.add(5);
array.remove(array.find(1), false);
BOOST_CHECK_EQUAL(array[0], 5);
BOOST_CHECK_EQUAL(array[1], 2);
BOOST_CHECK_EQUAL(array[2], 3);
BOOST_CHECK_EQUAL(array[3], 4);
BOOST_CHECK_EQUAL(array.size(), 4);
}
BOOST_AUTO_TEST_CASE(remove_iterator_keep_order)
{
Array<uint8> array;
array.add(1);
array.add(2);
array.add(3);
array.add(4);
array.add(5);
array.remove(array.find(1));
BOOST_CHECK_EQUAL(array[0], 2);
BOOST_CHECK_EQUAL(array[1], 3);
BOOST_CHECK_EQUAL(array[2], 4);
BOOST_CHECK_EQUAL(array[3], 5);
BOOST_CHECK_EQUAL(array.size(), 4);
}
BOOST_AUTO_TEST_CASE(random_access)
{
Array<uint8> array;
array.add(4);
array.add(5);
array.add(6);
BOOST_CHECK_EQUAL(array[2], 6);
BOOST_CHECK_EQUAL(array[0], 4);
}
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE(StaticArray_Suite)
BOOST_AUTO_TEST_CASE(empty_constructur)
{
StaticArray<uint8, 2> array;
BOOST_CHECK_EQUAL(array.size(), 2);
}
BOOST_AUTO_TEST_CASE(initialial_size)
{
StaticArray<uint8, 3> array(3);
BOOST_CHECK_EQUAL(array.size(), 3);
BOOST_CHECK_EQUAL(array[1], 3);
}
BOOST_AUTO_TEST_CASE(random_access)
{
StaticArray<uint8, 3> array;
array[0] = 4;
array[1] = 5;
array[2] = 6;
BOOST_CHECK_EQUAL(array[0], 4);
BOOST_CHECK_EQUAL(array[2], 6);
}
BOOST_AUTO_TEST_SUITE_END()
+4
View File
@@ -0,0 +1,4 @@
target_sources(Seele_unit_tests
PRIVATE
Array.cpp
Map.cpp)
+67
View File
@@ -0,0 +1,67 @@
#include "EngineTest.h"
#include "Containers/Map.h"
#include <boost/test/unit_test.hpp>
using namespace Seele;
BOOST_AUTO_TEST_SUITE(CachedMap)
BOOST_AUTO_TEST_CASE(insert_find_basic)
{
Map<int, int> map;
map[2] = 3;
map[1] = 5;
map[6] = 4;
map[4] = 7;
BOOST_REQUIRE_EQUAL(map[2], 3);
BOOST_REQUIRE_EQUAL(map[1], 5);
BOOST_REQUIRE_EQUAL(map[6], 4);
BOOST_REQUIRE_EQUAL(map[4], 7);
map[2] = 5;
map[4] = 4;
BOOST_REQUIRE_EQUAL(map[2], 5);
BOOST_REQUIRE_EQUAL(map[4], 4);
}
BOOST_AUTO_TEST_CASE(for_each)
{
Map<int, int> map;
map[2] = 3;
map[1] = 5;
map[6] = 4;
map[4] = 7;
int count = 0;
for (auto entry : map)
{
count++;
}
BOOST_REQUIRE_EQUAL(count, 4);
}
BOOST_AUTO_TEST_CASE(key_exists)
{
Map<int, int> map;
map[2] = 3;
BOOST_REQUIRE_EQUAL(map.exists(2), true);
BOOST_REQUIRE_EQUAL(map.exists(4), false);
}
BOOST_AUTO_TEST_CASE(custom_key)
{
struct Key
{
int id;
bool operator<(const Key& other) const
{
return id < other.id;
}
};
Map<Key, int> map;
map[Key{ 2 }] = 3;
map[Key{ 3 }] = 4;
BOOST_REQUIRE_EQUAL(map[Key{ 2 }], 3);
BOOST_REQUIRE_EQUAL(map[Key{ 3 }], 4);
}
BOOST_AUTO_TEST_SUITE_END()