module Tests; import Core.Buffer; import Core.Test; import Core.Types; import Core.Meta; import Core.Std; 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); } Core::test(SIZE_TYPES * limit, buffer.getLength()); buffer.clear(); Core::test(0, buffer.getLength()); buffer.add(20l); Core::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(Core::test(SIZE_TYPES * 10, buffer.getLength()) && Core::test(SIZE_TYPES * 10, buffer2.getLength()) && Core::test(SIZE_TYPES * 10, buffer3.getLength())) { Core::testTrue( memcmp(buffer.getData(), buffer2.getData(), SIZE_TYPES * 10) == 0); Core::testTrue( 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)); Core::test(0, buffer.getLength()); Core::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); Core::test(0, buffer.getLength()); Core::test(SIZE_TYPES * 10, buffer2.getLength()); } void testBuffer(bool light) { testAdd(light); testCopy(); testMoveConstruct(); testMove(); }