Browse Source

MeshTools: test impl-specific vert fmats directly in interleave() also.

Hrm th mssags r gttng t lng t ft on a single line.
pull/547/head
Vladimír Vondruš 4 years ago
parent
commit
7c17557d15
  1. 20
      src/Magnum/MeshTools/Test/InterleaveTest.cpp

20
src/Magnum/MeshTools/Test/InterleaveTest.cpp

@ -161,9 +161,12 @@ InterleaveTest::InterleaveTest() {
&InterleaveTest::interleaveMeshDataExtraOriginalEmpty, &InterleaveTest::interleaveMeshDataExtraOriginalEmpty,
&InterleaveTest::interleaveMeshDataExtraWrongCount, &InterleaveTest::interleaveMeshDataExtraWrongCount,
&InterleaveTest::interleaveMeshDataExtraOffsetOnly, &InterleaveTest::interleaveMeshDataExtraOffsetOnly,
&InterleaveTest::interleaveMeshDataExtraImplementationSpecificVertexFormat, &InterleaveTest::interleaveMeshDataExtraImplementationSpecificVertexFormat});
&InterleaveTest::interleaveMeshDataAlreadyInterleavedMove,
&InterleaveTest::interleaveMeshDataAlreadyInterleavedMoveNonOwned, addInstancedTests({&InterleaveTest::interleaveMeshDataAlreadyInterleavedMove},
Containers::arraySize(AlreadyInterleavedData));
addTests({&InterleaveTest::interleaveMeshDataAlreadyInterleavedMoveNonOwned,
&InterleaveTest::interleaveMeshDataNothing}); &InterleaveTest::interleaveMeshDataNothing});
} }
@ -1233,6 +1236,9 @@ void InterleaveTest::interleaveMeshDataExtraImplementationSpecificVertexFormat()
} }
void InterleaveTest::interleaveMeshDataAlreadyInterleavedMove() { void InterleaveTest::interleaveMeshDataAlreadyInterleavedMove() {
auto&& data = AlreadyInterleavedData[testCaseInstanceId()];
setTestCaseDescription(data.name);
Containers::Array<char> indexData{4}; Containers::Array<char> indexData{4};
auto indexView = Containers::arrayCast<UnsignedShort>(indexData); auto indexView = Containers::arrayCast<UnsignedShort>(indexData);
Containers::Array<char> vertexData{3*24}; Containers::Array<char> vertexData{3*24};
@ -1242,17 +1248,17 @@ void InterleaveTest::interleaveMeshDataAlreadyInterleavedMove() {
reinterpret_cast<Vector3*>(vertexData.data() + 10), 3, 24}; reinterpret_cast<Vector3*>(vertexData.data() + 10), 3, 24};
auto attributeData = Containers::array({ auto attributeData = Containers::array({
Trade::MeshAttributeData{Trade::MeshAttribute::Position, positionView}, Trade::MeshAttributeData{Trade::MeshAttribute::Position, positionView},
Trade::MeshAttributeData{Trade::MeshAttribute::Normal, normalView} Trade::MeshAttributeData{Trade::MeshAttribute::Normal, data.vertexFormat, normalView}
}); });
const Trade::MeshAttributeData* attributePointer = attributeData; const Trade::MeshAttributeData* attributePointer = attributeData;
Trade::MeshData data{MeshPrimitive::TriangleFan, Trade::MeshData mesh{MeshPrimitive::TriangleFan,
std::move(indexData), Trade::MeshIndexData{indexView}, std::move(indexData), Trade::MeshIndexData{indexView},
std::move(vertexData), std::move(attributeData)}; std::move(vertexData), std::move(attributeData)};
CORRADE_VERIFY(MeshTools::isInterleaved(data)); CORRADE_VERIFY(MeshTools::isInterleaved(mesh));
/* {} just to cover the initializer_list overload :P */ /* {} just to cover the initializer_list overload :P */
Trade::MeshData interleaved = MeshTools::interleave(std::move(data), {}); Trade::MeshData interleaved = MeshTools::interleave(std::move(mesh), {});
CORRADE_VERIFY(MeshTools::isInterleaved(interleaved)); CORRADE_VERIFY(MeshTools::isInterleaved(interleaved));
CORRADE_COMPARE(interleaved.indexCount(), 2); CORRADE_COMPARE(interleaved.indexCount(), 2);
CORRADE_COMPARE(interleaved.attributeCount(), 2); CORRADE_COMPARE(interleaved.attributeCount(), 2);

Loading…
Cancel
Save