diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt index c591bafa550b3635eea6e1066dcb211e5a91c668..8ccf9ab209c27f21d2436cb8ffb61334ecb651ee 100644 --- a/Testing/Code/IO/CMakeLists.txt +++ b/Testing/Code/IO/CMakeLists.txt @@ -1159,6 +1159,17 @@ ADD_TEST(ioTvImageComplexDoubleTest ${IO_TESTS9} ${INPUTDATA}/multibandComplexDouble.hdr ) +ADD_TEST(ioTvVectorImageComplexIntoRealFloatTest ${IO_TESTS9} + otbVectorImageComplexIntoRealFloatTest + ${INPUTDATA}/multibandComplexFloat.hdr +) + +ADD_TEST(ioTvVectorImageComplexIntoRealDoubleTest ${IO_TESTS9} + otbVectorImageComplexIntoRealDoubleTest + ${INPUTDATA}/multibandComplexDouble.hdr +) + + # --- otb::VectorImageReadWriteTest --- ADD_TEST(ioTvVectorImageFileReaderWriterTest ${IO_TESTS9} --compare-image ${EPSILON_9} diff --git a/Testing/Code/IO/otbComplexImageTests.cxx b/Testing/Code/IO/otbComplexImageTests.cxx index 51e9cb4c9a54048226f767367ac5f46add525658..7bf945dd3e3b5d4649c9ad5a75eac85f7533e18f 100644 --- a/Testing/Code/IO/otbComplexImageTests.cxx +++ b/Testing/Code/IO/otbComplexImageTests.cxx @@ -115,7 +115,7 @@ int otbImageComplexGenericTest(int argc, char* argv[]) pixel = reader->GetOutput()->GetPixel(index); std::cout << pixel << std::endl; - if (pixel != PixelType(4040,4041)) + if (pixel != PixelType(2020,2021)) { std::cout << "Found " << pixel << " should be " << PixelType(2020,2021) << std::endl; return EXIT_FAILURE; @@ -134,3 +134,51 @@ int otbImageComplexDoubleTest(int argc, char* argv[]) { return otbImageComplexGenericTest<double>(argc, argv); } + + +template<class InternalType> +int otbVectorImageComplexIntoRealGenericTest(int argc, char* argv[]) +{ + typedef InternalType PixelType; + typedef otb::VectorImage<PixelType, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + typename ReaderType::Pointer reader = ReaderType::New(); + reader->SetFileName(argv[1]); + reader->UpdateOutputInformation(); + std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl; + itk::ImageIOBase::Pointer io = reader->GetImageIO(); + std::cout << io << std::endl; + reader->Update(); + typename ImageType::IndexType index; + index[0]=0; + index[1]=0; + + typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index); + std::cout << pixel << std::endl; + + //Test value + if (reader->GetOutput()->GetNumberOfComponentsPerPixel() != 4) + { + std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << " bands instead of 4" << std::endl; + return EXIT_FAILURE; + } + if ((pixel[0] != 0) || (pixel[1] != 1) || (pixel[2] != 20000) || (pixel[3] != 20001)) + { + std::cout << "Found " << pixel[0] << " should be " << 0 << std::endl; + std::cout << "Found " << pixel[1] << " should be " << 1 << std::endl; + std::cout << "Found " << pixel[2] << " should be " << 20000 << std::endl; + std::cout << "Found " << pixel[3] << " should be " << 20001 << std::endl; + return EXIT_FAILURE; + } + return EXIT_SUCCESS; +} + +int otbVectorImageComplexIntoRealFloatTest(int argc, char* argv[]) +{ + return otbVectorImageComplexIntoRealGenericTest<float>(argc, argv); +} + +int otbVectorImageComplexIntoRealDoubleTest(int argc, char* argv[]) +{ + return otbVectorImageComplexIntoRealGenericTest<double>(argc, argv); +} diff --git a/Testing/Code/IO/otbIOTests9.cxx b/Testing/Code/IO/otbIOTests9.cxx index 78ce58e98c2a6f2d15e39df96723e25f58c0700a..8ffe676d914a0dc3eeae101d1f237243f8f2dfca 100644 --- a/Testing/Code/IO/otbIOTests9.cxx +++ b/Testing/Code/IO/otbIOTests9.cxx @@ -31,6 +31,8 @@ void RegisterTests() REGISTER_TEST(otbVectorImageComplexNew); REGISTER_TEST(otbVectorImageComplexFloatTest); REGISTER_TEST(otbVectorImageComplexDoubleTest); + REGISTER_TEST(otbVectorImageComplexIntoRealFloatTest); + REGISTER_TEST(otbVectorImageComplexIntoRealDoubleTest); REGISTER_TEST(otbImageComplexFloatTest); REGISTER_TEST(otbImageComplexDoubleTest); REGISTER_TEST(otbStreamingImageFilterTest);