1 // This may look like C code, but it is really -*- C++ -*- 2 // 3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003 4 // 5 // Tests for setting/getting Magick::Image attributes 6 // 7 8 #include <Magick++.h> 9 #include <string> 10 #include <iostream> 11 12 using namespace std; 13 14 using namespace Magick; 15 16 int main( int /*argc*/, char ** argv) 17 { 18 19 // Initialize ImageMagick install location for Windows 20 InitializeMagick(*argv); 21 22 volatile int failures=0; 23 24 try { 25 26 size_t columns = 640; 27 size_t rows = 480; 28 Geometry geometry(columns,rows); 29 Color canvasColor( "red" ); 30 Image image( geometry, canvasColor); 31 32 // 33 // antiAlias 34 // 35 36 // Test default value 37 if ( image.textAntiAlias() != true ) 38 { 39 ++failures; 40 cout << "Line: " << __LINE__ << ", textAntiAlias default not true" << endl; 41 } 42 43 // Test setting false 44 image.textAntiAlias( false ); 45 if ( image.textAntiAlias() != false ) 46 { 47 ++failures; 48 cout << "Line: " << __LINE__ << ", textAntiAlias not false" << endl; 49 } 50 51 // Test setting true 52 image.textAntiAlias( true ); 53 if ( image.textAntiAlias() != true ) 54 { 55 ++failures; 56 cout << "Line: " << __LINE__ << ", textAntiAlias not true" << endl; 57 } 58 59 // 60 // adjoin 61 // 62 63 // Test default value 64 if ( image.adjoin() != true ) 65 { 66 ++failures; 67 cout << "Line: " << __LINE__ 68 << ", adjoin default not 'true' as expected" << endl; 69 } 70 71 // Test setting false 72 image.adjoin( false ); 73 if ( image.adjoin() != false ) 74 { 75 ++failures; 76 cout << "Line: " << __LINE__ << ", adjoin failed set to 'false'" << endl; 77 } 78 79 // Test setting true 80 image.adjoin( true ); 81 if ( image.adjoin() != true ) 82 { 83 ++failures; 84 cout << "Line: " << __LINE__ << ", adjoin failed set to 'true'" << endl; 85 } 86 87 // 88 // animationDelay 89 // 90 91 // Test default value 92 if ( image.animationDelay() != 0 ) 93 { 94 ++failures; 95 cout << "Line: " << __LINE__ << ", animationDelay default (" 96 << image.animationDelay() 97 << ") not 0 as expected" << endl; 98 } 99 100 // Test setting to 0 101 image.animationDelay( 0 ); 102 if ( image.animationDelay() != 0 ) 103 { 104 ++failures; 105 cout << "Line: " << __LINE__ 106 << ", failed to set animationDelay to 0" << endl; 107 } 108 109 // Test setting to 100 110 image.animationDelay( 100 ); 111 if ( image.animationDelay() != 100 ) 112 { 113 ++failures; 114 cout << "Line: " << __LINE__ 115 << ", failed to set animationDelay to 100" << endl; 116 } 117 image.animationDelay(0); 118 119 // 120 // animationIterations 121 // 122 123 // Test default value 124 if ( image.animationIterations() != 0 ) 125 { 126 ++failures; 127 cout << "Line: " << __LINE__ 128 << ", animationIterations default (" 129 << image.animationIterations() 130 << ") not 0 as expected" << endl; 131 } 132 133 // Test setting to 0 134 image.animationIterations( 0 ); 135 if ( image.animationIterations() != 0 ) 136 { 137 ++failures; 138 cout << "Line: " << __LINE__ 139 << ", failed to set animationIterations to 0" << endl; 140 } 141 142 // Test setting to 100 143 image.animationIterations( 100 ); 144 if ( image.animationIterations() != 100 ) 145 { 146 ++failures; 147 cout << "Line: " << __LINE__ 148 << ", failed to set animationIterations to 100" << endl; 149 } 150 image.animationIterations( 0 ); 151 152 // 153 // backgroundColor 154 // 155 156 // Test default value. 157 if ( image.backgroundColor() != string(ColorRGB("white")) ) 158 { 159 ++failures; 160 cout << "Line: " << __LINE__ << ", backgroundColor default (" 161 << string(image.backgroundColor()) 162 << ") is incorrect" << endl; 163 } 164 165 // Test setting to blue 166 image.backgroundColor("blue"); 167 if ( !image.backgroundColor().isValid() ) 168 { 169 ++failures; 170 cout << "Line: " << __LINE__ << ", backgroundColor (" 171 << string(image.backgroundColor()) 172 << ") failed set to 'blue'" << endl; 173 } 174 else 175 if ( string(image.backgroundColor()) != "#0000FF" && 176 string(image.backgroundColor()) != "#00000000FFFF" && 177 string(image.backgroundColor()) != "#0000000000000000FFFFFFFF" ) 178 { 179 ++failures; 180 cout << "Line: " << __LINE__ << ", backgroundColor (" 181 << string(image.backgroundColor()) << ") is incorrect" 182 << endl; 183 } 184 185 // Test setting using hex color 186 image.backgroundColor("#00AAFF"); 187 if ( !image.backgroundColor().isValid() ) 188 { 189 ++failures; 190 cout << "Line: " << __LINE__ << ", backgroundColor (" 191 << string(image.backgroundColor()) 192 << ") is incorrectly invalid" << endl; 193 } 194 else 195 if ( string(image.backgroundColor()) != "#00AAFF" && 196 string(image.backgroundColor()) != "#0000AAAAFFFF" && 197 string(image.backgroundColor()) != "#00000000AAAAAAAAFFFFFFFF" ) 198 { 199 ++failures; 200 cout << "Line: " << __LINE__ 201 << ", backgroundColor (" 202 << string(image.backgroundColor()) 203 << ") is incorrect" 204 << endl; 205 } 206 207 // 208 // backgroundTexture 209 // 210 211 // Test default value 212 if ( image.backgroundTexture() != "" ) 213 { 214 ++failures; 215 cout << "Line: " << __LINE__ << ", backgroundTexture default (" 216 << image.backgroundTexture() 217 << ") is incorrect" << endl; 218 } 219 220 // Test setting/getting value 221 image.backgroundTexture("afile.jpg"); 222 if ( image.backgroundTexture() != "afile.jpg" ) 223 { 224 ++failures; 225 cout << "Line: " << __LINE__ << ", backgroundTexture (" 226 << image.backgroundTexture() 227 << ") is incorrect" << endl; 228 } 229 230 // Test setting back to default 231 image.backgroundTexture(""); 232 if ( image.backgroundTexture() != "" ) 233 { 234 ++failures; 235 cout << "Line: " << __LINE__ 236 << ", backgroundTexture (" 237 << image.backgroundTexture() 238 << ") failed to set to \"\"" << endl; 239 } 240 241 // 242 // baseColumns 243 // 244 if ( image.baseColumns() != columns ) 245 { 246 ++failures; 247 cout << "Line: " << __LINE__ 248 << ", baseColumns (" 249 << image.baseColumns() 250 << ") is not equal to " 251 << columns 252 << " as expected" 253 << endl; 254 } 255 256 257 // 258 // baseFilename 259 // 260 // Base filename is color for xc images 261 if ( image.baseFilename() != "xc:#FF0000" && 262 image.baseFilename() != "xc:#FFFF00000000" && 263 image.baseFilename() != "xc:#FFFFFFFF0000000000000000") 264 { 265 ++failures; 266 cout << "Line: " << __LINE__ 267 << ", baseFilename (" 268 << image.baseFilename() 269 << ") is incorrect" 270 << endl; 271 } 272 273 // 274 // baseRows 275 // 276 if ( image.baseRows() != rows ) 277 { 278 ++failures; 279 cout << "Line: " << __LINE__ 280 << ", baseRows (" 281 << image.baseRows() 282 << ") != rows (" 283 << rows 284 << ")" 285 << endl; 286 } 287 288 // 289 // borderColor 290 // 291 if ( image.borderColor() != ColorRGB("#dfdfdf") ) 292 { 293 ++failures; 294 cout << "Line: " << __LINE__ 295 << ", borderColor default (" 296 << string(image.borderColor()) 297 << ") is incorrect" << endl; 298 } 299 300 image.borderColor("#FF0000"); 301 if ( image.borderColor() != Color("#FF0000") ) 302 { 303 ++failures; 304 cout << "Line: " << __LINE__ 305 << ", failed to set borderColor (" 306 << string(image.borderColor()) 307 << ")" << endl; 308 } 309 310 image.borderColor("black"); 311 if ( image.borderColor() != Color("#000000") ) 312 { 313 ++failures; 314 cout << "Line: " << __LINE__ 315 << ", failed to set borderColor (" 316 << string(image.borderColor()) 317 << ")" 318 << endl; 319 } 320 321 // 322 // boxColor 323 // 324 image.boxColor("#FF0000"); 325 if ( image.boxColor() != Color("#FF0000") ) 326 { 327 ++failures; 328 cout << "Line: " << __LINE__ 329 << ", failed to set boxColor (" 330 << string(image.boxColor()) 331 << ")" 332 << endl; 333 } 334 335 image.boxColor("black"); 336 if ( image.boxColor() != Color("#000000") ) 337 { 338 ++failures; 339 cout << "Line: " << __LINE__ 340 << ", failed to set boxColor (" 341 << string(image.boxColor()) 342 << ") to #000000" 343 << endl; 344 } 345 346 // 347 // chromaBluePrimary 348 // 349 { 350 // Test default setting 351 double x, y, z; 352 image.chromaBluePrimary(&x, &y, &z); 353 if ( x == 0.0f || y == 0.0f ) 354 { 355 ++failures; 356 cout << "Line: " << __LINE__ 357 << ", chromaBluePrimary x/y defaults are zero" 358 << endl; 359 } 360 361 // Test set/get 362 image.chromaBluePrimary(50, 100, 150 ); 363 image.chromaBluePrimary(&x, &y, &z); 364 if ( x != 50 || y != 100 || z != 150 ) 365 { 366 ++failures; 367 cout << "Line: " << __LINE__ 368 << ", chromaBluePrimary x/y failed set/get" << endl; 369 } 370 } 371 372 // 373 // chromaGreenPrimary 374 // 375 { 376 // Test default setting 377 double x, y, z; 378 image.chromaGreenPrimary(&x, &y, &z); 379 if ( x == 0.0f || y == 0.0f ) 380 { 381 ++failures; 382 cout << "Line: " << __LINE__ 383 << ", chromaGreenPrimary x/y defaults are zero" << endl; 384 } 385 386 // Test set/get 387 image.chromaGreenPrimary(50, 100, 150); 388 image.chromaGreenPrimary(&x, &y, &z); 389 if (x != 50 || y != 100 || z != 150) 390 { 391 ++failures; 392 cout << "Line: " << __LINE__ 393 << ", chromaGreenPrimary x/y failed set/get" << endl; 394 } 395 } 396 397 // 398 // chromaRedPrimary 399 // 400 { 401 // Test default setting 402 double x, y, z; 403 image.chromaRedPrimary(&x, &y, &z); 404 if ( x == 0.0f || y == 0.0f ) 405 { 406 ++failures; 407 cout << "Line: " << __LINE__ 408 << ", chromaRedPrimary x/y defaults are zero" << endl; 409 } 410 411 // Test set/get 412 image.chromaRedPrimary(50, 100, 150); 413 image.chromaRedPrimary(&x, &y, &z); 414 if (x != 50 || y != 100 || z != 150) 415 { 416 ++failures; 417 cout << "Line: " << __LINE__ 418 << ", chromaRedPrimary x/y failed set/get" << endl; 419 } 420 } 421 422 // 423 // chromaWhitePoint 424 // 425 { 426 // Test default setting 427 double x, y, z; 428 image.chromaWhitePoint(&x, &y, &z); 429 if ( x == 0.0f || y == 0.0f ) 430 { 431 ++failures; 432 cout << "Line: " << __LINE__ 433 << ", chromaWhitePoint x/y defaults are zero" << endl; 434 } 435 436 // Test set/get 437 image.chromaWhitePoint(50, 100, 150); 438 image.chromaWhitePoint(&x, &y, &z); 439 if (x != 50 || y != 100 || z != 150) 440 { 441 ++failures; 442 cout << "Line: " << __LINE__ 443 << ", chromaWhitePoint x/y failed set/get" << endl; 444 } 445 } 446 447 // 448 // classType 449 // 450 if ( image.classType() != DirectClass ) 451 { 452 ++failures; 453 cout << "Line: " << __LINE__ << ", classType is not DirectClass" << endl; 454 } 455 456 // 457 // colorFuzz 458 // 459 460 // Test default 461 if ( image.colorFuzz() != 0 ) 462 { 463 ++failures; 464 cout << "Line: " << __LINE__ << ", colorFuzz default is non-zero" << endl; 465 } 466 467 // Test set/get 468 image.colorFuzz( 2 ); 469 if ( image.colorFuzz() != 2 ) 470 { 471 ++failures; 472 cout << "Line: " << __LINE__ << ", colorFuzz failed to set/get" << endl; 473 } 474 image.colorFuzz( 0 ); 475 476 // 477 // columns 478 // 479 if ( image.columns() != columns ) 480 { 481 ++failures; 482 cout << "Line: " << __LINE__ 483 << ", columns is not equal to canvas image columns" << endl; 484 } 485 486 // 487 // comment 488 // 489 // Test default 490 if ( image.comment().length() != 0 ) 491 { 492 ++failures; 493 cout << "Line: " << __LINE__ 494 << ", comment default non-zero length" << endl; 495 } 496 497 // Test set/get 498 { 499 std::string comment("This is a comment."); 500 image.comment( comment ); 501 if ( image.comment() != comment ) 502 { 503 ++failures; 504 cout << "Line: " << __LINE__ << ", comment set/get failed" << endl; 505 } 506 } 507 508 // Test resetting comment 509 image.comment( string() ); 510 if ( image.comment().length() != 0 ) 511 { 512 ++failures; 513 cout << "Line: " << __LINE__ << ", comment failed to reset" << endl; 514 } 515 516 // 517 // compressType 518 // 519 // Test default 520 if ( image.compressType() != UndefinedCompression ) 521 { 522 ++failures; 523 cout << "Line: " << __LINE__ 524 << ", compressType default is incorrect" << endl; 525 } 526 527 // Test set/get 528 image.compressType(RLECompression); 529 if ( image.compressType() != RLECompression ) 530 { 531 ++failures; 532 cout << "Line: " << __LINE__ << ", compressType set/get failed" << endl; 533 } 534 image.compressType(UndefinedCompression); 535 536 // 537 // density 538 // 539 { 540 // Test defaults 541 if ( image.density() != Point(72) ) 542 { 543 ++failures; 544 cout << "Line: " << __LINE__ 545 << ", density default is not 72x72 as expected" << endl; 546 } 547 548 // Test set/get 549 Point density(150,75); 550 image.density(density); 551 if ( image.density() != density ) 552 { 553 ++failures; 554 cout << "Line: " << __LINE__ << ", density set/get failed" << endl; 555 } 556 557 558 if ( image.xResolution() != 150 || 559 image.yResolution() != 75 ) 560 { 561 ++failures; 562 cout << "Line: " << __LINE__ << ", density set/get failed" << endl; 563 } 564 565 image.density("72x72"); 566 567 } 568 569 // 570 // Format specific defines 571 // 572 if (image.defineSet("foo","bar")) 573 { 574 ++failures; 575 cout << "Line: " << __LINE__ 576 << ", define for foo:bar incorrectly reports set." 577 << endl; 578 } 579 580 image.defineSet("foo","bar",true); 581 if (!image.defineSet("foo","bar")) 582 { 583 ++failures; 584 cout << "Line: " << __LINE__ 585 << ", define for foo:bar incorrectly reports not set." 586 << endl; 587 } 588 589 image.defineSet("foo","bar",false); 590 if (image.defineSet("foo","bar")) 591 { 592 ++failures; 593 cout << "Line: " << __LINE__ 594 << ", define for foo:bar incorrectly reports set." 595 << endl; 596 } 597 598 image.defineValue("foo","bar","value"); 599 std::string value = image.defineValue("foo","bar"); 600 if (image.defineValue("foo","bar") != "value") 601 { 602 ++failures; 603 cout << "Line: " << __LINE__ 604 << ", define for foo:bar incorrectly reports value \"" 605 << value << "\"" 606 << endl; 607 } 608 609 image.defineSet("foo","bar",false); 610 if (image.defineSet("foo","bar")) 611 { 612 ++failures; 613 cout << "Line: " << __LINE__ 614 << ", define for foo:bar incorrectly reports set." 615 << endl; 616 } 617 618 // 619 // depth 620 // 621 if ( image.depth() != MAGICKCORE_QUANTUM_DEPTH ) 622 { 623 ++failures; 624 cout << "Line: " << __LINE__ 625 << ", depth (" 626 << image.depth() 627 << ") is not equal to " << MAGICKCORE_QUANTUM_DEPTH << endl; 628 } 629 630 // 631 // Directory 632 // 633 { 634 // Since this is not a montage image, simply verify error report 635 bool caughtException = false; 636 cout << "Testing throwing and catching exceptions. A program crash or a message" << endl 637 << "that the exception was not caught indicates a test failure. A properly" << endl 638 << "formatted exception message indicates success:" << endl; 639 try 640 { 641 //image.directory(); 642 Magick::Image bad_image("foo"); 643 } 644 catch ( Exception &exception_) 645 { 646 cout << "Caught exception, good!:" << endl 647 << " \"" << exception_.what() << "\"" << endl; 648 caughtException = true; 649 } 650 if ( caughtException != true ) 651 { 652 ++failures; 653 cout << "failed to catch exception!" << endl; 654 } 655 } 656 657 // 658 // fileName 659 // 660 // Test default 661 if ( image.fileName() != string("xc:") + string(canvasColor) ) 662 { 663 ++failures; 664 cout << "Line: " 665 << __LINE__ 666 << ", fileName (" 667 << image.fileName() 668 << ") is not canvas color (" 669 << string(canvasColor) 670 <<") as expected" << endl; 671 } 672 673 // Set/get value 674 image.fileName("filename.jpg"); 675 if ( image.fileName() != "filename.jpg" ) 676 { 677 ++failures; 678 cout << "Line: " 679 << __LINE__ 680 << ", fileName (" 681 << image.fileName() 682 << ") failed to set/get" << endl; 683 } 684 image.fileName(canvasColor); 685 686 // 687 // fileSize 688 // 689 // Test default 690 if ( image.fileSize() != 0 ) 691 { 692 ++failures; 693 cout << "Line: " << __LINE__ << ", fileSize (" 694 << static_cast<ssize_t>(image.fileSize()) 695 << ") is not zero as expected" << endl; 696 } 697 698 // 699 // filterType 700 // 701 // Test default 702 if ( image.filterType() != UndefinedFilter ) 703 { 704 ++failures; 705 cout << "Line: " << __LINE__ 706 << ", filterType default (" 707 << (int)image.filterType() 708 << ") is incorrect" << endl; 709 } 710 711 // Test set/get 712 image.filterType( TriangleFilter ); 713 if ( image.filterType() != TriangleFilter ) 714 { 715 ++failures; 716 cout << "Line: " << __LINE__ << ", filterType set/get failed" 717 << endl; 718 } 719 720 // 721 // font 722 // 723 724 // Test set/get 725 image.font("helvetica"); 726 if ( image.font() != "helvetica" ) 727 { 728 ++failures; 729 cout << "Line: " << __LINE__ << ", font set/get failed" << endl; 730 } 731 // Test set to null font 732 image.font( string() ); 733 if ( image.font().length() != 0 ) 734 { 735 ++failures; 736 cout << "Line: " << __LINE__ << ", font failed to unset" << endl; 737 } 738 739 // 740 // fontPointsize 741 // 742 // Test default 743 if ( image.fontPointsize() != 0 ) 744 { 745 ++failures; 746 cout << "Line: " << __LINE__ 747 << ", fontPointsize (" 748 << image.fontPointsize() 749 << ") is not default of 0 as expected" 750 << endl; 751 } 752 753 // Test set/get 754 image.fontPointsize(10); 755 if ( image.fontPointsize() != 10 ) 756 { 757 ++failures; 758 cout << "Line: " << __LINE__ 759 << ", fontPointsize set/get failed" << endl; 760 } 761 image.fontPointsize(12); 762 763 // 764 // format 765 // 766 if ( image.format() != "Constant image uniform color" ) 767 { 768 ++failures; 769 cout << "Line: " << __LINE__ 770 << ", format (" << image.format() << ") is not expected value" << endl; 771 } 772 773 // 774 // gamma 775 // 776 if ( image.gamma() == 1.0f) 777 { 778 ++failures; 779 cout << "Line: " << __LINE__ 780 << ", gamma correction is unity as expected" << endl; 781 } 782 783 // 784 // geometry 785 // 786 { 787 bool caughtException = false; 788 try 789 { 790 image.geometry(); 791 } 792 catch ( Exception& ) 793 { 794 caughtException = true; 795 } 796 if ( caughtException != true ) 797 { 798 ++failures; 799 cout << "Line: " << __LINE__ 800 << ", geometry failed to report missing image geometry"; 801 } 802 } 803 804 // 805 // gifDisposeMethod 806 // 807 // Test default 808 if ( image.gifDisposeMethod() != 0 ) 809 { 810 ++failures; 811 cout << "Line: " << __LINE__ 812 << ", gifDisposeMethod default is not zero as expected" << endl; 813 } 814 815 // Test set/get 816 image.gifDisposeMethod(BackgroundDispose); 817 if ( image.gifDisposeMethod() != BackgroundDispose ) 818 { 819 ++failures; 820 cout << "Line: " << __LINE__ 821 << ", gifDisposeMethod set/get failed" << endl; 822 } 823 image.gifDisposeMethod(UndefinedDispose); 824 825 // 826 // interlaceType 827 // 828 // Test default 829 if ( image.interlaceType() != NoInterlace ) 830 { 831 ++failures; 832 cout << "Line: " << __LINE__ 833 << ", interlaceType default is not NoInterlace as expected" << endl; 834 } 835 836 // Test set/get 837 image.interlaceType( PlaneInterlace ); 838 if ( image.interlaceType() != PlaneInterlace ) 839 { 840 ++failures; 841 cout << "Line: " << __LINE__ << ", interlaceType set/get failed" << endl; 842 } 843 image.interlaceType(NoInterlace); 844 845 // 846 // label 847 // 848 // Test default 849 if ( image.label().length() != 0 ) 850 { 851 ++failures; 852 cout << "Line: " << __LINE__ 853 << ", label default is not empty string as expected" << endl; 854 } 855 856 // Test set/get 857 image.label("How now brown cow?"); 858 if ( image.label() != "How now brown cow?" ) 859 { 860 ++failures; 861 cout << "Line: " << __LINE__ << ", label set/get failed" << endl; 862 } 863 // Test set to default 864 image.label( string() ); 865 if ( image.label().length() != 0 ) 866 { 867 ++failures; 868 cout << "Line: " << __LINE__ << ", label failed to unset" << endl; 869 } 870 871 // 872 // strokeWidth 873 // 874 // Test default 875 if ( image.strokeWidth() != 1 ) 876 { 877 ++failures; 878 cout << "Line: " << __LINE__ 879 << ", strokeWidth default is not 1 as expected" << endl; 880 } 881 882 // Test set/get 883 image.strokeWidth(2); 884 if ( image.strokeWidth() != 2 ) 885 { 886 ++failures; 887 cout << "Line: " << __LINE__ << ", strokeWidth set/get failed" << endl; 888 } 889 image.strokeWidth(1); 890 891 // 892 // magick 893 // 894 // Test canvas default 895 if ( image.magick() != "XC" ) 896 { 897 ++failures; 898 cout << "Line: " << __LINE__ 899 << ", magick canvas default is not XC as expected" << endl; 900 } 901 902 // Test set/get 903 image.magick("GIF"); 904 if ( image.magick() != "GIF" ) 905 { 906 ++failures; 907 cout << "Line: " << __LINE__ << ", magick set/get failed" << endl; 908 } 909 910 image.magick("XC"); 911 912 // 913 // alpha 914 // 915 // Test default 916 if ( image.alpha() != false ) 917 { 918 ++failures; 919 cout << "Line: " << __LINE__ 920 << ", alpha default is not false as expected" << endl; 921 } 922 923 // Test set/get 924 image.alpha(true); 925 if ( image.alpha() != true ) 926 { 927 ++failures; 928 cout << "Line: " << __LINE__ << ", alpha set/get failed" << endl; 929 } 930 image.alpha(false); 931 932 // 933 // matteColor 934 // 935 // Test default 936 if ( image.matteColor() != Color("#BDBDBD") ) 937 { 938 ++failures; 939 cout << "Line: " << __LINE__ 940 << ", matteColor default is not #BDBDBD as expected" << endl; 941 } 942 943 // Test set/get 944 image.matteColor(ColorRGB(0.5,0.5,1)); 945 if ( image.matteColor() != ColorRGB(0.5,0.5,1) ) 946 { 947 ++failures; 948 cout << "Line: " << __LINE__ << ", matteColor set/get failed" << endl; 949 } 950 951 // Test unset 952 image.matteColor( Color() ); 953 954 image.matteColor("#BDBDBD"); 955 956 // 957 // meanErrorPerPixel 958 // 959 if ( image.meanErrorPerPixel() != 0 ) 960 { 961 ++failures; 962 cout << "Line: " << __LINE__ 963 << ", meanErrorPerPixel is not zero as expected" << endl; 964 } 965 966 // 967 // montageGeometry 968 // 969 { 970 bool caughtException = false; 971 try 972 { 973 image.montageGeometry(); 974 } 975 catch ( Exception& ) 976 { 977 caughtException = true; 978 } 979 if ( caughtException != true ) 980 { 981 ++failures; 982 cout << "Line: " << __LINE__ 983 << ", montageGeometry failed to report missing montage geometry"; 984 } 985 } 986 987 // 988 // monochrome 989 // 990 // Test default 991 if ( image.monochrome() != false ) 992 { 993 ++failures; 994 cout << "Line: " << __LINE__ 995 << ", monochrome is not false as expected" << endl; 996 } 997 998 // Test set/get 999 image.monochrome(true); 1000 if ( image.monochrome() != true ) 1001 { 1002 ++failures; 1003 cout << "Line: " << __LINE__ << ", monochrome get/set failed" << endl; 1004 } 1005 image.monochrome(false); 1006 1007 // 1008 // normalizedMaxError 1009 // 1010 if ( image.normalizedMaxError() != 0 ) 1011 { 1012 ++failures; 1013 cout << "Line: " << __LINE__ 1014 << ",normalizedMaxError is not zero as expected" << endl; 1015 } 1016 1017 // 1018 // normalizedMeanError 1019 // 1020 if ( image.normalizedMeanError() != 0 ) 1021 { 1022 ++failures; 1023 cout << "Line: " << __LINE__ 1024 << ", normalizedMeanError is not zero as expected" << endl; 1025 } 1026 1027 // 1028 // strokeColor 1029 // 1030 1031 image.strokeColor(ColorRGB(0.5,0.5,1)); 1032 if ( image.strokeColor() != ColorRGB(0.5,0.5,1) ) 1033 { 1034 ++failures; 1035 cout << "Line: " << __LINE__ << ", strokeColor (" 1036 << string(image.strokeColor()) 1037 << ") set/get failed" << endl; 1038 } 1039 1040 1041 // 1042 // fillColor 1043 // 1044 1045 image.fillColor(ColorRGB(0.5,0.5,1)); 1046 if ( image.fillColor() != ColorRGB(0.5,0.5,1) ) 1047 { 1048 ++failures; 1049 cout << "Line: " << __LINE__ << ", fillColor (" 1050 << string(image.fillColor()) 1051 << ") set/get failed" << endl; 1052 } 1053 1054 // 1055 // pixelColor 1056 // 1057 // Test default 1058 if ( image.pixelColor(40,60) != string(canvasColor) ) 1059 { 1060 ++failures; 1061 cout << "Line: " << __LINE__ << ", pixelColor default (" 1062 << string(image.pixelColor(40,60)) 1063 << ") is not canvas color (" 1064 << string(canvasColor) 1065 << ") as expected" << endl; 1066 } 1067 1068 // Test set/get 1069 image.pixelColor(40,60, ColorRGB(0.5,1,1)); 1070 if ( image.pixelColor(40,60) != ColorRGB(0.5,1,1) ) 1071 { 1072 ++failures; 1073 cout << "Line: " << __LINE__ << ", pixelColor set/get failed" << endl; 1074 } 1075 1076 // 1077 // page 1078 // 1079 // Test default 1080 if ( image.page() != Geometry(640,480,0,0) ) 1081 { 1082 ++failures; 1083 cout << "Line: " << __LINE__ << ", page default " 1084 << "(" << string(image.page()) << ")" 1085 << " is not 640x480 as expected" << endl; 1086 } 1087 1088 // Test set/get 1089 image.page("letter+43+43>"); 1090 if ( image.page() != "612x792+43+43" ) 1091 { 1092 ++failures; 1093 cout << "Line: " << __LINE__ 1094 << ", page set/get failed (" << string(image.page()) << ")" << endl; 1095 } 1096 1097 // 1098 // quality 1099 // 1100 // Test default 1101 if ( image.quality() != 0 ) 1102 { 1103 ++failures; 1104 cout << "Line: " << __LINE__ 1105 << ", quality default is not 0 as expected" << endl; 1106 } 1107 1108 // Test set/get 1109 image.quality(65); 1110 if ( image.quality() != 65 ) 1111 { 1112 ++failures; 1113 cout << "Line: " << __LINE__ << ", quality set/get failed" << endl; 1114 } 1115 image.quality(0); 1116 1117 // 1118 // quantizeColors 1119 // 1120 // Test default 1121 if ( image.quantizeColors() != 256 ) 1122 { 1123 ++failures; 1124 cout << "Line: " << __LINE__ 1125 << ", quantizeColors is not 256 as expected" << endl; 1126 } 1127 1128 // Test set/get 1129 image.quantizeColors(200); 1130 if ( image.quantizeColors() != 200 ) 1131 { 1132 ++failures; 1133 cout << "Line: " << __LINE__ << ", quantizeColors set/get failed" << endl; 1134 } 1135 image.quantizeColors(0); 1136 1137 // 1138 // quantizeColorSpace 1139 // 1140 // Test default 1141 if ( image.quantizeColorSpace() != UndefinedColorspace ) 1142 { 1143 ++failures; 1144 cout << "Line: " << __LINE__ 1145 << ", quantizeColorSpace is not RGBColorspace as expected" << endl; 1146 } 1147 1148 // Test set/get 1149 image.quantizeColorSpace(YIQColorspace); 1150 if ( image.quantizeColorSpace() != YIQColorspace ) 1151 { 1152 ++failures; 1153 cout << "Line: " << __LINE__ 1154 << ", quantizeColorSpace set/get failed" << endl; 1155 } 1156 image.quantizeColorSpace(RGBColorspace); 1157 1158 // 1159 // quantizeDither 1160 // 1161 // Test default 1162 if ( image.quantizeDither() == false ) 1163 { 1164 ++failures; 1165 cout << "Line: " << __LINE__ 1166 << ", quantizeDither is not false as expected" << endl; 1167 } 1168 1169 // Test set/get 1170 image.quantizeDither(false); 1171 if ( image.quantizeDither() != false ) 1172 { 1173 ++failures; 1174 cout << "Line: " << __LINE__ 1175 << ", quantizeDither get/set failed" << endl; 1176 } 1177 image.quantizeDither(true); 1178 1179 // 1180 // quantizeTreeDepth 1181 // 1182 if ( image.quantizeTreeDepth() != 0 ) 1183 { 1184 ++failures; 1185 cout << "Line: " << __LINE__ << ", quantizeTreeDepth default is " 1186 << image.quantizeTreeDepth() 1187 << " rather than zero as expected" << endl; 1188 } 1189 1190 image.quantizeTreeDepth(7); 1191 if ( image.quantizeTreeDepth() != 7 ) 1192 { 1193 ++failures; 1194 cout << "Line: " << __LINE__ 1195 << ", quantizeTreeDepth set/get failed" << endl; 1196 } 1197 image.quantizeTreeDepth(8); 1198 1199 // 1200 // renderingIntent 1201 // 1202 if ( image.renderingIntent() == UndefinedIntent ) 1203 { 1204 ++failures; 1205 cout << "Line: " << __LINE__ 1206 << ", renderingIntent default is UndefinedIntent as expected" 1207 << endl; 1208 } 1209 1210 image.renderingIntent(PerceptualIntent); 1211 if ( image.renderingIntent() != PerceptualIntent ) 1212 { 1213 ++failures; 1214 cout << "Line: " << __LINE__ 1215 << ", renderingIntent set/get failed" << endl; 1216 } 1217 image.renderingIntent(UndefinedIntent); 1218 1219 // 1220 // resolutionUnits 1221 // 1222 if ( image.resolutionUnits() != UndefinedResolution ) 1223 { 1224 ++failures; 1225 cout << "Line: " << __LINE__ 1226 << ", resolutionUnits default is not UndefinedResolution as expected" 1227 << endl; 1228 } 1229 1230 image.resolutionUnits(PixelsPerCentimeterResolution); 1231 if ( image.resolutionUnits() != PixelsPerCentimeterResolution ) 1232 { 1233 ++failures; 1234 cout << "Line: " << __LINE__ 1235 << ", resolutionUnits set/get failed" << endl; 1236 } 1237 image.resolutionUnits(UndefinedResolution); 1238 1239 // 1240 // rows 1241 // 1242 if ( image.rows() != rows ) 1243 { 1244 ++failures; 1245 cout << "Line: " << __LINE__ 1246 << ", rows is canvas rows as expected" << endl; 1247 } 1248 1249 // 1250 // scene 1251 // 1252 if ( image.scene() != 0 ) 1253 { 1254 ++failures; 1255 cout << "Line: " << __LINE__ 1256 << ", scene default is not zero as expected" << endl; 1257 } 1258 1259 image.scene(5); 1260 if ( image.scene() != 5 ) 1261 { 1262 ++failures; 1263 cout << "Line: " << __LINE__ 1264 << ", scene set/get failed" << endl; 1265 } 1266 image.scene(0); 1267 1268 // 1269 // signature 1270 // 1271 1272 if ( image.signature() != "146366a0f4150adc7b28f4f5da750ec2ca2c50ff8b14f894ce1e4d7d4058f465" && 1273 image.signature() != "b89bff8473dd6fe2302bcfd365e7d20daf7bd97ad667fe42d1a87469fce0d138" && 1274 image.signature() != "5caa527c00cf9e59345de4aaef4f0c2312d1955c2f391ccafa98f8e11370e6e0" && 1275 image.signature() != "b891ddb1d32cd45c6329180e5bd733eebb8dd06c401a9c721841ec43e4a662f8") 1276 { 1277 ++failures; 1278 cout << "Line: " << __LINE__ << ", signature (" 1279 << image.signature() 1280 << ") is incorrect" << endl; 1281 image.display(); 1282 } 1283 1284 // 1285 // size 1286 // 1287 if ( image.size() != geometry ) 1288 { 1289 ++failures; 1290 cout << "Line: " << __LINE__ << ", size (" 1291 << string(image.size()) 1292 << ") is not equal to geometry (" 1293 << string(geometry) 1294 << ")" 1295 << endl; 1296 } 1297 1298 image.size("800x600"); 1299 if ( image.size() != Geometry("800x600") ) 1300 { 1301 ++failures; 1302 cout << "Line: " << __LINE__ << ", size set/get failed" << endl; 1303 } 1304 image.size( geometry ); 1305 1306 // 1307 // subImage 1308 // 1309 if ( image.subImage() != 0 ) 1310 { 1311 ++failures; 1312 cout << "Line: " << __LINE__ 1313 << ", subImage default is not zero as expected" << endl; 1314 } 1315 1316 image.subImage(5); 1317 if ( image.subImage() != 5 ) 1318 { 1319 ++failures; 1320 cout << "Line: " << __LINE__ 1321 << ", subImage set/get failed" << endl; 1322 } 1323 image.subImage(0); 1324 1325 // 1326 // subRange 1327 // 1328 if ( image.subRange() != 0 ) 1329 { 1330 ++failures; 1331 cout << "Line: " << __LINE__ 1332 << ", subRange default is not zero as expected" << endl; 1333 } 1334 1335 image.subRange(5); 1336 if ( image.subRange() != 5 ) 1337 { 1338 ++failures; 1339 cout << "Line: " << __LINE__ 1340 << ", subRange set/get failed" << endl; 1341 } 1342 image.subRange(0); 1343 1344 // 1345 // totalColors 1346 // 1347 if ( image.totalColors() != 2 ) 1348 { 1349 ++failures; 1350 cout << "Line: " << __LINE__ << ", totalColors is " << image.totalColors() 1351 << " rather than 2 as expected" << endl; 1352 } 1353 1354 // 1355 // type 1356 // 1357 image.type(PaletteType); 1358 if ( image.type() != PaletteType ) 1359 { 1360 ++failures; 1361 cout << "Line: " << __LINE__ 1362 << ", type is not PaletteType as expected. Reported type " 1363 << (int) image.type() << endl; 1364 1365 } 1366 1367 // 1368 // verbose 1369 // 1370 if ( image.verbose() != false ) 1371 { 1372 ++failures; 1373 cout << "Line: " << __LINE__ 1374 << ", verbose is not false as expected" << endl; 1375 } 1376 1377 // 1378 // x11Display 1379 // 1380 if ( image.x11Display().length() != 0 ) 1381 { 1382 ++failures; 1383 cout << "Line: " << __LINE__ 1384 << ", x11Display default is not empty string as expected" << endl; 1385 } 1386 1387 image.x11Display(":0.0"); 1388 if ( image.x11Display() != ":0.0" ) 1389 { 1390 ++failures; 1391 cout << "Line: " << __LINE__ 1392 << ", x11Display set/get failed" << endl; 1393 } 1394 1395 image.x11Display( string() ); 1396 if ( image.x11Display().length() != 0 ) 1397 { 1398 ++failures; 1399 cout << "Line: " << __LINE__ 1400 << ", x11Display failed to unset" << endl; 1401 } 1402 1403 // 1404 // xResolution 1405 // 1406 if ( image.xResolution() != 72 ) 1407 { 1408 ++failures; 1409 cout << "Line: " << __LINE__ 1410 << ", xResolution default (" << image.xResolution() 1411 << ") is not zero as expected" << endl; 1412 } 1413 1414 // 1415 // yResolution 1416 // 1417 if ( image.yResolution() != 72 ) 1418 { 1419 ++failures; 1420 cout << "Line: " << __LINE__ 1421 << ", yResolution default (" << image.yResolution() 1422 << ") is not zero as expected" << endl; 1423 } 1424 } 1425 catch( Exception &error_ ) 1426 { 1427 cout << "Caught exception: " << error_.what() << endl; 1428 return 1; 1429 } 1430 catch( exception &error_ ) 1431 { 1432 cout << "Caught exception: " << error_.what() << endl; 1433 return 1; 1434 } 1435 1436 if ( failures ) 1437 { 1438 cout << failures << " failures" << endl; 1439 return 1; 1440 } 1441 1442 return 0; 1443 } 1444