@ -42,6 +42,8 @@ class InterleaveTest: public Corrade::TestSuite::Tester {
void strideGaps ( ) ;
void write ( ) ;
void writeGaps ( ) ;
void interleaveInto ( ) ;
} ;
InterleaveTest : : InterleaveTest ( ) {
@ -50,7 +52,9 @@ InterleaveTest::InterleaveTest() {
& InterleaveTest : : stride ,
& InterleaveTest : : strideGaps ,
& InterleaveTest : : write ,
& InterleaveTest : : writeGaps } ) ;
& InterleaveTest : : writeGaps ,
& InterleaveTest : : interleaveInto } ) ;
}
void InterleaveTest : : attributeCount ( ) {
@ -137,6 +141,41 @@ void InterleaveTest::writeGaps() {
}
}
void InterleaveTest : : interleaveInto ( ) {
std : : size_t attributeCount ;
std : : size_t stride ;
auto data = Containers : : Array < char > : : from (
0x11 , 0x33 , 0x55 , 0x77 , 0x11 , 0x33 , 0x55 , 0x77 , 0x11 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x55 , 0x77 , 0x11 , 0x33 , 0x55 , 0x77 , 0x11 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x55 , 0x77 , 0x11 , 0x33 , 0x55 , 0x77 , 0x11 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x55 , 0x77 , 0x11 , 0x33 , 0x55 , 0x77 , 0x11 , 0x33 , 0x55 , 0x77
) ;
std : : tie ( attributeCount , stride ) = MeshTools : : interleaveInto ( data ,
2 , std : : vector < Int > { 4 , 5 , 6 , 7 } , 1 , std : : vector < Short > { 0 , 1 , 2 , 3 } , 3 ) ;
CORRADE_COMPARE ( attributeCount , std : : size_t { 4 } ) ;
CORRADE_COMPARE ( stride , std : : size_t { 12 } ) ;
if ( ! Utility : : Endianness : : isBigEndian ( ) ) {
/* _______gap, int___________________, _gap, short_____, _____________gap */
CORRADE_COMPARE ( std : : vector < char > ( data . begin ( ) , data . end ( ) ) , ( std : : vector < char > {
0x11 , 0x33 , 0x04 , 0x00 , 0x00 , 0x00 , 0x55 , 0x00 , 0x00 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x05 , 0x00 , 0x00 , 0x00 , 0x55 , 0x01 , 0x00 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x06 , 0x00 , 0x00 , 0x00 , 0x55 , 0x02 , 0x00 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x07 , 0x00 , 0x00 , 0x00 , 0x55 , 0x03 , 0x00 , 0x33 , 0x55 , 0x77
} ) ) ;
} else {
/* _______gap, ___________________int, _gap, _____short, _____________gap */
CORRADE_COMPARE ( std : : vector < char > ( data . begin ( ) , data . end ( ) ) , ( std : : vector < char > {
0x11 , 0x33 , 0x00 , 0x00 , 0x00 , 0x04 , 0x55 , 0x00 , 0x00 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x00 , 0x00 , 0x00 , 0x05 , 0x55 , 0x00 , 0x01 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x00 , 0x00 , 0x00 , 0x06 , 0x55 , 0x00 , 0x02 , 0x33 , 0x55 , 0x77 ,
0x11 , 0x33 , 0x00 , 0x00 , 0x00 , 0x07 , 0x55 , 0x00 , 0x03 , 0x33 , 0x55 , 0x77
} ) ) ;
}
}
} } }
CORRADE_TEST_MAIN ( Magnum : : MeshTools : : Test : : InterleaveTest )