diff --git a/Modules/IO/TestKernel/src/otbTestHelper.cxx b/Modules/IO/TestKernel/src/otbTestHelper.cxx index 2b1e9f6cc3ba13cba5941c65eb5e9ca7247963fa..62b83b4f79e7a2a1b01fac3aafadc5ffac9c7f84 100644 --- a/Modules/IO/TestKernel/src/otbTestHelper.cxx +++ b/Modules/IO/TestKernel/src/otbTestHelper.cxx @@ -1074,29 +1074,27 @@ int TestHelper::RegressionTestOgrFile(const char *testOgrFilename, const char *b /* -------------------------------------------------------------------- */ /* Open data source. */ /* -------------------------------------------------------------------- */ - OGRDataSource *ref_poDS = NULL; - OGRSFDriver * ref_poDriver = NULL; + GDALDataset *ref_poDS = NULL; + GDALDriver * ref_poDriver = NULL; //OGRGeometry * ref_poSpatialFilter = NULL; - OGRDataSource *test_poDS = NULL; - OGRSFDriver * test_poDriver = NULL; + GDALDataset *test_poDS = NULL; + GDALDriver * test_poDriver = NULL; //OGRGeometry * test_poSpatialFilter = NULL; - OGRRegisterAll(); - - ref_poDS = OGRSFDriverRegistrar::Open(ref_pszDataSource, !bReadOnly, &ref_poDriver); + ref_poDS = (GDALDataset*)GDALOpen(ref_pszDataSource, GA_Update); if (ref_poDS == NULL && !bReadOnly) { - ref_poDS = OGRSFDriverRegistrar::Open(ref_pszDataSource, FALSE, &ref_poDriver); + ref_poDS = (GDALDataset*)GDALOpen(ref_pszDataSource, GA_ReadOnly); if (ref_poDS != NULL && m_ReportErrors) { std::cout << "Had to open REF data source read-only.\n"; bReadOnly = TRUE; } } - test_poDS = OGRSFDriverRegistrar::Open(test_pszDataSource, !bReadOnly, &test_poDriver); + test_poDS = (GDALDataset*)GDALOpen(test_pszDataSource, (bReadOnly?GA_ReadOnly:GA_Update)); if (test_poDS == NULL && !bReadOnly) { - test_poDS = OGRSFDriverRegistrar::Open(test_pszDataSource, FALSE, &test_poDriver); + test_poDS = (GDALDataset*)GDALOpen(test_pszDataSource, GA_ReadOnly); if (test_poDS != NULL && m_ReportErrors) { std::cout << "Had to open REF data source read-only.\n"; @@ -1108,51 +1106,67 @@ int TestHelper::RegressionTestOgrFile(const char *testOgrFilename, const char *b /* -------------------------------------------------------------------- */ if (ref_poDS == NULL) { - OGRSFDriverRegistrar *ref_poR = OGRSFDriverRegistrar::GetRegistrar(); + GDALDriverManager * ref_poR = GetGDALDriverManager(); if (m_ReportErrors) std::cout << "FAILURE:\n" "Unable to open REF datasource `" << ref_pszDataSource << "' with the following drivers." << std::endl; for (int iDriver = 0; iDriver < ref_poR->GetDriverCount(); ++iDriver) { - std::cout << " -> " << ref_poR->GetDriver(iDriver)->GetName() << std::endl; + std::cout << " -> " << GDALGetDriverShortName(ref_poR->GetDriver(iDriver)) << std::endl; } return (1); } + ref_poDriver = test_poDS->GetDriver(); CPLAssert(ref_poDriver != NULL); if (test_poDS == NULL) { - OGRSFDriverRegistrar *test_poR = OGRSFDriverRegistrar::GetRegistrar(); + GDALDriverManager *test_poR = GetGDALDriverManager(); if (m_ReportErrors) std::cout << "FAILURE:\n" "Unable to open TEST datasource `" << test_pszDataSource << "' with the following drivers." << std::endl; for (int iDriver = 0; iDriver < test_poR->GetDriverCount(); ++iDriver) { - std::cout << " -> " << test_poR->GetDriver(iDriver)->GetName() << std::endl; + std::cout << " -> " << GDALGetDriverShortName(test_poR->GetDriver(iDriver)) << std::endl; } return (1); } + test_poDriver = test_poDS->GetDriver(); CPLAssert(test_poDriver != NULL); /* -------------------------------------------------------------------- */ /* Some information messages. */ /* -------------------------------------------------------------------- */ - otbCheckStringValue("INFO: using driver", ref_poDriver->GetName(), test_poDriver->GetName(), nbdiff, m_ReportErrors); + otbCheckStringValue("INFO: using driver", GDALGetDriverShortName(ref_poDriver), GDALGetDriverShortName(test_poDriver), nbdiff, m_ReportErrors); + + // TODO: Improve this check as it will stop as soon as one of the + // list ends (i.e. it does not guarantee that all files are present) + char ** refFileList = ref_poDS->GetFileList(); + char ** testFileList = test_poDS->GetFileList(); + + unsigned int fileId = 0; - std::string strRefName(ref_poDS->GetName()); - std::string strTestName(test_poDS->GetName()); - if (strRefName != strTestName) + while (refFileList[fileId] && testFileList[fileId]) { - if (!m_ReportErrors) + std::string strRefName(refFileList[fileId]); + std::string strTestName(testFileList[fileId]); + if (strRefName != strTestName) { - otbPrintDiff("WARNING: INFO: Internal data source name poDS->GetName() were different", - strRefName, - strTestName); + if (!m_ReportErrors) + { + otbPrintDiff("WARNING: INFO: Internal data source files were different", + strRefName, + strTestName); + } } + ++fileId; } + CSLDestroy(refFileList); + CSLDestroy(testFileList); + /* -------------------------------------------------------------------- */ /* Process each data source layer. */ /* -------------------------------------------------------------------- */ @@ -1240,8 +1254,8 @@ int TestHelper::RegressionTestOgrFile(const char *testOgrFilename, const char *b /* -------------------------------------------------------------------- */ /* Close down. */ /* -------------------------------------------------------------------- */ - OGRDataSource::DestroyDataSource( ref_poDS ); - OGRDataSource::DestroyDataSource( test_poDS ); + GDALClose( ref_poDS ); + GDALClose( test_poDS ); return (nbdiff != 0) ? 1 : 0; } @@ -1256,7 +1270,7 @@ void TestHelper::DumpOGRFeature(FILE* fpOut, OGRFeature* feature, char** papszOp return; } - fprintf(fpOut, "OGRFeature:%ld\n", feature->GetFID()); + fprintf(fpOut, "OGRFeature:%lld\n", feature->GetFID()); const char* pszDisplayFields = CSLFetchNameValue(papszOptions, "DISPLAY_FIELDS"); @@ -1374,6 +1388,8 @@ void TestHelper::DumpOGRGeometry(FILE* fp, OGRGeometry* geometry, const char * p } case wkbLinearRing: break; + default: + break; } } else if (pszDisplayGeometry == NULL || CSLTestBoolean(pszDisplayGeometry) ||