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;
+}