@@ -41,6 +41,9 @@ struct CombineTest: TestSuite::Tester {
41
41
void objectsShared ();
42
42
void objectsPlaceholderFieldPlaceholder ();
43
43
void objectSharedFieldPlaceholder ();
44
+
45
+ void implicitNullMapping ();
46
+ void trivialNullParent ();
44
47
};
45
48
46
49
struct {
@@ -60,7 +63,10 @@ CombineTest::CombineTest() {
60
63
addTests ({&CombineTest::alignment,
61
64
&CombineTest::objectsShared,
62
65
&CombineTest::objectsPlaceholderFieldPlaceholder,
63
- &CombineTest::objectSharedFieldPlaceholder});
66
+ &CombineTest::objectSharedFieldPlaceholder,
67
+
68
+ &CombineTest::implicitNullMapping,
69
+ &CombineTest::trivialNullParent});
64
70
}
65
71
66
72
using namespace Math ::Literals;
@@ -324,6 +330,47 @@ void CombineTest::objectSharedFieldPlaceholder() {
324
330
CORRADE_COMPARE (scene.field (Trade::SceneField::MeshMaterial).stride ()[0 ], 4 );
325
331
}
326
332
333
+ void CombineTest::implicitNullMapping () {
334
+ const Short parentFieldData[]{-1 , 0 , 0 };
335
+ const UnsignedByte meshFieldData[]{3 , 5 };
336
+
337
+ Trade::SceneData scene = Implementation::combine (Trade::SceneMappingType::UnsignedShort, 167 , Containers::arrayView ({
338
+ /* If the field has any flags, it shouldn't be treated as a
339
+ placeholder */
340
+ #warning or maybe it should be preserved? yeah
341
+ Trade::SceneFieldData{Trade::SceneField::Mesh, Containers::ArrayView<UnsignedByte>{nullptr , Containers::arraySize (meshFieldData)}, Containers::arrayView (meshFieldData), Trade::SceneFieldFlag::ImplicitMapping},
342
+ Trade::SceneFieldData{Trade::SceneField::Parent, Containers::ArrayView<UnsignedShort>{nullptr , Containers::arraySize (parentFieldData)}, Containers::arrayView (parentFieldData), Trade::SceneFieldFlag::ImplicitMapping}
343
+ }));
344
+
345
+ CORRADE_COMPARE (scene.mappingBound (), 167 );
346
+ CORRADE_COMPARE (scene.fieldCount (), 2 );
347
+
348
+ CORRADE_COMPARE (scene.fieldName (0 ), Trade::SceneField::Mesh);
349
+ CORRADE_COMPARE (scene.fieldFlags (0 ), Trade::SceneFieldFlag::ImplicitMapping);
350
+ CORRADE_COMPARE (scene.fieldType (0 ), Trade::SceneFieldType::UnsignedByte);
351
+ CORRADE_COMPARE (scene.fieldArraySize (0 ), 0 );
352
+ CORRADE_COMPARE_AS (scene.mapping <UnsignedShort>(0 ), Containers::arrayView<UnsignedShort>({
353
+ 0 , 1 , 2
354
+ }), TestSuite::Compare::Container);
355
+ CORRADE_COMPARE_AS (scene.field <UnsignedByte>(0 ),
356
+ Containers::arrayView (meshFieldData),
357
+ TestSuite::Compare::Container);
358
+
359
+ CORRADE_COMPARE (scene.fieldName (1 ), Trade::SceneField::Parent);
360
+ CORRADE_COMPARE (scene.fieldFlags (1 ), Trade::SceneFieldFlag::ImplicitMapping);
361
+ CORRADE_COMPARE (scene.fieldType (1 ), Trade::SceneFieldType::Short);
362
+ CORRADE_COMPARE (scene.fieldArraySize (1 ), 0 );
363
+ CORRADE_COMPARE_AS (scene.mapping <UnsignedShort>(1 ), Containers::arrayView<UnsignedShort>({
364
+ 0 , 1
365
+ }), TestSuite::Compare::Container);
366
+ CORRADE_COMPARE_AS (scene.field <UnsignedByte>(1 ),
367
+ Containers::arrayView (meshFieldData),
368
+ TestSuite::Compare::Container);
369
+ }
370
+
371
+ void CombineTest::trivialNullParent () {
372
+ }
373
+
327
374
}}}}
328
375
329
376
CORRADE_TEST_MAIN (Magnum::SceneTools::Test::CombineTest)
0 commit comments