| 1 | |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | #include <Magick++.h> |
|---|
| 9 | #include <string> |
|---|
| 10 | #include <iostream> |
|---|
| 11 | #include <list> |
|---|
| 12 | |
|---|
| 13 | using namespace std; |
|---|
| 14 | |
|---|
| 15 | using namespace Magick; |
|---|
| 16 | |
|---|
| 17 | int test( CoderInfo::MatchType isReadable_, |
|---|
| 18 | CoderInfo::MatchType isWritable_, |
|---|
| 19 | CoderInfo::MatchType isMultiFrame_ ) |
|---|
| 20 | { |
|---|
| 21 | int result = 0; |
|---|
| 22 | list<CoderInfo> coderList; |
|---|
| 23 | coderInfoList( &coderList, isReadable_, isWritable_, isMultiFrame_ ); |
|---|
| 24 | list<CoderInfo>::iterator entry = coderList.begin(); |
|---|
| 25 | while( entry != coderList.end() ) |
|---|
| 26 | { |
|---|
| 27 | |
|---|
| 28 | if ( isReadable_ != CoderInfo::AnyMatch && |
|---|
| 29 | (( entry->isReadable() && isReadable_ != CoderInfo::TrueMatch ) || |
|---|
| 30 | ( !entry->isReadable() && isReadable_ != CoderInfo::FalseMatch )) ) |
|---|
| 31 | { |
|---|
| 32 | cout << "Entry \"" |
|---|
| 33 | << entry->name() |
|---|
| 34 | << "\" has unexpected readablity state (" |
|---|
| 35 | << static_cast<int>(entry->isReadable()) |
|---|
| 36 | << ")" |
|---|
| 37 | << endl; |
|---|
| 38 | ++result; |
|---|
| 39 | } |
|---|
| 40 | |
|---|
| 41 | |
|---|
| 42 | if ( isWritable_ != CoderInfo::AnyMatch && |
|---|
| 43 | (( entry->isWritable() && isWritable_ != CoderInfo::TrueMatch ) || |
|---|
| 44 | ( !entry->isWritable() && isWritable_ != CoderInfo::FalseMatch )) ) |
|---|
| 45 | { |
|---|
| 46 | cout << "Entry \"" |
|---|
| 47 | << entry->name() |
|---|
| 48 | << "\" has unexpected writablity state (" |
|---|
| 49 | << static_cast<int>(entry->isWritable()) |
|---|
| 50 | << ")" |
|---|
| 51 | << endl; |
|---|
| 52 | ++result; |
|---|
| 53 | } |
|---|
| 54 | |
|---|
| 55 | |
|---|
| 56 | if ( isMultiFrame_ != CoderInfo::AnyMatch && |
|---|
| 57 | (( entry->isMultiFrame() && isMultiFrame_ != CoderInfo::TrueMatch ) || |
|---|
| 58 | ( !entry->isMultiFrame() && isMultiFrame_ != CoderInfo::FalseMatch )) ) |
|---|
| 59 | { |
|---|
| 60 | cout << "Entry \"" |
|---|
| 61 | << entry->name() |
|---|
| 62 | << "\" has unexpected multiframe state (" |
|---|
| 63 | << static_cast<int>(entry->isMultiFrame()) |
|---|
| 64 | << ")" |
|---|
| 65 | << endl; |
|---|
| 66 | ++result; |
|---|
| 67 | } |
|---|
| 68 | |
|---|
| 69 | entry++; |
|---|
| 70 | } |
|---|
| 71 | |
|---|
| 72 | return result; |
|---|
| 73 | } |
|---|
| 74 | |
|---|
| 75 | int main( int , char **argv) |
|---|
| 76 | { |
|---|
| 77 | |
|---|
| 78 | |
|---|
| 79 | InitializeMagick(*argv); |
|---|
| 80 | |
|---|
| 81 | int failures=0; |
|---|
| 82 | |
|---|
| 83 | try { |
|---|
| 84 | |
|---|
| 85 | CoderInfo coderInfo("GIF"); |
|---|
| 86 | if ( coderInfo.name() != string("GIF") ) |
|---|
| 87 | { |
|---|
| 88 | cout << "Unexpected coder name \"" |
|---|
| 89 | << coderInfo.name() |
|---|
| 90 | << "\"" |
|---|
| 91 | << endl; |
|---|
| 92 | ++failures; |
|---|
| 93 | } |
|---|
| 94 | |
|---|
| 95 | if( coderInfo.description() != string("CompuServe graphics interchange format") ) |
|---|
| 96 | { |
|---|
| 97 | cout << "Unexpected coder description \"" |
|---|
| 98 | << coderInfo.description() |
|---|
| 99 | << "\"" |
|---|
| 100 | << endl; |
|---|
| 101 | ++failures; |
|---|
| 102 | } |
|---|
| 103 | |
|---|
| 104 | failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch); |
|---|
| 105 | failures += test(CoderInfo::FalseMatch,CoderInfo::FalseMatch,CoderInfo::FalseMatch); |
|---|
| 106 | |
|---|
| 107 | failures += test(CoderInfo::TrueMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch); |
|---|
| 108 | failures += test(CoderInfo::FalseMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch); |
|---|
| 109 | |
|---|
| 110 | failures += test(CoderInfo::AnyMatch,CoderInfo::TrueMatch,CoderInfo::AnyMatch); |
|---|
| 111 | failures += test(CoderInfo::AnyMatch,CoderInfo::FalseMatch,CoderInfo::AnyMatch); |
|---|
| 112 | |
|---|
| 113 | failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::TrueMatch); |
|---|
| 114 | failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::FalseMatch); |
|---|
| 115 | } |
|---|
| 116 | catch( Exception &error_ ) |
|---|
| 117 | { |
|---|
| 118 | cout << "Caught exception: " << error_.what() << endl; |
|---|
| 119 | return 1; |
|---|
| 120 | } |
|---|
| 121 | catch( exception &error_ ) |
|---|
| 122 | { |
|---|
| 123 | cout << "Caught exception: " << error_.what() << endl; |
|---|
| 124 | return 1; |
|---|
| 125 | } |
|---|
| 126 | |
|---|
| 127 | if ( failures ) |
|---|
| 128 | { |
|---|
| 129 | cout << failures << " failures" << endl; |
|---|
| 130 | return 1; |
|---|
| 131 | } |
|---|
| 132 | |
|---|
| 133 | return 0; |
|---|
| 134 | } |
|---|