You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.8 KiB
135 lines
3.8 KiB
// 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;
|
|
}
|