From fedeac5138ab7b2467991b45144db44fc831b9bc Mon Sep 17 00:00:00 2001
From: Guillaume Pasero <guillaume.pasero@c-s.fr>
Date: Tue, 21 Nov 2017 10:47:29 +0100
Subject: [PATCH] TEST: add tests for MultiImageFileWriter

---
 Modules/IO/ImageIO/test/CMakeLists.txt        | 29 +++++++++
 .../IO/ImageIO/test/otbImageIOTestDriver.cxx  |  1 +
 .../test/otbMultiImageFileWriterTest.cxx      | 65 +++++++++++++++++++
 3 files changed, 95 insertions(+)
 create mode 100644 Modules/IO/ImageIO/test/otbMultiImageFileWriterTest.cxx

diff --git a/Modules/IO/ImageIO/test/CMakeLists.txt b/Modules/IO/ImageIO/test/CMakeLists.txt
index aac49fcdea..110b25410e 100644
--- a/Modules/IO/ImageIO/test/CMakeLists.txt
+++ b/Modules/IO/ImageIO/test/CMakeLists.txt
@@ -76,6 +76,7 @@ otbImageIOFactoryNew.cxx
 otbCompareWritingComplexImage.cxx
 otbImageFileReaderOptBandTest.cxx
 otbImageFileWriterOptBandTest.cxx
+otbMultiImageFileWriterTest.cxx
 )
 
 add_executable(otbImageIOTestDriver ${OTBImageIOTests})
@@ -1339,3 +1340,31 @@ otb_add_test(NAME ioTvImageIOToWriterOptions_OptBandReorgTest COMMAND otbImageIO
   ${TEMP}/QB_Toulouse_Ortho_XS_WriterOptBandReorg.tif?bands=2,:,-3,2:-1
   4
   )
+
+otb_add_test(NAME ioTvMultiImageFileWriter_SameSize
+  COMMAND otbImageIOTestDriver
+  --compare-n-images ${EPSILON_9} 2
+  ${INPUTDATA}/GomaAvant.png
+  ${TEMP}/ioTvMultiImageFileWriter_SameSize1.tif
+  ${INPUTDATA}/GomaApres.png
+  ${TEMP}/ioTvMultiImageFileWriter_SameSize2.tif
+  otbMultiImageFileWriterTest
+  ${INPUTDATA}/GomaAvant.png
+  ${INPUTDATA}/GomaApres.png
+  ${TEMP}/ioTvMultiImageFileWriter_SameSize1.tif
+  ${TEMP}/ioTvMultiImageFileWriter_SameSize2.tif
+  50)
+
+otb_add_test(NAME ioTvMultiImageFileWriter_DiffSize
+  COMMAND otbImageIOTestDriver
+  --compare-n-images ${EPSILON_9} 2
+  ${INPUTDATA}/GomaAvant.png
+  ${TEMP}/ioTvMultiImageFileWriter_DiffSize1.tif
+  ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif
+  ${TEMP}/ioTvMultiImageFileWriter_DiffSize2.tif
+  otbMultiImageFileWriterTest
+  ${INPUTDATA}/GomaAvant.png
+  ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif
+  ${TEMP}/ioTvMultiImageFileWriter_DiffSize1.tif
+  ${TEMP}/ioTvMultiImageFileWriter_DiffSize2.tif
+  25)
diff --git a/Modules/IO/ImageIO/test/otbImageIOTestDriver.cxx b/Modules/IO/ImageIO/test/otbImageIOTestDriver.cxx
index fb2aa583aa..4a7ff9409a 100644
--- a/Modules/IO/ImageIO/test/otbImageIOTestDriver.cxx
+++ b/Modules/IO/ImageIO/test/otbImageIOTestDriver.cxx
@@ -154,4 +154,5 @@ void RegisterTests()
   REGISTER_TEST(otbCompareWritingComplexImageTest);
   REGISTER_TEST(otbImageFileReaderOptBandTest);
   REGISTER_TEST(otbImageFileWriterOptBandTest);
+  REGISTER_TEST(otbMultiImageFileWriterTest);
 }
diff --git a/Modules/IO/ImageIO/test/otbMultiImageFileWriterTest.cxx b/Modules/IO/ImageIO/test/otbMultiImageFileWriterTest.cxx
new file mode 100644
index 0000000000..77d6ede243
--- /dev/null
+++ b/Modules/IO/ImageIO/test/otbMultiImageFileWriterTest.cxx
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) CS SI
+ *
+ * This file is part of Orfeo Toolbox
+ *
+ *     https://www.orfeo-toolbox.org/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "otbMultiImageFileWriter.h"
+#include "otbImage.h"
+#include "otbImageFileReader.h"
+
+int otbMultiImageFileWriterTest(int argc, char* argv[])
+{
+  typedef unsigned short PixelType1;
+  typedef otb::Image<PixelType1, 2> ImageType1;
+  typedef otb::ImageFileReader<ImageType1> ReaderType1;
+
+  typedef double PixelType2;
+  typedef otb::Image<PixelType2, 2> ImageType2;
+  typedef otb::ImageFileReader<ImageType2> ReaderType2;
+
+  typedef otb::MultiImageFileWriter WriterType;
+
+  if (argc < 6)
+    {
+    std::cout << "Usage: " << argv[0] << " inputImageFileName1 inputImageFileName2 outputImageFileName1 outputImageFileName2 numberOfLinesPerStrip\n";
+    return EXIT_FAILURE;
+    }
+
+  const char * inputImageFileName1 = argv[1];
+  const char * inputImageFileName2 = argv[2];
+  const std::string outputImageFileName1 = argv[3];
+  const std::string outputImageFileName2 = argv[4];
+  const int numberOfLinesPerStrip = atoi(argv[5]);
+
+  ReaderType1::Pointer reader1 = ReaderType1::New();
+  reader1->SetFileName( inputImageFileName1 );
+
+  ReaderType2::Pointer reader2 = ReaderType2::New();
+  reader2->SetFileName( inputImageFileName2 );
+
+  WriterType::Pointer writer = WriterType::New();
+  writer->AddInputImage( reader1->GetOutput(), outputImageFileName1);
+  writer->AddInputImage( reader2->GetOutput(), outputImageFileName2);
+  writer->SetNumberOfLinesStrippedStreaming( numberOfLinesPerStrip );
+
+  writer->Update();
+
+  std::cout << writer << std::endl;
+
+  return EXIT_SUCCESS;
+}
-- 
GitLab