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
|