Implemented basic containers and ref pointers
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
target_sources(Seele_unit_tests
|
||||
PRIVATE
|
||||
EngineTest.h
|
||||
EngineTest.cpp)
|
||||
target_include_directories(Seele_unit_tests PUBLIC ./)
|
||||
add_subdirectory(Containers/)
|
||||
@@ -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()
|
||||
@@ -0,0 +1,4 @@
|
||||
target_sources(Seele_unit_tests
|
||||
PRIVATE
|
||||
Array.cpp
|
||||
Map.cpp)
|
||||
@@ -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()
|
||||
@@ -0,0 +1,42 @@
|
||||
#include "EngineTest.h"
|
||||
#include "MinimalEngine.h"
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
using namespace Seele;
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(RefPtr)
|
||||
|
||||
struct TestStruct
|
||||
{
|
||||
TestStruct()
|
||||
: data(10)
|
||||
{
|
||||
}
|
||||
~TestStruct()
|
||||
{
|
||||
}
|
||||
uint32 data;
|
||||
};
|
||||
BOOST_AUTO_TEST_CASE(basic_refcount)
|
||||
{
|
||||
{
|
||||
Seele::RefPtr<TestStruct> ptr = new TestStruct();
|
||||
BOOST_REQUIRE_EQUAL(ptr->data, 10);
|
||||
{
|
||||
Seele::RefPtr<TestStruct> secondPtr = ptr;
|
||||
BOOST_REQUIRE_EQUAL(secondPtr->data, 10);
|
||||
BOOST_REQUIRE_EQUAL(ptr->data, 10);
|
||||
}
|
||||
BOOST_REQUIRE_EQUAL(ptr->data, 10);
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(unique_ptr)
|
||||
{
|
||||
UniquePtr<TestStruct> uptr = new TestStruct();
|
||||
UniquePtr<TestStruct> uptr2 = std::move(uptr);
|
||||
BOOST_REQUIRE_EQUAL(uptr2->data, 10);
|
||||
BOOST_REQUIRE_EQUAL(uptr.isValid(), false);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
Reference in New Issue
Block a user