diff --git a/src/Magnum/Trade/Test/SceneDataTest.cpp b/src/Magnum/Trade/Test/SceneDataTest.cpp index e454ea095..f3f093b4f 100644 --- a/src/Magnum/Trade/Test/SceneDataTest.cpp +++ b/src/Magnum/Trade/Test/SceneDataTest.cpp @@ -113,9 +113,9 @@ struct SceneDataTest: TestSuite::Tester { void construct(); void constructZeroFields(); void constructZeroObjects(); - void constructSpecialStrides(); void constructNotOwned(); template void constructString(); + void constructSpecialStrides(); #ifdef MAGNUM_BUILD_DEPRECATED void constructDeprecated(); void constructDeprecatedBoth2DAnd3D(); @@ -419,17 +419,16 @@ SceneDataTest::SceneDataTest() { &SceneDataTest::construct, &SceneDataTest::constructZeroFields, - &SceneDataTest::constructZeroObjects, - &SceneDataTest::constructSpecialStrides}); + &SceneDataTest::constructZeroObjects}); addInstancedTests({&SceneDataTest::constructNotOwned}, Containers::arraySize(NotOwnedData)); - addTests({ - &SceneDataTest::constructString, - &SceneDataTest::constructString, - &SceneDataTest::constructString, - &SceneDataTest::constructString}); + addTests({&SceneDataTest::constructString, + &SceneDataTest::constructString, + &SceneDataTest::constructString, + &SceneDataTest::constructString, + &SceneDataTest::constructSpecialStrides}); #ifdef MAGNUM_BUILD_DEPRECATED addInstancedTests({&SceneDataTest::constructDeprecated}, @@ -2157,59 +2156,6 @@ void SceneDataTest::constructZeroObjects() { CORRADE_COMPARE(scene.mapping(SceneField::MeshMaterial).data(), nullptr); } -void SceneDataTest::constructSpecialStrides() { - Containers::StridedArrayView1D broadcastedData; - Containers::StridedArrayView1D nonBroadcastedData; - Containers::ArrayTuple data{ - {NoInit, 1, broadcastedData}, - {NoInit, 4, nonBroadcastedData} - }; - - broadcastedData[0] = 15; - Utility::copy({1, 2, 3, 4}, nonBroadcastedData); - - SceneFieldData broadcastedMapping{sceneFieldCustom(38), - broadcastedData.broadcasted<0>(4), nonBroadcastedData}; - SceneFieldData broadcastedField{sceneFieldCustom(39), - nonBroadcastedData, broadcastedData.broadcasted<0>(4)}; - SceneFieldData flippedField{sceneFieldCustom(40), - nonBroadcastedData.flipped<0>(), nonBroadcastedData.flipped<0>()}; - SceneFieldData flippedFieldOffsetOnly{sceneFieldCustom(41), - 4, SceneMappingType::UnsignedShort, std::size_t(static_cast(nonBroadcastedData.flipped<0>().data()) - data.data()), -2, - SceneFieldType::UnsignedShort, std::size_t(static_cast(nonBroadcastedData.flipped<0>().data()) - data.data()), -2}; - SceneData scene{SceneMappingType::UnsignedShort, 8, std::move(data), { - broadcastedMapping, broadcastedField, flippedField, flippedFieldOffsetOnly - }}; - - CORRADE_COMPARE_AS(scene.mapping(0), - Containers::arrayView({15, 15, 15, 15}), - TestSuite::Compare::Container); - CORRADE_COMPARE_AS(scene.field(0), - Containers::arrayView({1, 2, 3, 4}), - TestSuite::Compare::Container); - - CORRADE_COMPARE_AS(scene.mapping(1), - Containers::arrayView({1, 2, 3, 4}), - TestSuite::Compare::Container); - CORRADE_COMPARE_AS(scene.field(1), - Containers::arrayView({15, 15, 15, 15}), - TestSuite::Compare::Container); - - CORRADE_COMPARE_AS(scene.mapping(2), - Containers::arrayView({4, 3, 2, 1}), - TestSuite::Compare::Container); - CORRADE_COMPARE_AS(scene.field(2), - Containers::arrayView({4, 3, 2, 1}), - TestSuite::Compare::Container); - - CORRADE_COMPARE_AS(scene.mapping(3), - Containers::arrayView({4, 3, 2, 1}), - TestSuite::Compare::Container); - CORRADE_COMPARE_AS(scene.field(3), - Containers::arrayView({4, 3, 2, 1}), - TestSuite::Compare::Container); -} - void SceneDataTest::constructNotOwned() { auto&& instanceData = NotOwnedData[testCaseInstanceId()]; setTestCaseDescription(instanceData.name); @@ -2563,6 +2509,59 @@ template void SceneDataTest::constructString() { } } +void SceneDataTest::constructSpecialStrides() { + Containers::StridedArrayView1D broadcastedData; + Containers::StridedArrayView1D nonBroadcastedData; + Containers::ArrayTuple data{ + {NoInit, 1, broadcastedData}, + {NoInit, 4, nonBroadcastedData} + }; + + broadcastedData[0] = 15; + Utility::copy({1, 2, 3, 4}, nonBroadcastedData); + + SceneFieldData broadcastedMapping{sceneFieldCustom(38), + broadcastedData.broadcasted<0>(4), nonBroadcastedData}; + SceneFieldData broadcastedField{sceneFieldCustom(39), + nonBroadcastedData, broadcastedData.broadcasted<0>(4)}; + SceneFieldData flippedField{sceneFieldCustom(40), + nonBroadcastedData.flipped<0>(), nonBroadcastedData.flipped<0>()}; + SceneFieldData flippedFieldOffsetOnly{sceneFieldCustom(41), + 4, SceneMappingType::UnsignedShort, std::size_t(static_cast(nonBroadcastedData.flipped<0>().data()) - data.data()), -2, + SceneFieldType::UnsignedShort, std::size_t(static_cast(nonBroadcastedData.flipped<0>().data()) - data.data()), -2}; + SceneData scene{SceneMappingType::UnsignedShort, 8, std::move(data), { + broadcastedMapping, broadcastedField, flippedField, flippedFieldOffsetOnly + }}; + + CORRADE_COMPARE_AS(scene.mapping(0), + Containers::arrayView({15, 15, 15, 15}), + TestSuite::Compare::Container); + CORRADE_COMPARE_AS(scene.field(0), + Containers::arrayView({1, 2, 3, 4}), + TestSuite::Compare::Container); + + CORRADE_COMPARE_AS(scene.mapping(1), + Containers::arrayView({1, 2, 3, 4}), + TestSuite::Compare::Container); + CORRADE_COMPARE_AS(scene.field(1), + Containers::arrayView({15, 15, 15, 15}), + TestSuite::Compare::Container); + + CORRADE_COMPARE_AS(scene.mapping(2), + Containers::arrayView({4, 3, 2, 1}), + TestSuite::Compare::Container); + CORRADE_COMPARE_AS(scene.field(2), + Containers::arrayView({4, 3, 2, 1}), + TestSuite::Compare::Container); + + CORRADE_COMPARE_AS(scene.mapping(3), + Containers::arrayView({4, 3, 2, 1}), + TestSuite::Compare::Container); + CORRADE_COMPARE_AS(scene.field(3), + Containers::arrayView({4, 3, 2, 1}), + TestSuite::Compare::Container); +} + #ifdef MAGNUM_BUILD_DEPRECATED void SceneDataTest::constructDeprecated() { auto&& data = ChildrenDeprecatedData[testCaseInstanceId()];