@ -139,6 +139,11 @@ struct SceneDataTest: TestSuite::Tester {
void constructDeprecatedBoth2DAnd3D ( ) ;
# endif
# ifndef CORRADE_TARGET_32BIT
void constructMappingOver4GB ( ) ;
void constructFieldOver4GB ( ) ;
# endif
void constructDuplicateField ( ) ;
void constructDuplicateCustomField ( ) ;
void constructInconsistentMappingType ( ) ;
@ -489,6 +494,11 @@ SceneDataTest::SceneDataTest() {
addTests ( { & SceneDataTest : : constructDeprecatedBoth2DAnd3D } ) ;
# endif
# ifndef CORRADE_TARGET_32BIT
addTests ( { & SceneDataTest : : constructMappingOver4GB ,
& SceneDataTest : : constructFieldOver4GB } ) ;
# endif
addTests ( { & SceneDataTest : : constructDuplicateField ,
& SceneDataTest : : constructDuplicateCustomField ,
& SceneDataTest : : constructInconsistentMappingType ,
@ -3533,6 +3543,30 @@ void SceneDataTest::constructDeprecatedBoth2DAnd3D() {
}
# endif
# ifndef CORRADE_TARGET_32BIT
void SceneDataTest : : constructMappingOver4GB ( ) {
Containers : : ArrayView < UnsignedInt > mappingData { reinterpret_cast < UnsignedInt * > ( 0xdeadbeef ) , 3000ull * 1000 * 1000 } ;
Containers : : StridedArrayView1D < UnsignedByte > fieldData { mappingData , reinterpret_cast < UnsignedByte * > ( mappingData . data ( ) ) , 3000ull * 1000 * 1000 , 0 } ;
SceneData data { SceneMappingType : : UnsignedInt , 1 , { } , mappingData , {
SceneFieldData { sceneFieldCustom ( 15 ) , mappingData , fieldData } ,
} } ;
CORRADE_COMPARE ( data . mapping ( 0 ) . data ( ) , mappingData . begin ( ) ) ;
CORRADE_COMPARE ( data . mapping < UnsignedInt > ( 0 ) . size ( ) , mappingData . size ( ) ) ;
}
void SceneDataTest : : constructFieldOver4GB ( ) {
Containers : : ArrayView < UnsignedInt > fieldData { reinterpret_cast < UnsignedInt * > ( 0xdeadbeef ) , 3000ull * 1000 * 1000 } ;
Containers : : StridedArrayView1D < UnsignedByte > mappingData { fieldData , reinterpret_cast < UnsignedByte * > ( fieldData . data ( ) ) , 3000ull * 1000 * 1000 , 0 } ;
SceneData data { SceneMappingType : : UnsignedByte , 1 , { } , fieldData , {
SceneFieldData { sceneFieldCustom ( 15 ) , mappingData , fieldData } ,
} } ;
CORRADE_COMPARE ( data . field ( 0 ) . data ( ) , fieldData . begin ( ) ) ;
CORRADE_COMPARE ( data . field < UnsignedInt > ( 0 ) . size ( ) , fieldData . size ( ) ) ;
}
# endif
void SceneDataTest : : constructDuplicateField ( ) {
CORRADE_SKIP_IF_NO_ASSERT ( ) ;