@ -70,6 +70,9 @@ struct AbstractImporterTest: TestSuite::Tester {
void setFlagsNotImplemented ( ) ;
void setFlagsNotImplemented ( ) ;
void openData ( ) ;
void openData ( ) ;
# ifdef MAGNUM_BUILD_DEPRECATED
void openDataDeprecatedFallback ( ) ;
# endif
void openFileAsData ( ) ;
void openFileAsData ( ) ;
void openFileAsDataNotFound ( ) ;
void openFileAsDataNotFound ( ) ;
@ -308,6 +311,9 @@ AbstractImporterTest::AbstractImporterTest() {
& AbstractImporterTest : : setFlagsNotImplemented ,
& AbstractImporterTest : : setFlagsNotImplemented ,
& AbstractImporterTest : : openData ,
& AbstractImporterTest : : openData ,
# ifdef MAGNUM_BUILD_DEPRECATED
& AbstractImporterTest : : openDataDeprecatedFallback ,
# endif
& AbstractImporterTest : : openFileAsData ,
& AbstractImporterTest : : openFileAsData ,
& AbstractImporterTest : : openFileAsDataNotFound ,
& AbstractImporterTest : : openFileAsDataNotFound ,
@ -630,12 +636,43 @@ void AbstractImporterTest::openData() {
bool doIsOpened ( ) const override { return _opened ; }
bool doIsOpened ( ) const override { return _opened ; }
void doClose ( ) override { _opened = false ; }
void doClose ( ) override { _opened = false ; }
void doOpenData ( Containers : : Array < char > & & data , DataFlags dataFlags ) override {
CORRADE_COMPARE_AS ( data ,
Containers : : arrayView ( { ' \xa5 ' } ) ,
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( dataFlags , DataFlags { } ) ;
/* The array should have a custom no-op deleter */
CORRADE_VERIFY ( data . deleter ( ) ) ;
_opened = true ;
}
bool _opened = false ;
} importer ;
CORRADE_VERIFY ( ! importer . isOpened ( ) ) ;
const char a5 = ' \xa5 ' ;
CORRADE_VERIFY ( importer . openData ( { & a5 , 1 } ) ) ;
CORRADE_VERIFY ( importer . isOpened ( ) ) ;
importer . close ( ) ;
CORRADE_VERIFY ( ! importer . isOpened ( ) ) ;
}
# ifdef MAGNUM_BUILD_DEPRECATED
void AbstractImporterTest : : openDataDeprecatedFallback ( ) {
struct : AbstractImporter {
ImporterFeatures doFeatures ( ) const override { return ImporterFeature : : OpenData ; }
bool doIsOpened ( ) const override { return _opened ; }
void doClose ( ) override { _opened = false ; }
CORRADE_IGNORE_DEPRECATED_PUSH
void doOpenData ( Containers : : ArrayView < const char > data ) override {
void doOpenData ( Containers : : ArrayView < const char > data ) override {
CORRADE_COMPARE_AS ( data ,
CORRADE_COMPARE_AS ( data ,
Containers : : arrayView ( { ' \xa5 ' } ) ,
Containers : : arrayView ( { ' \xa5 ' } ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
_opened = true ;
_opened = true ;
}
}
CORRADE_IGNORE_DEPRECATED_POP
bool _opened = false ;
bool _opened = false ;
} importer ;
} importer ;
@ -648,6 +685,7 @@ void AbstractImporterTest::openData() {
importer . close ( ) ;
importer . close ( ) ;
CORRADE_VERIFY ( ! importer . isOpened ( ) ) ;
CORRADE_VERIFY ( ! importer . isOpened ( ) ) ;
}
}
# endif
void AbstractImporterTest : : openFileAsData ( ) {
void AbstractImporterTest : : openFileAsData ( ) {
struct : AbstractImporter {
struct : AbstractImporter {
@ -655,10 +693,13 @@ void AbstractImporterTest::openFileAsData() {
bool doIsOpened ( ) const override { return _opened ; }
bool doIsOpened ( ) const override { return _opened ; }
void doClose ( ) override { _opened = false ; }
void doClose ( ) override { _opened = false ; }
void doOpenData ( Containers : : ArrayView < const char > data ) override {
void doOpenData ( Containers : : Array < char > & & data , DataFlags dataFlags ) override {
CORRADE_COMPARE_AS ( data ,
CORRADE_COMPARE_AS ( data ,
Containers : : arrayView ( { ' \xa5 ' } ) ,
Containers : : arrayView ( { ' \xa5 ' } ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( dataFlags , DataFlag : : Owned | DataFlag : : Mutable ) ;
/* I.e., we can take over the array, it's not just a view */
CORRADE_VERIFY ( ! data . deleter ( ) ) ;
_opened = true ;
_opened = true ;
}
}
@ -680,7 +721,7 @@ void AbstractImporterTest::openFileAsDataNotFound() {
bool doIsOpened ( ) const override { return _opened ; }
bool doIsOpened ( ) const override { return _opened ; }
void doClose ( ) override { _opened = false ; }
void doClose ( ) override { _opened = false ; }
void doOpenData ( Containers : : ArrayView < const char > ) override {
void doOpenData ( Containers : : Array < char > & & , DataFlags ) override {
_opened = true ;
_opened = true ;
}
}
@ -948,7 +989,7 @@ void AbstractImporterTest::setFileCallbackOpenFileDirectly() {
_opened = true ;
_opened = true ;
}
}
void doOpenData ( Containers : : ArrayView < const char > ) override {
void doOpenData ( Containers : : Array < char > & & , DataFlags ) override {
/* Shouldn't be called because FileCallback is supported */
/* Shouldn't be called because FileCallback is supported */
openDataCalledNotSureWhy = true ;
openDataCalledNotSureWhy = true ;
}
}
@ -982,10 +1023,11 @@ void AbstractImporterTest::setFileCallbackOpenFileThroughBaseImplementation() {
AbstractImporter : : doOpenFile ( filename ) ;
AbstractImporter : : doOpenFile ( filename ) ;
}
}
void doOpenData ( Containers : : ArrayView < const char > data ) override {
void doOpenData ( Containers : : Array < char > & & data , DataFlags dataFlags ) override {
CORRADE_COMPARE_AS ( data ,
CORRADE_COMPARE_AS ( data ,
Containers : : arrayView ( { ' \xb0 ' } ) ,
Containers : : arrayView ( { ' \xb0 ' } ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( dataFlags , DataFlags { } ) ;
_opened = true ;
_opened = true ;
}
}
@ -1058,10 +1100,11 @@ void AbstractImporterTest::setFileCallbackOpenFileAsData() {
openFileCalled = true ;
openFileCalled = true ;
}
}
void doOpenData ( Containers : : ArrayView < const char > data ) override {
void doOpenData ( Containers : : Array < char > & & data , DataFlags dataFlags ) override {
CORRADE_COMPARE_AS ( data ,
CORRADE_COMPARE_AS ( data ,
Containers : : arrayView ( { ' \xb0 ' } ) ,
Containers : : arrayView ( { ' \xb0 ' } ) ,
TestSuite : : Compare : : Container ) ;
TestSuite : : Compare : : Container ) ;
CORRADE_COMPARE ( dataFlags , DataFlags { } ) ;
_opened = true ;
_opened = true ;
}
}