#include "../Tests.hpp" #include "core/Buffer.hpp" #include "core/Test.hpp" static constexpr size_t SIZE_TYPES = sizeof(int) + sizeof(long) + sizeof(float) + sizeof(double); static void testAdd(bool light) { Core::Buffer buffer; size_t limit = light ? 1000 : 100'000; for(size_t i = 0; i < limit; i++) { buffer.add(5); buffer.add(5L); buffer.add(5.0f); buffer.add(5.0); } TEST(SIZE_TYPES * limit, buffer.getLength()); buffer.clear(); TEST(0, buffer.getLength()); buffer.add(20l); TEST(sizeof(long), buffer.getLength()); } static void testCopy() { Core::Buffer buffer; for(int i = 0; i < 10; i++) { buffer.add(5); buffer.add(5L); buffer.add(5.0f); buffer.add(5.0); } Core::Buffer buffer2 = buffer; Core::Buffer buffer3; buffer3 = buffer; if(TEST(SIZE_TYPES * 10, buffer.getLength()) && TEST(SIZE_TYPES * 10, buffer2.getLength()) && TEST(SIZE_TYPES * 10, buffer3.getLength())) { TEST_TRUE( memcmp(buffer.getData(), buffer2.getData(), SIZE_TYPES * 10) == 0); TEST_TRUE( memcmp(buffer.getData(), buffer3.getData(), SIZE_TYPES * 10) == 0); } } static void testMoveConstruct() { Core::Buffer buffer; for(int i = 0; i < 10; i++) { buffer.add(5); buffer.add(5L); buffer.add(5.0f); buffer.add(5.0); } Core::Buffer buffer2(Core::move(buffer)); TEST(0, buffer.getLength()); TEST(SIZE_TYPES * 10, buffer2.getLength()); } static void testMove() { Core::Buffer buffer; for(int i = 0; i < 10; i++) { buffer.add(5); buffer.add(5L); buffer.add(5.0f); buffer.add(5.0); } Core::Buffer buffer2; buffer2 = Core::move(buffer); TEST(0, buffer.getLength()); TEST(SIZE_TYPES * 10, buffer2.getLength()); } void testBuffer(bool light) { testAdd(light); testCopy(); testMoveConstruct(); testMove(); }