From 340f412275837f366fac5677a9ca7e30708759c4 Mon Sep 17 00:00:00 2001 From: Kaitlyn Lee <kdl222@nau.edu> Date: Fri, 10 Apr 2020 16:00:10 -0700 Subject: [PATCH] Adds image data to the default cube fixture and enlarge tests (#3840) * refactored enlarge. * Added setinputcube call. * Removed return from setinputcube. * Removed print. * Added fixture for adding image data to a cube. * Need to add changed files to a different machine. * Changed SetOutputCube call so we can pass in the ui object. * Added enlarge tests. * Removed Makefile tests. * Added CubeAttribute. * Fixed typo. * Refactored opening input cube --- isis/src/base/apps/enlarge/enlarge.xml | 9 ++ isis/src/base/apps/enlarge/enlarge_app.cpp | 100 ++++++++++++++++ isis/src/base/apps/enlarge/enlarge_app.h | 14 +++ isis/src/base/apps/enlarge/main.cpp | 98 +++------------- isis/src/base/apps/enlarge/tsts/Makefile | 4 - .../base/apps/enlarge/tsts/default/Makefile | 15 --- .../src/base/apps/enlarge/tsts/total/Makefile | 21 ---- isis/src/base/objs/Process/Process.cpp | 6 +- isis/tests/Fixtures.cpp | 10 ++ isis/tests/Fixtures.h | 5 +- isis/tests/FunctionalTestsEnlarge.cpp | 111 ++++++++++++++++++ isis/tests/data/defaultImage/defaultCube.pvl | Bin 4294 -> 1541081 bytes 12 files changed, 264 insertions(+), 129 deletions(-) create mode 100644 isis/src/base/apps/enlarge/enlarge_app.cpp create mode 100644 isis/src/base/apps/enlarge/enlarge_app.h delete mode 100644 isis/src/base/apps/enlarge/tsts/Makefile delete mode 100644 isis/src/base/apps/enlarge/tsts/default/Makefile delete mode 100644 isis/src/base/apps/enlarge/tsts/total/Makefile create mode 100644 isis/tests/FunctionalTestsEnlarge.cpp diff --git a/isis/src/base/apps/enlarge/enlarge.xml b/isis/src/base/apps/enlarge/enlarge.xml index 550fce2b76..1e8b82bb32 100644 --- a/isis/src/base/apps/enlarge/enlarge.xml +++ b/isis/src/base/apps/enlarge/enlarge.xml @@ -74,6 +74,15 @@ <change name="Sharmila Prasad" date="2011-09-15"> Fixed issue 0000280 - enlarge fails when run with a batchlist </change> + <change name="Kaitlyn Lee" date="2020-04-09"> + The SetOutputCube method from Process we were originally using called + Application::GetUserInterface(), but this became a problem when trying to + call enlarge(), or run the application, programmatically since we are no + longer using Application in the application's cpp file. Changed the call + to the one that takes in a CubeAttribute object. Also, removed the check + to see if an invalid interpolation method was passed in since the UserInterface + class checks and throws the exception and it was unreachable code. + </change> </history> <category> diff --git a/isis/src/base/apps/enlarge/enlarge_app.cpp b/isis/src/base/apps/enlarge/enlarge_app.cpp new file mode 100644 index 0000000000..4769b7bc29 --- /dev/null +++ b/isis/src/base/apps/enlarge/enlarge_app.cpp @@ -0,0 +1,100 @@ +#include "enlarge_app.h" + +#include "CubeAttribute.h" +#include "Enlarge.h" +#include "IException.h" +#include "ProcessRubberSheet.h" + +using namespace std; +using namespace Isis; +namespace Isis{ + + void enlarge(UserInterface &ui, Pvl *log) { + Cube icube; + CubeAttributeInput inAtt = ui.GetInputAttribute("FROM"); + if (inAtt.bands().size() != 0) { + icube.setVirtualBands(inAtt.bands()); + } + icube.open(ui.GetFileName("FROM")); + enlarge(&icube, ui, log); + } + + void enlarge(Cube *icube, UserInterface &ui, Pvl *log) { + ProcessRubberSheet p; + p.SetInputCube(icube); + + // Input number of samples, lines, and bands + int ins = icube->sampleCount(); + int inl = icube->lineCount(); + int inb = icube->bandCount(); + + // Output samples and lines + int ons, onl; + + // Scaling factors + double sampleScale, lineScale; + + if(ui.GetString("MODE") == "SCALE") { + // Retrieve the provided scaling factors + sampleScale = ui.GetDouble("SSCALE"); + lineScale = ui.GetDouble("LSCALE"); + + // Calculate the output size. If there is a fractional pixel, round up + ons = (int)ceil(ins * sampleScale); + onl = (int)ceil(inl * lineScale); + } + else { + // Retrieve the provided sample/line dimensions in the output + ons = ui.GetInteger("ONS"); + onl = ui.GetInteger("ONL"); + + // Calculate the scaling factors + sampleScale = (double)ons / (double)ins; + lineScale = (double)onl / (double)inl; + } + + // Ensure that the calculated number of output samples and lines is greater + // than the input + if(ons < ins || onl < inl) { + string msg = "Number of output samples/lines must be greater than or equal"; + msg = msg + " to the input samples/lines."; + throw IException(IException::User, msg, _FILEINFO_); + } + + // Set up the interpolator + Interpolator *interp; + if(ui.GetString("INTERP") == "NEARESTNEIGHBOR") { + interp = new Interpolator(Interpolator::NearestNeighborType); + } + else if(ui.GetString("INTERP") == "BILINEAR") { + interp = new Interpolator(Interpolator::BiLinearType); + } + else { // CUBICCONVOLUTION + interp = new Interpolator(Interpolator::CubicConvolutionType); + } + + // Allocate the output file, the number of bands does not change in the output + QString outputFileName = ui.GetFileName("TO"); + CubeAttributeOutput &att = ui.GetOutputAttribute("TO"); + Cube *ocube = p.SetOutputCube(outputFileName, att, ons, onl, inb); + + // Set up the transform object with the calculated scale and number of + // output pixels + //Transform *transform = new Enlarge(icube, sampleScale, lineScale); + Enlarge *transform = new Enlarge(icube, sampleScale, lineScale); + p.StartProcess(*transform, *interp); + PvlGroup resultsGrp = transform->UpdateOutputLabel(ocube); + + // Cleanup + icube->close(); + ocube->close(); + p.EndProcess(); + + delete transform; + delete interp; + + // Write the results to the log + log->addGroup(resultsGrp); + } +} + diff --git a/isis/src/base/apps/enlarge/enlarge_app.h b/isis/src/base/apps/enlarge/enlarge_app.h new file mode 100644 index 0000000000..32206da6e9 --- /dev/null +++ b/isis/src/base/apps/enlarge/enlarge_app.h @@ -0,0 +1,14 @@ +#ifndef enlarge_app_h +#define enlarge_app_h + + +#include "Cube.h" +#include "Pvl.h" +#include "UserInterface.h" + +namespace Isis{ + extern void enlarge(Cube *icube, UserInterface &ui, Pvl *log); + extern void enlarge(UserInterface &ui, Pvl *log); +} + +#endif diff --git a/isis/src/base/apps/enlarge/main.cpp b/isis/src/base/apps/enlarge/main.cpp index 7e005121b8..5277bd14d0 100644 --- a/isis/src/base/apps/enlarge/main.cpp +++ b/isis/src/base/apps/enlarge/main.cpp @@ -1,93 +1,27 @@ #include "Isis.h" -#include "Enlarge.h" -#include "IException.h" -#include "ProcessRubberSheet.h" +#include "enlarge_app.h" + +#include "Application.h" +#include "Pvl.h" using namespace std; using namespace Isis; void IsisMain() { - ProcessRubberSheet p; - - // Open the input cube - Cube *icube = p.SetInputCube("FROM"); - - // Input number of samples, lines, and bands - int ins = icube->sampleCount(); - int inl = icube->lineCount(); - int inb = icube->bandCount(); - - // Output samples and lines - int ons, onl; - - // Scaling factors - double sampleScale, lineScale; - UserInterface &ui = Application::GetUserInterface(); - if(ui.GetString("MODE") == "SCALE") { - // Retrieve the provided scaling factors - sampleScale = ui.GetDouble("SSCALE"); - lineScale = ui.GetDouble("LSCALE"); - - // Calculate the output size. If there is a fractional pixel, round up - ons = (int)ceil(ins * sampleScale); - onl = (int)ceil(inl * lineScale); - } - else { - // Retrieve the provided sample/line dimensions in the output - ons = ui.GetInteger("ONS"); - onl = ui.GetInteger("ONL"); - - // Calculate the scaling factors - sampleScale = (double)ons / (double)ins; - lineScale = (double)onl / (double)inl; - } - - // Ensure that the calculated number of output samples and lines is greater - // than the input - if(ons < ins || onl < inl) { - string msg = "Number of output samples/lines must be greater than or equal"; - msg = msg + " to the input samples/lines."; - throw IException(IException::User, msg, _FILEINFO_); - } - - // Set up the interpolator - Interpolator *interp; - if(ui.GetString("INTERP") == "NEARESTNEIGHBOR") { - interp = new Interpolator(Interpolator::NearestNeighborType); + Pvl appLog; + try { + enlarge(ui, &appLog); } - else if(ui.GetString("INTERP") == "BILINEAR") { - interp = new Interpolator(Interpolator::BiLinearType); + catch (...) { + for (auto grpIt = appLog.beginGroup(); grpIt!= appLog.endGroup(); grpIt++) { + Application::Log(*grpIt); + } + throw; } - else if(ui.GetString("INTERP") == "CUBICCONVOLUTION") { - interp = new Interpolator(Interpolator::CubicConvolutionType); + + for (auto grpIt = appLog.beginGroup(); grpIt!= appLog.endGroup(); grpIt++) { + Application::Log(*grpIt); } - else { - QString msg = "Unknown value for INTERP [" + - ui.GetString("INTERP") + "]"; - throw IException(IException::Programmer, msg, _FILEINFO_); - } - - // Allocate the output file, the number of bands does not change in the output - Cube *ocube = p.SetOutputCube("TO", ons, onl, inb); - - // Set up the transform object with the calculated scale and number of - // output pixels - //Transform *transform = new Enlarge(icube, sampleScale, lineScale); - Enlarge *transform = new Enlarge(icube, sampleScale, lineScale); - p.StartProcess(*transform, *interp); - PvlGroup resultsGrp = transform->UpdateOutputLabel(ocube); - - // Cleanup - icube->close(); - ocube->close(); - p.EndProcess(); - - delete transform; - delete interp; - - // Write the results to the log - Application::Log(resultsGrp); -} - +} \ No newline at end of file diff --git a/isis/src/base/apps/enlarge/tsts/Makefile b/isis/src/base/apps/enlarge/tsts/Makefile deleted file mode 100644 index 46d84c74c2..0000000000 --- a/isis/src/base/apps/enlarge/tsts/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -BLANKS = "%-6s" -LENGTH = "%-40s" - -include $(ISISROOT)/make/isismake.tststree diff --git a/isis/src/base/apps/enlarge/tsts/default/Makefile b/isis/src/base/apps/enlarge/tsts/default/Makefile deleted file mode 100644 index f44b1aae9c..0000000000 --- a/isis/src/base/apps/enlarge/tsts/default/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -APPNAME = enlarge - -peaks2.cub.TOLERANCE = 16 - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/peaks.cub \ - to=$(OUTPUT)/peaks.cub \ - sscale=1.0 \ - lscale=1.5 \ - interp=bilinear > /dev/null; - lowpass from=$(OUTPUT)/peaks.cub samples=1 lines=5 \ - to=$(OUTPUT)/peaks2.cub > /dev/null; - $(RM) $(OUTPUT)/peaks.cub diff --git a/isis/src/base/apps/enlarge/tsts/total/Makefile b/isis/src/base/apps/enlarge/tsts/total/Makefile deleted file mode 100644 index 2c9aadfcf8..0000000000 --- a/isis/src/base/apps/enlarge/tsts/total/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -APPNAME = enlarge - -include $(ISISROOT)/make/isismake.tsts - -commands: - $(APPNAME) from=$(INPUT)/isisTruth.cub \ - to=$(OUTPUT)/total.cub \ - mode=total \ - ons=126 \ - onl=189 \ - interp=nearestneighbor > /dev/null; - $(APPNAME) from=$(INPUT)/isisTruth.cub \ - to=$(OUTPUT)/scale.cub \ - sscale=1.0 \ - lscale=1.5 \ - interp=nearestneighbor > /dev/null; - cubediff from=$(OUTPUT)/total.cub \ - from2=$(OUTPUT)/scale.cub \ - to=$(OUTPUT)/comparisonTruth.txt > /dev/null; - rm -f $(OUTPUT)/total.cub; - rm -f $(OUTPUT)/scale.cub; diff --git a/isis/src/base/objs/Process/Process.cpp b/isis/src/base/objs/Process/Process.cpp index 7c46b618ec..2d50d274ac 100644 --- a/isis/src/base/objs/Process/Process.cpp +++ b/isis/src/base/objs/Process/Process.cpp @@ -308,12 +308,12 @@ namespace Isis { << ",nb=" << nb << "]"; throw IException(IException::Programmer, message.str().c_str(), _FILEINFO_); } - QString fname = Application::GetUserInterface().GetFileName(parameter); Isis::CubeAttributeOutput &atts = Application::GetUserInterface().GetOutputAttribute(parameter); return SetOutputCube(fname, atts, ns, nl, nb); } + /** * Allocates a output cube whose name and size is specified by the programmer. * @@ -350,7 +350,6 @@ namespace Isis { cube->setByteOrder(att.byteOrder()); cube->setFormat(att.fileFormat()); cube->setLabelsAttached(att.labelAttachment() == AttachedLabel); - if(att.propagatePixelType()) { if(InputCubes.size() > 0) { cube->setPixelType(InputCubes[0]->pixelType()); @@ -409,7 +408,7 @@ namespace Isis { // Allocate the cube cube->create(fname); - + // Transfer labels from the first input cube if((p_propagateLabels) && (InputCubes.size() > 0)) { Isis::PvlObject &incube = @@ -468,7 +467,6 @@ namespace Isis { delete cube; throw; } - // Everything is fine so save the cube on the stack AddOutputCube(cube); return cube; diff --git a/isis/tests/Fixtures.cpp b/isis/tests/Fixtures.cpp index 66ac085b99..0c76bed4ae 100644 --- a/isis/tests/Fixtures.cpp +++ b/isis/tests/Fixtures.cpp @@ -1,4 +1,6 @@ #include "Fixtures.h" +#include "LineManager.h" + namespace Isis { @@ -21,6 +23,14 @@ namespace Isis { testCube = new Cube(); testCube->fromIsd(tempDir.path() + "/default.cub", label, isd, "rw"); + LineManager line(*testCube); + for(line.begin(); !line.end(); line++) { + for(int i = 0; i < line.size(); i++) { + line[i] = (double) 1; + } + testCube->write(line); + } + projTestCube = new Cube(); projTestCube->fromIsd(tempDir.path() + "/default.level2.cub", projLabel, isd, "rw"); } diff --git a/isis/tests/Fixtures.h b/isis/tests/Fixtures.h index 505773ff32..b606ac21d2 100644 --- a/isis/tests/Fixtures.h +++ b/isis/tests/Fixtures.h @@ -11,11 +11,10 @@ #include <nlohmann/json.hpp> -#include "IException.h" -#include "PvlGroup.h" - #include "Cube.h" +#include "IException.h" #include "Pvl.h" +#include "PvlGroup.h" #include "PvlObject.h" #include "ControlNet.h" #include "FileList.h" diff --git a/isis/tests/FunctionalTestsEnlarge.cpp b/isis/tests/FunctionalTestsEnlarge.cpp new file mode 100644 index 0000000000..83b9e855f3 --- /dev/null +++ b/isis/tests/FunctionalTestsEnlarge.cpp @@ -0,0 +1,111 @@ +#include "enlarge_app.h" + +#include <QTemporaryFile> +#include <QTextStream> +#include <QStringList> + +#include "Fixtures.h" +#include "PvlGroup.h" +#include "TestUtilities.h" + +#include "gmock/gmock.h" + +using namespace Isis; + +static QString APP_XML = FileName("$ISISROOT/bin/xml/enlarge.xml").expanded(); + +TEST_F(DefaultCube, FunctionalTestEnlargeDefaultParameters) { + QVector<QString> args = {"to=" + tempDir.path()+"/output.cub"}; + UserInterface options(APP_XML, args); + Pvl appLog; + enlarge(testCube, options, &appLog); + + PvlGroup groundPoint = appLog.findGroup("Results"); + + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("InputLines"), 10); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("InputSamples"), 10); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("StartingLine"), 1); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("StartingSample"), 1); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("EndingLine"), 10); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("EndingSample"), 10); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("LineIncrement"), 1.0); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("SampleIncrement"), 1.0); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputLines"), 10); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputSamples"), 10); +} + +TEST_F(DefaultCube, FunctionalTestEnlargeScale) { + QVector<QString> args = {"to=" + tempDir.path()+"/output.cub", "sscale=2", "lscale=4"}; + UserInterface options(APP_XML, args); + Pvl appLog; + enlarge(testCube, options, &appLog); + + PvlGroup groundPoint = appLog.findGroup("Results"); + + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("LineIncrement"), .25); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("SampleIncrement"), .5); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputLines"), 40); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputSamples"), 20); +} + +TEST_F(DefaultCube, FunctionalTestEnlargeTotal) { + QVector<QString> args = {"to=" + tempDir.path()+"/output.cub", "mode=total", "ons=20", "onl=40"}; + UserInterface options(APP_XML, args); + Pvl appLog; + enlarge(testCube, options, &appLog); + + PvlGroup groundPoint = appLog.findGroup("Results"); + + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("LineIncrement"), .25); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("SampleIncrement"), .5); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputLines"), 40); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputSamples"), 20); +} + +TEST_F(DefaultCube, FunctionalTestEnlargeSmallDimensions) { + QVector<QString> args = {"to=" + tempDir.path()+"/output.cub", "mode=total", "ons=10", "onl=1"}; + UserInterface options(APP_XML, args); + Pvl appLog; + + QString message = "Number of output samples/lines must be greater than or equal"; + try { + enlarge(testCube, options, &appLog); + FAIL() << "Expected an exception to be thrown"; + } + catch(Isis::IException &e) { + EXPECT_PRED_FORMAT2(Isis::AssertIExceptionMessage, e, message); + } + catch(...) { + FAIL() << "Expected error message: \"" << message.toStdString() << "\""; + } +} + +TEST_F(DefaultCube, FunctionalTestEnlargeNearestNeighbor) { + QVector<QString> args = {"to=" + tempDir.path()+"/output.cub", "interp=nearestneighbor"}; + UserInterface options(APP_XML, args); + Pvl appLog; + enlarge(testCube, options, &appLog); + + PvlGroup groundPoint = appLog.findGroup("Results"); + // Just make sure the applications runs without error. Tests the interpolation method in + // the enlarge object. + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("LineIncrement"), 1.0); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("SampleIncrement"), 1.0); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputLines"), 10); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputSamples"), 10); +} + +TEST_F(DefaultCube, FunctionalTestEnlargeBilinear) { + QVector<QString> args = {"to=" + tempDir.path()+"/output.cub", "interp=bilinear"}; + UserInterface options(APP_XML, args); + Pvl appLog; + enlarge(testCube, options, &appLog); + + PvlGroup groundPoint = appLog.findGroup("Results"); + // Just make sure the applications runs without error. Tests the interpolation method in + // the enlarge object. + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("LineIncrement"), 1.0); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("SampleIncrement"), 1.0); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputLines"), 10); + EXPECT_DOUBLE_EQ( (double) groundPoint.findKeyword("OutputSamples"), 10); +} \ No newline at end of file diff --git a/isis/tests/data/defaultImage/defaultCube.pvl b/isis/tests/data/defaultImage/defaultCube.pvl index ef5198a6981fce94be54997678aeb1bd255f873c..1e8865000fd3b3e0130e144b4c77622d2a07864e 100644 GIT binary patch literal 1541081 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 delta 91 zcmccF9(PP}LhZyl4GALy6D|cX@X5?eEmlxauvIWLFg2UFOL5|z$(sup+ZiYSU^+GV tFtf*I9+rp9o8Pgo<`DEx%1TWxQLt6;NlZ%3;ZjhTyi!1##WgR53jm=E9+Ln7 -- GitLab