From 769cc9ee2af8c8690511bdbd63c38e9033af34ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 4 Feb 2023 17:19:36 +0100 Subject: [PATCH] Trade: rename SceneFieldData constructor tests for clarity. The 2D constructors in question are type-erased as well, so don't confuse them with 2D constructors that are for arrays. --- src/Magnum/Trade/SceneData.h | 4 +- src/Magnum/Trade/Test/SceneDataTest.cpp | 146 ++++++++++++------------ 2 files changed, 76 insertions(+), 74 deletions(-) diff --git a/src/Magnum/Trade/SceneData.h b/src/Magnum/Trade/SceneData.h index f6ab5175c..c33b78ae8 100644 --- a/src/Magnum/Trade/SceneData.h +++ b/src/Magnum/Trade/SceneData.h @@ -884,7 +884,7 @@ class MAGNUM_TRADE_EXPORT SceneFieldData { constexpr explicit SceneFieldData(SceneField name, SceneMappingType mappingType, const Containers::StridedArrayView1D& mappingData, SceneFieldType fieldType, const Containers::StridedArrayView1D& fieldData, SceneFieldFlags flags) noexcept: SceneFieldData{name, mappingType, mappingData, fieldType, fieldData, 0, flags} {} /** - * @brief Construct from 2D views + * @brief Construct from 2D type-erased views * @param name Field name * @param mappingData Object mapping data * @param fieldType Field type. `SceneFieldType::String*` @@ -990,7 +990,7 @@ class MAGNUM_TRADE_EXPORT SceneFieldData { constexpr explicit SceneFieldData(SceneField name, SceneMappingType mappingType, const Containers::StridedArrayView1D& mappingData, const char* stringData, SceneFieldType fieldType, const Containers::StridedArrayView1D& fieldData, SceneFieldFlags flags = {}) noexcept; /** - * @brief Construct a string field from 2D views + * @brief Construct a string field from 2D type-erased views * @param name Field name * @param mappingData Object mapping data * @param stringData String to which the field offset or range data diff --git a/src/Magnum/Trade/Test/SceneDataTest.cpp b/src/Magnum/Trade/Test/SceneDataTest.cpp index abd905916..93520510d 100644 --- a/src/Magnum/Trade/Test/SceneDataTest.cpp +++ b/src/Magnum/Trade/Test/SceneDataTest.cpp @@ -80,17 +80,19 @@ struct SceneDataTest: TestSuite::Tester { void constructFieldString(); void constructFieldStringNegativeStride(); void constructFieldStringNegativeOffset(); - void constructField2D(); - void constructField2DString(); void constructFieldTypeErased(); void constructFieldTypeErasedString(); + void constructFieldTypeErased2D(); + void constructFieldTypeErased2DString(); void constructFieldNonOwningArray(); void constructFieldOffsetOnly(); void constructFieldOffsetOnlyString(); void constructFieldOffsetOnlyStringNegativeStride(); void constructFieldArray(); - void constructFieldArray2D(); void constructFieldArrayTypeErased(); + /* no constructFieldArrayTypeErasedString(), strings can't be arrays */ + void constructFieldArrayTypeErased2D(); + /* no constructFieldArrayTypeErased2DString(), strings can't be arrays */ void constructFieldArrayOffsetOnly(); void constructFieldWrongType(); @@ -101,12 +103,12 @@ struct SceneDataTest: TestSuite::Tester { void constructFieldFlagNotAllowed(); void constructFieldWrongOffsetOnlyDataAccess(); void constructFieldWrongStringDataAccess(); - void constructField2DWrongSize(); - void constructField2DNonContiguous(); + void constructFieldTypeErased2DWrongSize(); + void constructFieldTypeErased2DNonContiguous(); void constructFieldArrayNonContiguous(); void constructFieldArrayNotAllowed(); - void constructFieldArray2DWrongSize(); - void constructFieldArray2DNonContiguous(); + void constructFieldArrayTypeErased2DWrongSize(); + void constructFieldArrayTypeErased2DNonContiguous(); void construct(); void constructZeroFields(); @@ -387,17 +389,17 @@ SceneDataTest::SceneDataTest() { &SceneDataTest::constructFieldString, &SceneDataTest::constructFieldStringNegativeStride, &SceneDataTest::constructFieldStringNegativeOffset, - &SceneDataTest::constructField2D, - &SceneDataTest::constructField2DString, &SceneDataTest::constructFieldTypeErased, &SceneDataTest::constructFieldTypeErasedString, + &SceneDataTest::constructFieldTypeErased2D, + &SceneDataTest::constructFieldTypeErased2DString, &SceneDataTest::constructFieldNonOwningArray, &SceneDataTest::constructFieldOffsetOnly, &SceneDataTest::constructFieldOffsetOnlyString, &SceneDataTest::constructFieldOffsetOnlyStringNegativeStride, &SceneDataTest::constructFieldArray, - &SceneDataTest::constructFieldArray2D, &SceneDataTest::constructFieldArrayTypeErased, + &SceneDataTest::constructFieldArrayTypeErased2D, &SceneDataTest::constructFieldArrayOffsetOnly, &SceneDataTest::constructFieldWrongType, @@ -408,12 +410,12 @@ SceneDataTest::SceneDataTest() { &SceneDataTest::constructFieldFlagNotAllowed, &SceneDataTest::constructFieldWrongOffsetOnlyDataAccess, &SceneDataTest::constructFieldWrongStringDataAccess, - &SceneDataTest::constructField2DWrongSize, - &SceneDataTest::constructField2DNonContiguous, + &SceneDataTest::constructFieldTypeErased2DWrongSize, + &SceneDataTest::constructFieldTypeErased2DNonContiguous, &SceneDataTest::constructFieldArrayNonContiguous, &SceneDataTest::constructFieldArrayNotAllowed, - &SceneDataTest::constructFieldArray2DWrongSize, - &SceneDataTest::constructFieldArray2DNonContiguous, + &SceneDataTest::constructFieldArrayTypeErased2DWrongSize, + &SceneDataTest::constructFieldArrayTypeErased2DNonContiguous, &SceneDataTest::construct, &SceneDataTest::constructZeroFields, @@ -994,7 +996,46 @@ void SceneDataTest::constructFieldStringNegativeOffset() { CORRADE_COMPARE(names.stringData(someArray), static_cast(data.nameString)); } -void SceneDataTest::constructField2D() { +void SceneDataTest::constructFieldTypeErased() { + const UnsignedLong scalingMappingData[3]{}; + const Vector3 scalingFieldData[3]; + SceneFieldData scalings{SceneField::Scaling, SceneMappingType::UnsignedLong, Containers::arrayCast(Containers::stridedArrayView(scalingMappingData)), SceneFieldType::Vector3, Containers::arrayCast(Containers::stridedArrayView(scalingFieldData)), SceneFieldFlag::OrderedMapping}; + CORRADE_COMPARE(scalings.flags(), SceneFieldFlag::OrderedMapping); + CORRADE_COMPARE(scalings.name(), SceneField::Scaling); + CORRADE_COMPARE(scalings.size(), 3); + CORRADE_COMPARE(scalings.mappingType(), SceneMappingType::UnsignedLong); + CORRADE_COMPARE(scalings.mappingData().size(), 3); + CORRADE_COMPARE(scalings.mappingData().stride(), sizeof(UnsignedLong)); + CORRADE_COMPARE(scalings.mappingData().data(), scalingMappingData); + CORRADE_COMPARE(scalings.fieldType(), SceneFieldType::Vector3); + CORRADE_COMPARE(scalings.fieldArraySize(), 0); + CORRADE_COMPARE(scalings.fieldData().size(), 3); + CORRADE_COMPARE(scalings.fieldData().stride(), sizeof(Vector3)); + CORRADE_COMPARE(scalings.fieldData().data(), scalingFieldData); +} + +void SceneDataTest::constructFieldTypeErasedString() { + const UnsignedLong nameMappingData[3]{}; + const char nameStringData[15]{}; + const Containers::Pair nameFieldData[3]{}; + + SceneFieldData names{sceneFieldCustom(25), SceneMappingType::UnsignedLong, Containers::arrayCast(Containers::stridedArrayView(nameMappingData)), nameStringData, SceneFieldType::StringRange16, Containers::arrayCast(Containers::stridedArrayView(nameFieldData)), SceneFieldFlag::NullTerminatedString|SceneFieldFlag::OrderedMapping}; + CORRADE_COMPARE(names.flags(), SceneFieldFlag::OrderedMapping|SceneFieldFlag::NullTerminatedString); + CORRADE_COMPARE(names.name(), sceneFieldCustom(25)); + CORRADE_COMPARE(names.size(), 3); + CORRADE_COMPARE(names.mappingType(), SceneMappingType::UnsignedLong); + CORRADE_COMPARE(names.mappingData().size(), 3); + CORRADE_COMPARE(names.mappingData().stride(), sizeof(UnsignedLong)); + CORRADE_COMPARE(names.mappingData().data(), nameMappingData); + CORRADE_COMPARE(names.fieldType(), SceneFieldType::StringRange16); + CORRADE_COMPARE(names.fieldArraySize(), 0); + CORRADE_COMPARE(names.fieldData().size(), 3); + CORRADE_COMPARE(names.fieldData().stride(), sizeof(UnsignedShort)*2); + CORRADE_COMPARE(names.fieldData().data(), nameFieldData); + CORRADE_COMPARE(names.stringData(), static_cast(nameStringData)); +} + +void SceneDataTest::constructFieldTypeErased2D() { char rotationMappingData[6*sizeof(UnsignedShort)]; char rotationFieldData[6*sizeof(Complexd)]; auto rotationMappingView = Containers::StridedArrayView2D{rotationMappingData, {6, sizeof(UnsignedShort)}}.every(2); @@ -1015,7 +1056,7 @@ void SceneDataTest::constructField2D() { CORRADE_COMPARE(rotations.fieldData().data(), rotationFieldView.data()); } -void SceneDataTest::constructField2DString() { +void SceneDataTest::constructFieldTypeErased2DString() { char nameMappingData[6*sizeof(UnsignedLong)]{}; char nameFieldData[6*sizeof(Containers::Pair)]{}; auto nameMappingView = Containers::StridedArrayView2D{nameMappingData, {6, sizeof(UnsignedLong)}}.every(2); @@ -1038,45 +1079,6 @@ void SceneDataTest::constructField2DString() { CORRADE_COMPARE(names.stringData(), static_cast(nameStringData)); } -void SceneDataTest::constructFieldTypeErased() { - const UnsignedLong scalingMappingData[3]{}; - const Vector3 scalingFieldData[3]; - SceneFieldData scalings{SceneField::Scaling, SceneMappingType::UnsignedLong, Containers::arrayCast(Containers::stridedArrayView(scalingMappingData)), SceneFieldType::Vector3, Containers::arrayCast(Containers::stridedArrayView(scalingFieldData)), SceneFieldFlag::OrderedMapping}; - CORRADE_COMPARE(scalings.flags(), SceneFieldFlag::OrderedMapping); - CORRADE_COMPARE(scalings.name(), SceneField::Scaling); - CORRADE_COMPARE(scalings.size(), 3); - CORRADE_COMPARE(scalings.mappingType(), SceneMappingType::UnsignedLong); - CORRADE_COMPARE(scalings.mappingData().size(), 3); - CORRADE_COMPARE(scalings.mappingData().stride(), sizeof(UnsignedLong)); - CORRADE_COMPARE(scalings.mappingData().data(), scalingMappingData); - CORRADE_COMPARE(scalings.fieldType(), SceneFieldType::Vector3); - CORRADE_COMPARE(scalings.fieldArraySize(), 0); - CORRADE_COMPARE(scalings.fieldData().size(), 3); - CORRADE_COMPARE(scalings.fieldData().stride(), sizeof(Vector3)); - CORRADE_COMPARE(scalings.fieldData().data(), scalingFieldData); -} - -void SceneDataTest::constructFieldTypeErasedString() { - const UnsignedLong nameMappingData[3]{}; - const char nameStringData[15]{}; - const Containers::Pair nameFieldData[3]{}; - - SceneFieldData names{sceneFieldCustom(25), SceneMappingType::UnsignedLong, Containers::arrayCast(Containers::stridedArrayView(nameMappingData)), nameStringData, SceneFieldType::StringRange16, Containers::arrayCast(Containers::stridedArrayView(nameFieldData)), SceneFieldFlag::NullTerminatedString|SceneFieldFlag::OrderedMapping}; - CORRADE_COMPARE(names.flags(), SceneFieldFlag::OrderedMapping|SceneFieldFlag::NullTerminatedString); - CORRADE_COMPARE(names.name(), sceneFieldCustom(25)); - CORRADE_COMPARE(names.size(), 3); - CORRADE_COMPARE(names.mappingType(), SceneMappingType::UnsignedLong); - CORRADE_COMPARE(names.mappingData().size(), 3); - CORRADE_COMPARE(names.mappingData().stride(), sizeof(UnsignedLong)); - CORRADE_COMPARE(names.mappingData().data(), nameMappingData); - CORRADE_COMPARE(names.fieldType(), SceneFieldType::StringRange16); - CORRADE_COMPARE(names.fieldArraySize(), 0); - CORRADE_COMPARE(names.fieldData().size(), 3); - CORRADE_COMPARE(names.fieldData().stride(), sizeof(UnsignedShort)*2); - CORRADE_COMPARE(names.fieldData().data(), nameFieldData); - CORRADE_COMPARE(names.stringData(), static_cast(nameStringData)); -} - void SceneDataTest::constructFieldNonOwningArray() { const SceneFieldData data[3]; Containers::Array array = sceneFieldDataNonOwningArray(data); @@ -1214,37 +1216,37 @@ void SceneDataTest::constructFieldArray() { CORRADE_VERIFY(cdata.fieldData().data() == ArrayOffsetFieldData); } -void SceneDataTest::constructFieldArray2D() { - char offsetMappingData[3*sizeof(UnsignedByte)]; - char offsetFieldData[3*4*sizeof(Int)]; - SceneFieldData data{sceneFieldCustom(34), Containers::StridedArrayView2D{offsetMappingData, {3, sizeof(UnsignedByte)}}, SceneFieldType::Int, Containers::StridedArrayView2D{offsetFieldData, {3, 4*sizeof(Int)}}, 4, SceneFieldFlag::ImplicitMapping}; - CORRADE_COMPARE(data.flags(), SceneFieldFlag::ImplicitMapping); +void SceneDataTest::constructFieldArrayTypeErased() { + UnsignedByte offsetMappingData[3]; + Int offsetFieldData[3*4]; + Containers::StridedArrayView1D offset{offsetFieldData, 3, 4*sizeof(Int)}; + SceneFieldData data{sceneFieldCustom(34), SceneMappingType::UnsignedByte, Containers::arrayCast(Containers::stridedArrayView(offsetMappingData)), SceneFieldType::Int, Containers::arrayCast(offset), 4, SceneFieldFlag::OrderedMapping}; + CORRADE_COMPARE(data.flags(), SceneFieldFlag::OrderedMapping); CORRADE_COMPARE(data.name(), sceneFieldCustom(34)); CORRADE_COMPARE(data.size(), 3); + CORRADE_COMPARE(data.fieldType(), SceneFieldType::Int); CORRADE_COMPARE(data.mappingType(), SceneMappingType::UnsignedByte); CORRADE_COMPARE(data.mappingData().size(), 3); CORRADE_COMPARE(data.mappingData().stride(), sizeof(UnsignedByte)); CORRADE_VERIFY(data.mappingData().data() == offsetMappingData); - CORRADE_COMPARE(data.fieldType(), SceneFieldType::Int); CORRADE_COMPARE(data.fieldArraySize(), 4); CORRADE_COMPARE(data.fieldData().size(), 3); CORRADE_COMPARE(data.fieldData().stride(), 4*sizeof(Int)); CORRADE_VERIFY(data.fieldData().data() == offsetFieldData); } -void SceneDataTest::constructFieldArrayTypeErased() { - UnsignedByte offsetMappingData[3]; - Int offsetFieldData[3*4]; - Containers::StridedArrayView1D offset{offsetFieldData, 3, 4*sizeof(Int)}; - SceneFieldData data{sceneFieldCustom(34), SceneMappingType::UnsignedByte, Containers::arrayCast(Containers::stridedArrayView(offsetMappingData)), SceneFieldType::Int, Containers::arrayCast(offset), 4, SceneFieldFlag::OrderedMapping}; - CORRADE_COMPARE(data.flags(), SceneFieldFlag::OrderedMapping); +void SceneDataTest::constructFieldArrayTypeErased2D() { + char offsetMappingData[3*sizeof(UnsignedByte)]; + char offsetFieldData[3*4*sizeof(Int)]; + SceneFieldData data{sceneFieldCustom(34), Containers::StridedArrayView2D{offsetMappingData, {3, sizeof(UnsignedByte)}}, SceneFieldType::Int, Containers::StridedArrayView2D{offsetFieldData, {3, 4*sizeof(Int)}}, 4, SceneFieldFlag::ImplicitMapping}; + CORRADE_COMPARE(data.flags(), SceneFieldFlag::ImplicitMapping); CORRADE_COMPARE(data.name(), sceneFieldCustom(34)); CORRADE_COMPARE(data.size(), 3); - CORRADE_COMPARE(data.fieldType(), SceneFieldType::Int); CORRADE_COMPARE(data.mappingType(), SceneMappingType::UnsignedByte); CORRADE_COMPARE(data.mappingData().size(), 3); CORRADE_COMPARE(data.mappingData().stride(), sizeof(UnsignedByte)); CORRADE_VERIFY(data.mappingData().data() == offsetMappingData); + CORRADE_COMPARE(data.fieldType(), SceneFieldType::Int); CORRADE_COMPARE(data.fieldArraySize(), 4); CORRADE_COMPARE(data.fieldData().size(), 3); CORRADE_COMPARE(data.fieldData().stride(), 4*sizeof(Int)); @@ -1506,7 +1508,7 @@ void SceneDataTest::constructFieldWrongStringDataAccess() { "Trade::SceneFieldData::stringData(): the field is Trade::SceneFieldType::Quaternion, not a string\n"); } -void SceneDataTest::constructField2DWrongSize() { +void SceneDataTest::constructFieldTypeErased2DWrongSize() { CORRADE_SKIP_IF_NO_ASSERT(); char mappingData[5*sizeof(UnsignedInt)]; @@ -1541,7 +1543,7 @@ void SceneDataTest::constructField2DWrongSize() { "Trade::SceneFieldData: second field view dimension size 2 doesn't match Trade::SceneFieldType::StringRange16\n"); } -void SceneDataTest::constructField2DNonContiguous() { +void SceneDataTest::constructFieldTypeErased2DNonContiguous() { CORRADE_SKIP_IF_NO_ASSERT(); char mappingData[8*sizeof(UnsignedInt)]; @@ -1642,7 +1644,7 @@ void SceneDataTest::constructFieldArrayNotAllowed() { "Trade::SceneFieldData: Trade::SceneField::Rotation can't be an array field\n"); } -void SceneDataTest::constructFieldArray2DWrongSize() { +void SceneDataTest::constructFieldArrayTypeErased2DWrongSize() { CORRADE_SKIP_IF_NO_ASSERT(); char rotationMappingData[4*sizeof(UnsignedInt)]; @@ -1658,7 +1660,7 @@ void SceneDataTest::constructFieldArray2DWrongSize() { "Trade::SceneFieldData: second field view dimension size 8 doesn't match Trade::SceneFieldType::Int and field array size 3\n"); } -void SceneDataTest::constructFieldArray2DNonContiguous() { +void SceneDataTest::constructFieldArrayTypeErased2DNonContiguous() { CORRADE_SKIP_IF_NO_ASSERT(); char offsetMappingData[18*sizeof(UnsignedInt)];