@@ -41,6 +41,8 @@ struct SceneToolsTest: TestSuite::Tester {
41
41
void combineObjectsShared ();
42
42
void combineObjectsPlaceholderFieldPlaceholder ();
43
43
void combineObjectSharedFieldPlaceholder ();
44
+ void combineImplicitNullMapping ();
45
+ void combineTrivialNullParent ();
44
46
45
47
void convertToSingleFunctionObjects ();
46
48
void convertToSingleFunctionObjectsFieldsToCopy ();
@@ -80,7 +82,10 @@ SceneToolsTest::SceneToolsTest() {
80
82
addTests ({&SceneToolsTest::combineAlignment,
81
83
&SceneToolsTest::combineObjectsShared,
82
84
&SceneToolsTest::combineObjectsPlaceholderFieldPlaceholder,
83
- &SceneToolsTest::combineObjectSharedFieldPlaceholder});
85
+ &SceneToolsTest::combineObjectSharedFieldPlaceholder,
86
+
87
+ &SceneToolsTest::combineImplicitNullMapping,
88
+ &SceneToolsTest::combineTrivialNullParent});
84
89
85
90
addInstancedTests ({&SceneToolsTest::convertToSingleFunctionObjects},
86
91
Containers::arraySize (ConvertToSingleFunctionObjectsData));
@@ -349,6 +354,47 @@ void SceneToolsTest::combineObjectSharedFieldPlaceholder() {
349
354
CORRADE_COMPARE (scene.field (SceneField::MeshMaterial).stride ()[0 ], 4 );
350
355
}
351
356
357
+ void SceneToolsTest::combineImplicitNullMapping () {
358
+ const Short parentFieldData[]{-1 , 0 , 0 };
359
+ const UnsignedByte meshFieldData[]{3 , 5 };
360
+
361
+ SceneData scene = Implementation::sceneCombine (SceneMappingType::UnsignedShort, 167 , Containers::arrayView ({
362
+ /* If the field has any flags, it shouldn't be treated as a
363
+ placeholder */
364
+ #warning or maybe it should be preserved? yeah
365
+ SceneFieldData{SceneField::Mesh, Containers::ArrayView<UnsignedByte>{nullptr , Containers::arraySize (meshFieldData)}, Containers::arrayView (meshFieldData), SceneFieldFlag::ImplicitMapping},
366
+ SceneFieldData{SceneField::Parent, Containers::ArrayView<UnsignedShort>{nullptr , Containers::arraySize (parentFieldData)}, Containers::arrayView (parentFieldData), SceneFieldFlag::ImplicitMapping}
367
+ }));
368
+
369
+ CORRADE_COMPARE (scene.mappingBound (), 167 );
370
+ CORRADE_COMPARE (scene.fieldCount (), 2 );
371
+
372
+ CORRADE_COMPARE (scene.fieldName (0 ), SceneField::Mesh);
373
+ CORRADE_COMPARE (scene.fieldFlags (0 ), SceneFieldFlag::ImplicitMapping);
374
+ CORRADE_COMPARE (scene.fieldType (0 ), SceneFieldType::UnsignedByte);
375
+ CORRADE_COMPARE (scene.fieldArraySize (0 ), 0 );
376
+ CORRADE_COMPARE_AS (scene.mapping <UnsignedShort>(0 ), Containers::arrayView<UnsignedShort>({
377
+ 0 , 1 , 2
378
+ }), TestSuite::Compare::Container);
379
+ CORRADE_COMPARE_AS (scene.field <UnsignedByte>(0 ),
380
+ Containers::arrayView (meshFieldData),
381
+ TestSuite::Compare::Container);
382
+
383
+ CORRADE_COMPARE (scene.fieldName (1 ), SceneField::Parent);
384
+ CORRADE_COMPARE (scene.fieldFlags (1 ), SceneFieldFlag::ImplicitMapping);
385
+ CORRADE_COMPARE (scene.fieldType (1 ), SceneFieldType::Short);
386
+ CORRADE_COMPARE (scene.fieldArraySize (1 ), 0 );
387
+ CORRADE_COMPARE_AS (scene.mapping <UnsignedShort>(1 ), Containers::arrayView<UnsignedShort>({
388
+ 0 , 1
389
+ }), TestSuite::Compare::Container);
390
+ CORRADE_COMPARE_AS (scene.field <UnsignedByte>(1 ),
391
+ Containers::arrayView (meshFieldData),
392
+ TestSuite::Compare::Container);
393
+ }
394
+
395
+ void SceneToolsTest::combineTrivialNullParent () {
396
+ }
397
+
352
398
void SceneToolsTest::convertToSingleFunctionObjects () {
353
399
auto && data = ConvertToSingleFunctionObjectsData[testCaseInstanceId ()];
354
400
setTestCaseDescription (data.name );
0 commit comments