2020-02-25 00:44:40 +01:00
|
|
|
#include "EngineTest.h"
|
|
|
|
|
#include "Containers/Array.h"
|
2020-10-14 01:49:43 +02:00
|
|
|
#include "MinimalEngine.h"
|
2021-12-02 13:00:03 +01:00
|
|
|
#include <algorithm>
|
2020-03-16 13:29:17 +01:00
|
|
|
#include <time.h>
|
|
|
|
|
#include <chrono>
|
2020-02-25 00:44:40 +01:00
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
|
|
|
|
|
|
using namespace Seele;
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_SUITE(Array_Suite)
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(empty_constructur)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
Array<uint8> array;
|
|
|
|
|
BOOST_CHECK_EQUAL(array.size(), 0);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(initialial_size)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
Array<uint8> array(3);
|
|
|
|
|
BOOST_CHECK_EQUAL(array.size(), 3);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(resize)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
Array<uint8> array;
|
|
|
|
|
array.add(2);
|
|
|
|
|
array.add(3);
|
|
|
|
|
BOOST_CHECK_EQUAL(array.size(), 2);
|
|
|
|
|
array.resize(5);
|
|
|
|
|
BOOST_CHECK_EQUAL(array.size(), 5);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
BOOST_AUTO_TEST_CASE(clear)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
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);
|
|
|
|
|
array.add(2);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
BOOST_AUTO_TEST_CASE(remove_keeporder)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
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);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(remove_swap)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
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);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(remove_iterator)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
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);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(remove_iterator_keep_order)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
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);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(random_access)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
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_CASE(copy)
|
|
|
|
|
{
|
|
|
|
|
Array<uint8> array;
|
|
|
|
|
array.add(0);
|
|
|
|
|
array.add(1);
|
|
|
|
|
array.add(2);
|
|
|
|
|
array.add(3);
|
|
|
|
|
Array<uint8> copy = array;
|
|
|
|
|
BOOST_CHECK_EQUAL_COLLECTIONS(array.begin(), array.end(), copy.begin(), copy.end());
|
|
|
|
|
Array<uint8> copy2(copy);
|
|
|
|
|
BOOST_CHECK_EQUAL_COLLECTIONS(array.begin(), array.end(), copy2.begin(), copy2.end());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class BaseElement
|
|
|
|
|
{
|
|
|
|
|
uint64 test;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class BaseContainer
|
|
|
|
|
{
|
|
|
|
|
Array<BaseElement> elements;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class DerivedContainer : public BaseContainer
|
|
|
|
|
{
|
|
|
|
|
uint64 test;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(virtual_classes)
|
|
|
|
|
{
|
|
|
|
|
Array<DerivedContainer> array(64);
|
|
|
|
|
for(uint32 i = 0; i < 100; ++i)
|
|
|
|
|
{
|
|
|
|
|
Array<DerivedContainer> copy = array;
|
|
|
|
|
BOOST_CHECK_EQUAL(array.size(), copy.size());
|
|
|
|
|
}
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
2020-10-14 01:49:43 +02:00
|
|
|
class TestStruct
|
|
|
|
|
{
|
|
|
|
|
public:
|
2022-01-12 14:40:26 +01:00
|
|
|
uint32 data;
|
|
|
|
|
~TestStruct()
|
|
|
|
|
{
|
|
|
|
|
data = 1;
|
|
|
|
|
}
|
2020-10-14 01:49:43 +02:00
|
|
|
};
|
|
|
|
|
DECLARE_REF(TestStruct);
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(refptr_interaction)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
uint32* dataPtr;
|
|
|
|
|
{
|
|
|
|
|
PTestStruct test = new TestStruct();
|
|
|
|
|
test->data = 32123;
|
|
|
|
|
dataPtr = &test->data;
|
|
|
|
|
{
|
|
|
|
|
Array<PTestStruct> arr(1);
|
|
|
|
|
arr[0] = test;
|
|
|
|
|
}
|
|
|
|
|
BOOST_CHECK_EQUAL(test->data, 32123);
|
|
|
|
|
}
|
2020-10-14 01:49:43 +02:00
|
|
|
}
|
|
|
|
|
|
2020-02-25 00:44:40 +01:00
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_SUITE(StaticArray_Suite)
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(empty_constructur)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
StaticArray<uint8, 2> array;
|
|
|
|
|
BOOST_CHECK_EQUAL(array.size(), 2);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(initialial_size)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
StaticArray<uint8, 3> array(3);
|
|
|
|
|
BOOST_CHECK_EQUAL(array.size(), 3);
|
|
|
|
|
BOOST_CHECK_EQUAL(array[1], 3);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(random_access)
|
|
|
|
|
{
|
2022-01-12 14:40:26 +01:00
|
|
|
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);
|
2020-02-25 00:44:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|