From 66ed0b9071e48b186b1130c281ac6ad986b4f48f Mon Sep 17 00:00:00 2001 From: timlinux Date: Sun, 31 Aug 2008 15:50:23 +0000 Subject: [PATCH] Unit tests for raster contrast enhancements git-svn-id: http://svn.osgeo.org/qgis/trunk@9230 c8812cc2-4d05-0410-92ff-de0c093fc19c --- tests/src/core/CMakeLists.txt | 21 +++++ tests/src/core/testcontrastenhancements.cpp | 83 ++++++++++++++++++ .../expected_rgbwcmyk01_YeGeo.jp2.png | Bin 639 -> 641 bytes 3 files changed, 104 insertions(+) create mode 100644 tests/src/core/testcontrastenhancements.cpp diff --git a/tests/src/core/CMakeLists.txt b/tests/src/core/CMakeLists.txt index 935145e60a2..80cdc714a8b 100644 --- a/tests/src/core/CMakeLists.txt +++ b/tests/src/core/CMakeLists.txt @@ -191,6 +191,27 @@ ELSE (APPLE) INSTALL(TARGETS qgis_rasterlayertest RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) ENDIF (APPLE) # +# Contrast Enhancements Test +# +SET(qgis_contrastenhancementtest_SRCS testcontrastenhancements.cpp) +SET(qgis_contrastenhancementtest_MOC_CPPS testcontrastenhancements.cpp) +QT4_WRAP_CPP(qgis_contrastenhancementtest_MOC_SRCS ${qgis_contrastenhancementtest_MOC_CPPS}) +ADD_CUSTOM_TARGET(qgis_contrastenhancementtestmoc ALL DEPENDS ${qgis_contrastenhancementtest_MOC_SRCS}) +ADD_EXECUTABLE(qgis_contrastenhancementtest ${qgis_contrastenhancementtest_SRCS}) +ADD_DEPENDENCIES(qgis_contrastenhancementtest qgis_contrastenhancementtestmoc) +TARGET_LINK_LIBRARIES(qgis_contrastenhancementtest ${QT_LIBRARIES} qgis_core) +SET_TARGET_PROPERTIES(qgis_contrastenhancementtest + PROPERTIES INSTALL_RPATH ${QGIS_LIB_DIR} + INSTALL_RPATH_USE_LINK_PATH true) +IF (APPLE) + # For Mac OS X, the executable must be at the root of the bundle's executable folder + ADD_TEST(qgis_contrastenhancementtest ${CMAKE_INSTALL_PREFIX}/qgis_contrastenhancementtest) + INSTALL(TARGETS qgis_contrastenhancementtest RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}) +ELSE (APPLE) + ADD_TEST(qgis_contrastenhancementtest ${CMAKE_INSTALL_PREFIX}/bin/qgis_contrastenhancementtest) + INSTALL(TARGETS qgis_contrastenhancementtest RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) +ENDIF (APPLE) +# # QgsMapLayer test # SET(qgis_maplayertest_SRCS testqgsmaplayer.cpp ${util_SRCS}) diff --git a/tests/src/core/testcontrastenhancements.cpp b/tests/src/core/testcontrastenhancements.cpp new file mode 100644 index 00000000000..dfc15c2ec80 --- /dev/null +++ b/tests/src/core/testcontrastenhancements.cpp @@ -0,0 +1,83 @@ +/*************************************************************************** + testcontrastenhancements.cpp + -------------------------------------- + Date : Frida Nov 23 2007 + Copyright : (C) 2007 by Tim Sutton + Email : tim@linfiniti.com + *************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include +#include +#include +#include + + +//qgis includes... +#include +#include +#include +#include + +/** \ingroup UnitTests + * This is a unit test for the ContrastEnhancements contrast enhancement classes. + */ +class TestContrastEnhancements: public QObject +{ + Q_OBJECT; + private slots: + void initTestCase();// will be called before the first testfunction is executed. + void cleanupTestCase();// will be called after the last testfunction was executed. + void init() {};// will be called before each testfunction is executed. + void cleanup() {};// will be called after every testfunction. + + void minMaxEnhancementTest(); + void linearMinMaxEnhancementTest(); + private: + QString mReport; +}; + +//runs before all tests +void TestContrastEnhancements::initTestCase() +{ + mReport += "

Raster Contrast Enhancement Tests

\n"; +} +//runs after all tests +void TestContrastEnhancements::cleanupTestCase() +{ + QString myReportFile = QDir::tempPath() + QDir::separator() + "contrastenhancementest.html"; + QFile myFile( myReportFile ); + if ( myFile.open( QIODevice::WriteOnly ) ) + { + QTextStream myQTextStream( &myFile ); + myQTextStream << mReport; + myFile.close(); + QDesktopServices::openUrl( "file://" + myReportFile ); + } + +} + + +void TestContrastEnhancements::minMaxEnhancementTest() +{ + QgsClipToMinMaxEnhancement myEnhancement(QgsContrastEnhancement::QGS_Byte, 10.0, 240.0); + QVERIFY(!myEnhancement.isValueInDisplayableRange(0.0)); + QVERIFY(10.0 == myEnhancement.enhanceValue(0.0)) ; + QVERIFY(250.0 == myEnhancement.enhanceValue(240.0)) ; +} +void TestContrastEnhancements::linearMinMaxEnhancementTest() +{ + QgsLinearMinMaxEnhancement myEnhancement(QgsContrastEnhancement::QGS_Byte, 10.0, 240.0); + //0 should be scaled to 10 and not clipped + QVERIFY(myEnhancement.isValueInDisplayableRange(0.0)); + QVERIFY(10.0 == myEnhancement.enhanceValue(0.0)) ; + QVERIFY(250.0 == myEnhancement.enhanceValue(240.0)) ; +} +QTEST_MAIN( TestContrastEnhancements ) +#include "moc_testcontrastenhancements.cxx" + diff --git a/tests/testdata/expected_rgbwcmyk01_YeGeo.jp2.png b/tests/testdata/expected_rgbwcmyk01_YeGeo.jp2.png index 4f51e79c170b2c33fca525f9f2d9986ae2127ea5..c796cc56a8ce55391f2ec11d27f0d176fd1c8a60 100644 GIT binary patch delta 178 zcmey*(#SeN+l2230|Va?#;MwT(hLkt#-1*YAr*7pUOC8l#DRy!@$FOjhT>wCx}TG7 z9NQ4WYVhJ>M(lUviShTss{HR)eUII`P512X?CjeY&YZbr{w#T-fEZ^Y8AQbOzcsbY k?4LGHEId7N1FzU0#mdKI;Vst05>T^Q2+n{ literal 639 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k2}mkgS)K$^oCO|{#X$K^5M~UR(xl43z+~v@ z;uumf=j|0o-XjJAERMf_Fmr5IIC)y}VVGZ-Xv0OjDC_mVB{$rD|C-ri@&*r%?v`Ok z9En+;zt-2g`1~1(