// This may look like C code, but it is really -*- C++ -*- // // Copyright Bob Friesenhahn, 2001, 2002, 2003 // // Test Magick::CoderInfo class and Magick::coderInfoList // #include <Magick++.h> #include <string> #include <iostream> #include <list> using namespace std; using namespace Magick; int test( CoderInfo::MatchType isReadable_, CoderInfo::MatchType isWritable_, CoderInfo::MatchType isMultiFrame_ ) { int result = 0; list<CoderInfo> coderList; coderInfoList( &coderList, isReadable_, isWritable_, isMultiFrame_ ); list<CoderInfo>::iterator entry = coderList.begin(); while( entry != coderList.end() ) { // Readable if ( isReadable_ != CoderInfo::AnyMatch && (( entry->isReadable() && isReadable_ != CoderInfo::TrueMatch ) || ( !entry->isReadable() && isReadable_ != CoderInfo::FalseMatch )) ) { cout << "Entry \"" << entry->name() << "\" has unexpected readablity state (" << static_cast<int>(entry->isReadable()) << ")" << endl; ++result; } // Writable if ( isWritable_ != CoderInfo::AnyMatch && (( entry->isWritable() && isWritable_ != CoderInfo::TrueMatch ) || ( !entry->isWritable() && isWritable_ != CoderInfo::FalseMatch )) ) { cout << "Entry \"" << entry->name() << "\" has unexpected writablity state (" << static_cast<int>(entry->isWritable()) << ")" << endl; ++result; } // MultiFrame if ( isMultiFrame_ != CoderInfo::AnyMatch && (( entry->isMultiFrame() && isMultiFrame_ != CoderInfo::TrueMatch ) || ( !entry->isMultiFrame() && isMultiFrame_ != CoderInfo::FalseMatch )) ) { cout << "Entry \"" << entry->name() << "\" has unexpected multiframe state (" << static_cast<int>(entry->isMultiFrame()) << ")" << endl; ++result; } entry++; } return result; } int main( int /*argc*/, char **argv) { // Initialize ImageMagick install location for Windows InitializeMagick(*argv); int failures=0; try { CoderInfo coderInfo("GIF"); if ( coderInfo.name() != string("GIF") ) { cout << "Unexpected coder name \"" << coderInfo.name() << "\"" << endl; ++failures; } if( coderInfo.description() != string("CompuServe graphics interchange format") ) { cout << "Unexpected coder description \"" << coderInfo.description() << "\"" << endl; ++failures; } failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch); failures += test(CoderInfo::FalseMatch,CoderInfo::FalseMatch,CoderInfo::FalseMatch); failures += test(CoderInfo::TrueMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch); failures += test(CoderInfo::FalseMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch); failures += test(CoderInfo::AnyMatch,CoderInfo::TrueMatch,CoderInfo::AnyMatch); failures += test(CoderInfo::AnyMatch,CoderInfo::FalseMatch,CoderInfo::AnyMatch); failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::TrueMatch); failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::FalseMatch); } catch( Exception &error_ ) { cout << "Caught exception: " << error_.what() << endl; return 1; } catch( exception &error_ ) { cout << "Caught exception: " << error_.what() << endl; return 1; } if ( failures ) { cout << failures << " failures" << endl; return 1; } return 0; }