LCOV - code coverage report
Current view: top level - autotest/cpp - test_utilities.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 20 20 100.0 %
Date: 2024-11-21 22:18:42 Functions: 4 4 100.0 %

          Line data    Source code
       1             : ///////////////////////////////////////////////////////////////////////////////
       2             : //
       3             : // Project:  C++ Test Suite for GDAL/OGR
       4             : // Purpose:  Test the C API of utilities as library functions
       5             : // Author:   Even Rouault <even.rouault at spatialys.com>
       6             : //
       7             : ///////////////////////////////////////////////////////////////////////////////
       8             : // Copyright (c) 2023, Even Rouault <even.rouault at spatialys.com>
       9             : /*
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "gdal_unit_test.h"
      14             : 
      15             : #include "cpl_error.h"
      16             : #include "cpl_string.h"
      17             : #include "gdal_priv.h"
      18             : #include "gdal_utils.h"
      19             : 
      20             : #include "gtest_include.h"
      21             : 
      22             : namespace
      23             : {
      24             : 
      25             : struct test_utilities : public ::testing::Test
      26             : {
      27             : };
      28             : 
      29           4 : TEST_F(test_utilities, GDALFootprint)
      30             : {
      31           2 :     CPLErrorHandlerPusher oQuietErrors(CPLQuietErrorHandler);
      32             :     // Test if (pszDest == nullptr && hDstDS == nullptr)
      33           1 :     EXPECT_EQ(GDALFootprint(/* pszDest = */ nullptr,
      34             :                             /* hDstDS = */ nullptr,
      35             :                             /* hSrcDataset = */ nullptr,
      36             :                             /* psOptionsIn = */ nullptr,
      37             :                             /* pbUsageError = */ nullptr),
      38             :               nullptr);
      39             : 
      40             :     // Test if (hSrcDataset == nullptr)
      41           1 :     EXPECT_EQ(GDALFootprint(/* pszDest = */ "/vsimem/out",
      42             :                             /* hDstDS = */ nullptr,
      43             :                             /* hSrcDataset = */ nullptr,
      44             :                             /* psOptionsIn = */ nullptr,
      45             :                             /* pbUsageError = */ nullptr),
      46             :               nullptr);
      47             : 
      48             :     // Test if (hDstDS != nullptr && psOptionsIn && psOptionsIn->bCreateOutput)
      49             :     {
      50           2 :         CPLStringList aosArgv;
      51           1 :         aosArgv.AddString("-of");
      52           1 :         aosArgv.AddString("Memory");
      53           1 :         auto poMemDrv = GetGDALDriverManager()->GetDriverByName("Memory");
      54           1 :         if (poMemDrv)
      55             :         {
      56           1 :             auto psOptions = GDALFootprintOptionsNew(aosArgv.List(), nullptr);
      57             :             auto poInDS = std::unique_ptr<GDALDataset>(
      58           2 :                 poMemDrv->Create("", 0, 0, 0, GDT_Unknown, nullptr));
      59             :             auto poOutDS = std::unique_ptr<GDALDataset>(
      60           2 :                 poMemDrv->Create("", 0, 0, 0, GDT_Unknown, nullptr));
      61           1 :             EXPECT_EQ(
      62             :                 GDALFootprint(
      63             :                     /* pszDest = */ nullptr,
      64             :                     /* hDstDS = */ GDALDataset::ToHandle(poOutDS.get()),
      65             :                     /* hSrcDataset = */ GDALDataset::ToHandle(poInDS.get()),
      66             :                     /* psOptionsIn = */ psOptions,
      67             :                     /* pbUsageError = */ nullptr),
      68             :                 nullptr);
      69           1 :             GDALFootprintOptionsFree(psOptions);
      70             :         }
      71             :     }
      72             : 
      73             :     // Test if (psOptions == nullptr)
      74             :     // and if (poSrcDS->GetRasterCount() == 0)
      75             :     {
      76           1 :         auto poMemDrv = GetGDALDriverManager()->GetDriverByName("Memory");
      77           1 :         if (poMemDrv)
      78             :         {
      79             :             auto poInDS = std::unique_ptr<GDALDataset>(
      80           2 :                 poMemDrv->Create("", 0, 0, 0, GDT_Unknown, nullptr));
      81             :             auto poOutDS = std::unique_ptr<GDALDataset>(
      82           2 :                 poMemDrv->Create("", 0, 0, 0, GDT_Unknown, nullptr));
      83           1 :             EXPECT_EQ(
      84             :                 GDALFootprint(
      85             :                     /* pszDest = */ nullptr,
      86             :                     /* hDstDS = */ GDALDataset::ToHandle(poOutDS.get()),
      87             :                     /* hSrcDataset = */ GDALDataset::ToHandle(poInDS.get()),
      88             :                     /* psOptionsIn = */ nullptr,
      89             :                     /* pbUsageError = */ nullptr),
      90             :                 nullptr);
      91             :         }
      92             :     }
      93           1 : }
      94             : 
      95             : }  // namespace

Generated by: LCOV version 1.14