corona
1.0.2
|
00001 #include "JPEGTests.h" 00002 00003 00004 void 00005 JPEGTests::testLoader() { 00006 static string images[] = { 00007 "63", 00008 "63-1-subsampling", 00009 "63-floating", 00010 "63-high", 00011 "63-low", 00012 "63-progressive", 00013 "63-restart", 00014 "64", 00015 "comic-progressive", 00016 }; 00017 static const int image_count = sizeof(images) / sizeof(*images); 00018 00019 static const string img_prefix("images/jpeg/"); 00020 static const string img_suffix(".jpeg"); 00021 00022 static const string ref_prefix("images/jpeg/ref/"); 00023 static const string ref_suffix(".png"); 00024 00025 for (int i = 0; i < image_count; ++i) { 00026 AssertImagesEqual(img_prefix + images[i] + img_suffix, 00027 ref_prefix + images[i] + ref_suffix); 00028 } 00029 } 00030 00031 00032 size_t getImageBufferSize(Image* image) { 00033 return GetPixelSize(image->getFormat()) * 00034 image->getWidth() * image->getHeight(); 00035 } 00036 00037 00038 void 00039 JPEGTests::testSaver() { 00040 auto_ptr<Image> black(CreateImage(173, 229, PF_R8G8B8)); 00041 auto_ptr<Image> white(CreateImage(149, 512, PF_R8G8B8)); 00042 00043 memset(black->getPixels(), 0x00, getImageBufferSize(black.get())); 00044 memset(white->getPixels(), 0xFF, getImageBufferSize(white.get())); 00045 00046 std::string black_filename = tmpnam(0); 00047 std::string white_filename = tmpnam(0); 00048 00049 CPPUNIT_ASSERT(SaveImage(black_filename + ".jpeg", 00050 FF_AUTODETECT, black.get())); 00051 CPPUNIT_ASSERT(SaveImage(white_filename, FF_JPEG, white.get())); 00052 00053 auto_ptr<Image> black_loaded(OpenImage(black_filename + ".jpeg")); 00054 auto_ptr<Image> white_loaded(OpenImage(white_filename)); 00055 00056 CPPUNIT_ASSERT(black_loaded.get() != 0); 00057 CPPUNIT_ASSERT(white_loaded.get() != 0); 00058 00059 remove(black_filename.c_str()); 00060 remove(white_filename.c_str()); 00061 00062 AssertImagesEqual("Saved messed up JPEG", black.get(), black_loaded.get()); 00063 AssertImagesEqual("Saved messed up JPEG", white.get(), white_loaded.get()); 00064 } 00065 00066 00067 void 00068 JPEGTests::testIncomplete() { 00069 auto_ptr<Image> image(OpenImage("images/jpeg/jack-incomplete.jpeg")); 00070 CPPUNIT_ASSERT(image.get() != 0); 00071 } 00072 00073 00074 Test* 00075 JPEGTests::suite() { 00076 typedef TestCaller<JPEGTests> Caller; 00077 00078 TestSuite* suite = new TestSuite(); 00079 suite->addTest(new Caller("JPEG Loader", &JPEGTests::testLoader)); 00080 suite->addTest(new Caller("JPEG Saver", &JPEGTests::testSaver)); 00081 suite->addTest(new Caller("Incomplete JPEG", &JPEGTests::testIncomplete)); 00082 return suite; 00083 }