diff --git a/Testing/Code/Common/CMakeLists.txt b/Testing/Code/Common/CMakeLists.txt index fa43d270a4cfa9af6772f546c2c4667d97f1677a..36963efb754ae8a89f4192d9bfe2b3b627dc40ee 100644 --- a/Testing/Code/Common/CMakeLists.txt +++ b/Testing/Code/Common/CMakeLists.txt @@ -46,6 +46,12 @@ ADD_TEST(coTuSystemTests_IsA_Methods ${COMMON_TESTS1} ${OTB_DATA_ROOT} ) +ADD_TEST(coTvParseHdfSubsetName ${COMMON_TESTS1} + otbParseHdfSubsetName) + +ADD_TEST(coTvParseHdfFileName ${COMMON_TESTS1} + otbParseHdfFileName) + # ------- otb::Configuration ------------- ADD_TEST(coTuConfigurationTest ${COMMON_TESTS1} otbConfigurationTest diff --git a/Testing/Code/Common/otbCommonTests1.cxx b/Testing/Code/Common/otbCommonTests1.cxx index 9c8493e1142896533db7653277ce4f65a5734d87..3a7576548f400dd1b93a2d2d210369e97f86850e 100644 --- a/Testing/Code/Common/otbCommonTests1.cxx +++ b/Testing/Code/Common/otbCommonTests1.cxx @@ -33,4 +33,6 @@ void RegisterTests() REGISTER_TEST(otbTestCommandLineArgumentParserHelp); REGISTER_TEST(otbTestCommandLineArgumentParserList); REGISTER_TEST(otbTestCommandLineArgumentParserWithError); + REGISTER_TEST(otbParseHdfSubsetName); + REGISTER_TEST(otbParseHdfFileName); } diff --git a/Testing/Code/Common/otbSystemTest.cxx b/Testing/Code/Common/otbSystemTest.cxx index 349cd41364f8b1bbe0b3653ce1a08904db69f961..1a652b62926c9cb60bbc1ec7d7508d4464a10859 100644 --- a/Testing/Code/Common/otbSystemTest.cxx +++ b/Testing/Code/Common/otbSystemTest.cxx @@ -58,3 +58,56 @@ int otbSystemTest(int argc, char* argv[]) return EXIT_SUCCESS; } + + +int otbParseHdfSubsetName(int argc, char* argv []) +{ + std::string input(""); + std::string key(""); + std::string name(""); + + input = "SUBDATASET_7_NAME=HDF4_EOS:EOS_GRID:\"file/MOD13Q1.A2010001.h17v05.005.2010028003734.hdf\":MODIS_Grid_16DAY"; + if ( !otb::System::ParseHdfSubsetName(input, key, name) ) return EXIT_FAILURE; + if (key.compare("SUBDATASET_7_NAME") != 0) return EXIT_FAILURE; + if (name.compare("HDF4_EOS:EOS_GRID:\"file/MOD13Q1.A2010001.h17v05.005.2010028003734.hdf\":MODIS_Grid_16DAY") != 0) + return EXIT_FAILURE; + + input = "invalid"; + if ( otb::System::ParseHdfSubsetName(input, key, name) ) return EXIT_FAILURE; + + return EXIT_SUCCESS; +} + +int otbParseHdfFileName(int argc, char* argv []) +{ + std::string id(""); + std::string file(""); + unsigned int num(0); + + // Standard cases + id = "/some/file.hdf:6"; + if ( !otb::System::ParseHdfFileName(id, file, num) ) return EXIT_FAILURE; + if (file.compare("/some/file.hdf") != 0) return EXIT_FAILURE; + if ( num != 6 ) return EXIT_FAILURE; + + id = "/some/file.hdf:0"; + if ( !otb::System::ParseHdfFileName(id, file, num) ) return EXIT_FAILURE; + if (file.compare("/some/file.hdf") != 0) return EXIT_FAILURE; + if ( num != 0 ) return EXIT_FAILURE; + + // non specified + id = "/some/file.hdf"; + if ( otb::System::ParseHdfFileName(id, file, num) ) return EXIT_FAILURE; + + // playing with windows format + id = "C:\\some\\file.hdf"; + if ( otb::System::ParseHdfFileName(id, file, num) ) return EXIT_FAILURE; + if (num != 0) return EXIT_FAILURE; + + id = "C:\\some\\file.hdf:6"; + if ( !otb::System::ParseHdfFileName(id, file, num) ) return EXIT_FAILURE; + if (file.compare("C:\\some\\file.hdf") != 0) return EXIT_FAILURE; + if ( num != 6 ) return EXIT_FAILURE; + + return EXIT_SUCCESS; +}