From aa422f8fec79bfcb21afaa1bbab575532b0f84a1 Mon Sep 17 00:00:00 2001 From: Cyrille Valladeau <cyrille.valladeau@c-s.fr> Date: Mon, 30 Jan 2012 11:32:42 +0100 Subject: [PATCH] BUG: fix pb with no consecutive multi baseline... again. #471 --- Code/Testing/otbTestHelper.cxx | 43 ++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/Code/Testing/otbTestHelper.cxx b/Code/Testing/otbTestHelper.cxx index 82ae01f813..8ca67cabf7 100644 --- a/Code/Testing/otbTestHelper.cxx +++ b/Code/Testing/otbTestHelper.cxx @@ -26,6 +26,10 @@ #include <cctype> #include <algorithm> +#include "itksys/SystemTools.hxx" +#include "itksys/Directory.hxx" +#include "itksys/RegularExpression.hxx" + #include "otbImage.h" #include "otbVectorImage.h" #include "otbImageFileReader.h" @@ -1010,29 +1014,32 @@ std::map<std::string, int> TestHelper::RegressionTestBaselines(char *baselineFil std::map<std::string, int> baselines; baselines[std::string(baselineFilename)] = 0; - std::string originalBaseline(baselineFilename); + std::string myPath = itksys::SystemTools::GetFilenamePath( baselineFilename ); + itksys::Directory myDir; + myDir.Load( myPath.c_str() ); + const unsigned int nbFiles = myDir.GetNumberOfFiles(); - int x = 0; - std::string::size_type suffixPos = originalBaseline.find_last_of("."); - std::string::size_type maxPathPos = originalBaseline.find_last_of("/"); - std::string suffix; - if ((suffixPos != std::string::npos) && ((suffixPos>maxPathPos) || (maxPathPos==std::string::npos))) - { - suffix = originalBaseline.substr(suffixPos, originalBaseline.length()); - originalBaseline.erase(suffixPos, originalBaseline.length()); - } - while (++x) + const std::string originalBaseline = itksys::SystemTools::GetFilenameWithoutLastExtension(baselineFilename); + const unsigned int sizeRef = originalBaseline.size(); + + myPath.append("/"); + itksys::RegularExpression reg; + reg.compile( "^\\.[0-9]"); + + for(unsigned int i=0; i<nbFiles; i++) { - std::ostringstream filename; - filename << originalBaseline << "." << x << suffix; - std::ifstream filestream(filename.str().c_str()); - if (!filestream) + const std::string curFilename = itksys::SystemTools::GetFilenameWithoutLastExtension( myDir.GetFile( i ) ); + + if( curFilename.substr(0, sizeRef) == originalBaseline ) { - break; + if(reg.find( curFilename.substr(sizeRef, curFilename.size()))) + { + std::string myFile = myPath; + baselines[myFile.append(myDir.GetFile( i ) )] = 0; + } } - baselines[filename.str()] = 0; - filestream.close(); } + return baselines; } -- GitLab