void BufferGLTest::map() { #ifdef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported<Extensions::GL::OES::mapbuffer>()) CORRADE_SKIP(Extensions::GL::OES::mapbuffer::string() + std::string(" is not supported")); #endif Buffer buffer; constexpr char data[] = {2, 7, 5, 13, 25}; buffer.setData(data, BufferUsage::StaticDraw); #ifndef MAGNUM_TARGET_GLES char* contents = buffer.map<char>(Buffer::MapAccess::ReadWrite); #else char* contents = buffer.map<char>(Buffer::MapAccess::WriteOnly); #endif MAGNUM_VERIFY_NO_ERROR(); CORRADE_VERIFY(contents); #ifndef MAGNUM_TARGET_GLES2 CORRADE_COMPARE(contents[2], 5); #endif contents[3] = 107; CORRADE_VERIFY(buffer.unmap()); MAGNUM_VERIFY_NO_ERROR(); /** @todo How to verify the contents in ES? */ #ifndef MAGNUM_TARGET_GLES Containers::Array<char> changedContents = buffer.data<char>(); CORRADE_COMPARE(changedContents.size(), 5); CORRADE_COMPARE(changedContents[3], 107); #endif }
void BufferGLTest::mapRange() { #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported<Extensions::GL::ARB::map_buffer_range>()) CORRADE_SKIP(Extensions::GL::ARB::map_buffer_range::string() + std::string(" is not supported")); #elif defined(MAGNUM_TARGET_GLES2) if(!Context::current()->isExtensionSupported<Extensions::GL::EXT::map_buffer_range>()) CORRADE_SKIP(Extensions::GL::EXT::map_buffer_range::string() + std::string(" is not supported")); #endif constexpr char data[] = {2, 7, 5, 13, 25}; Buffer buffer; buffer.setData(data, BufferUsage::StaticDraw); char* contents = buffer.map<char>(1, 4, Buffer::MapFlag::Read|Buffer::MapFlag::Write); MAGNUM_VERIFY_NO_ERROR(); CORRADE_VERIFY(contents); CORRADE_COMPARE(contents[2], 13); contents[3] = 107; CORRADE_VERIFY(buffer.unmap()); MAGNUM_VERIFY_NO_ERROR(); /** @todo How to verify the contents in ES? */ #ifndef MAGNUM_TARGET_GLES Containers::Array<char> changedContents = buffer.data<char>(); CORRADE_COMPARE(changedContents.size(), 5); CORRADE_COMPARE(changedContents[4], 107); #endif }
void ArrayTest::constructMove() { Array a(5); CORRADE_VERIFY(a); const int* const ptr = a; Array b(std::move(a)); CORRADE_VERIFY(a == nullptr); CORRADE_VERIFY(b == ptr); CORRADE_COMPARE(a.size(), 0); CORRADE_COMPARE(b.size(), 5); Array c; c = std::move(b); CORRADE_VERIFY(b == nullptr); CORRADE_VERIFY(c == ptr); CORRADE_COMPARE(b.size(), 0); CORRADE_COMPARE(c.size(), 5); }
void WavImporterTest::mono16() { WavImporter importer; CORRADE_VERIFY(importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "mono16.wav"))); CORRADE_COMPARE(importer.format(), Buffer::Format::Mono16); CORRADE_COMPARE(importer.frequency(), 44000); Containers::Array<unsigned char> data = importer.data(); CORRADE_COMPARE(data.size(), 4); CORRADE_COMPARE(data[0], 0x1d); CORRADE_COMPARE(data[1], 0x10); CORRADE_COMPARE(data[2], 0x71); CORRADE_COMPARE(data[3], 0xC5); }
void WavImporterTest::stereo8() { WavImporter importer; CORRADE_VERIFY(importer.openFile(Utility::Directory::join(WAVAUDIOIMPORTER_TEST_DIR, "stereo8.wav"))); CORRADE_COMPARE(importer.format(), Buffer::Format::Stereo8); CORRADE_COMPARE(importer.frequency(), 96000); Containers::Array<unsigned char> data = importer.data(); CORRADE_COMPARE(data.size(), 4); CORRADE_COMPARE(data[0], 0xde); CORRADE_COMPARE(data[1], 0xfe); CORRADE_COMPARE(data[2], 0xca); CORRADE_COMPARE(data[3], 0x7e); }
crimild::Bool encode( std::string key, containers::Array< T, U > &a ) { crimild::Size N = a.size(); encodeArrayBegin( key, N ); a.each( [ this, key ]( T &elem, crimild::Size i ) { auto itemKey = beginEncodingArrayElement( key, i ); encode( itemKey, elem ); endEncodingArrayElement( key, i ); }); encodeArrayEnd( key ); return true; }
void BufferGLTest::copy() { Buffer buffer1; constexpr char data[] = {2, 7, 5, 13, 25}; buffer1.setData(data, BufferUsage::StaticCopy); Buffer buffer2; buffer2.setData({nullptr, 5}, BufferUsage::StaticRead); Buffer::copy(buffer1, buffer2, 1, 2, 3); MAGNUM_VERIFY_NO_ERROR(); /** @todo How to verify the contents in ES? */ #ifndef MAGNUM_TARGET_GLES const Containers::Array<char> subContents = buffer2.subData<char>(2, 3); CORRADE_COMPARE(subContents.size(), 3); CORRADE_COMPARE(subContents[0], 7); CORRADE_COMPARE(subContents[1], 5); CORRADE_COMPARE(subContents[2], 13); #endif }
void BufferGLTest::mapRangeExplicitFlush() { #ifndef MAGNUM_TARGET_GLES if(!Context::current()->isExtensionSupported<Extensions::GL::ARB::map_buffer_range>()) CORRADE_SKIP(Extensions::GL::ARB::map_buffer_range::string() + std::string(" is not supported")); #elif defined(MAGNUM_TARGET_GLES2) if(!Context::current()->isExtensionSupported<Extensions::GL::EXT::map_buffer_range>()) CORRADE_SKIP(Extensions::GL::EXT::map_buffer_range::string() + std::string(" is not supported")); #endif constexpr char data[] = {2, 7, 5, 13, 25}; Buffer buffer; buffer.setData(data, BufferUsage::StaticDraw); /* Map, set byte, don't flush and unmap */ char* contents = buffer.map<char>(1, 4, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit); CORRADE_VERIFY(contents); contents[2] = 99; CORRADE_VERIFY(buffer.unmap()); MAGNUM_VERIFY_NO_ERROR(); /* Unflushed range _might_ not be changed, thus nothing to test */ /* Map, set byte, flush and unmap */ contents = buffer.map<char>(1, 4, Buffer::MapFlag::Write|Buffer::MapFlag::FlushExplicit); CORRADE_VERIFY(contents); contents[3] = 107; buffer.flushMappedRange(3, 1); MAGNUM_VERIFY_NO_ERROR(); CORRADE_VERIFY(buffer.unmap()); MAGNUM_VERIFY_NO_ERROR(); /* Flushed range should be changed */ /** @todo How to verify the contents in ES? */ #ifndef MAGNUM_TARGET_GLES Containers::Array<char> changedContents = buffer.data<char>(); CORRADE_COMPARE(changedContents.size(), 5); CORRADE_COMPARE(changedContents[4], 107); #endif }
void BufferGLTest::data() { Buffer buffer; /* Plain array */ constexpr Int data[] = {2, 7, 5, 13, 25}; buffer.setData({data, 5}, BufferUsage::StaticDraw); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /* STL vector */ std::vector<Int> data2{2, 7, 5, 13, 25}; buffer.setData(data2, BufferUsage::StaticDraw); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /* STL array */ std::array<Int, 5> data3{{2, 7, 5, 13, 25}}; buffer.setData(data3, BufferUsage::StaticDraw); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /** @todo How to verify the contents in ES? */ #ifndef MAGNUM_TARGET_GLES const Containers::Array<Int> contents = buffer.data<Int>(); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(contents.size(), 5); CORRADE_COMPARE(contents[0], 2); CORRADE_COMPARE(contents[1], 7); CORRADE_COMPARE(contents[2], 5); CORRADE_COMPARE(contents[3], 13); CORRADE_COMPARE(contents[4], 25); #endif /* Plain array */ constexpr Int subData[] = {125, 3, 15}; buffer.setSubData(4, {subData, 3}); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /* STL vector */ std::vector<Int> subData2{125, 3, 15}; buffer.setSubData(4, subData2); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /* STL array */ std::array<Int, 3> subData3{{125, 3, 15}}; buffer.setSubData(4, subData3); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(buffer.size(), 5*4); /** @todo How to verify the contents in ES? */ #ifndef MAGNUM_TARGET_GLES const Containers::Array<Int> subContents = buffer.subData<Int>(4, 3); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(subContents.size(), 3); CORRADE_COMPARE(subContents[0], 125); CORRADE_COMPARE(subContents[1], 3); CORRADE_COMPARE(subContents[2], 15); #endif }