@@ -101,6 +101,170 @@ TEST_F(test_gdal_algorithm, GDALAlgorithmArgDecl_SetMaxCount)
101
101
2 );
102
102
}
103
103
104
+ class MyAlgorithmWithDummyRun : public GDALAlgorithm
105
+ {
106
+ public:
107
+ MyAlgorithmWithDummyRun (const std::string &name = " test" ,
108
+ const std::string &description = " " ,
109
+ const std::string &url = " https://example.com" )
110
+ : GDALAlgorithm(name, description, url)
111
+ {
112
+ }
113
+
114
+ bool RunImpl (GDALProgressFunc, void *) override
115
+ {
116
+ return true ;
117
+ }
118
+ };
119
+
120
+ TEST_F (test_gdal_algorithm, GDALAlgorithmArg_SetDefault)
121
+ {
122
+
123
+ class MyAlgorithm : public MyAlgorithmWithDummyRun
124
+ {
125
+ public:
126
+ MyAlgorithm ()
127
+ {
128
+ {
129
+ bool v;
130
+ auto &arg = AddArg (" " , 0 , " " , &v);
131
+ arg.SetDefault (true );
132
+ EXPECT_TRUE (arg.GetDefault <bool >());
133
+
134
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
135
+ CPLErrorReset ();
136
+ arg.SetDefault (" invalid" );
137
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
138
+ }
139
+
140
+ {
141
+ int v;
142
+ auto &arg = AddArg (" " , 0 , " " , &v);
143
+ arg.SetDefault (5 );
144
+ EXPECT_EQ (arg.GetDefault <int >(), 5 );
145
+
146
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
147
+ CPLErrorReset ();
148
+ arg.SetDefault (" invalid" );
149
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
150
+ }
151
+
152
+ {
153
+ double v;
154
+ auto &arg = AddArg (" " , 0 , " " , &v);
155
+ arg.SetDefault (4.5 );
156
+ EXPECT_EQ (arg.GetDefault <double >(), 4.5 );
157
+
158
+ arg.SetDefault (5 );
159
+ EXPECT_EQ (arg.GetDefault <double >(), 5 );
160
+
161
+ arg.SetDefault (2 .5f );
162
+ EXPECT_EQ (arg.GetDefault <double >(), 2.5 );
163
+
164
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
165
+ CPLErrorReset ();
166
+ arg.SetDefault (" invalid" );
167
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
168
+ }
169
+
170
+ {
171
+ std::string v;
172
+ auto &arg = AddArg (" " , 0 , " " , &v);
173
+
174
+ arg.SetDefault (" ab" );
175
+ EXPECT_STREQ (arg.GetDefault <std::string>().c_str (), " ab" );
176
+
177
+ arg.SetDefault (std::string (" cd" ));
178
+ EXPECT_STREQ (arg.GetDefault <std::string>().c_str (), " cd" );
179
+
180
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
181
+ CPLErrorReset ();
182
+ arg.SetDefault (0 );
183
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
184
+ }
185
+
186
+ {
187
+ std::vector<int > v;
188
+ auto &arg = AddArg (" " , 0 , " " , &v);
189
+ arg.SetDefault (5 );
190
+ std::vector<int > expected{5 };
191
+ EXPECT_EQ (arg.GetDefault <std::vector<int >>(), expected);
192
+
193
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
194
+ CPLErrorReset ();
195
+ arg.SetDefault (" invalid" );
196
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
197
+ }
198
+
199
+ {
200
+ std::vector<double > v;
201
+ auto &arg = AddArg (" " , 0 , " " , &v);
202
+ arg.SetDefault (4.5 );
203
+ {
204
+ std::vector<double > expected{4.5 };
205
+ EXPECT_EQ (arg.GetDefault <std::vector<double >>(), expected);
206
+ }
207
+
208
+ arg.SetDefault (5 );
209
+ {
210
+ std::vector<double > expected{5 };
211
+ EXPECT_EQ (arg.GetDefault <std::vector<double >>(), expected);
212
+ }
213
+
214
+ arg.SetDefault (2 .5f );
215
+ {
216
+ std::vector<double > expected{2.5 };
217
+ EXPECT_EQ (arg.GetDefault <std::vector<double >>(), expected);
218
+ }
219
+
220
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
221
+ CPLErrorReset ();
222
+ arg.SetDefault (" invalid" );
223
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
224
+ }
225
+
226
+ {
227
+ std::vector<std::string> v;
228
+ auto &arg = AddArg (" " , 0 , " " , &v);
229
+
230
+ arg.SetDefault (" ab" );
231
+ {
232
+ std::vector<std::string> expected{" ab" };
233
+ EXPECT_EQ (arg.GetDefault <std::vector<std::string>>(),
234
+ expected);
235
+ }
236
+
237
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
238
+ CPLErrorReset ();
239
+ arg.SetDefault (0 );
240
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
241
+ }
242
+
243
+ {
244
+ GDALArgDatasetValue v;
245
+ auto &arg = AddArg (" " , 0 , " " , &v);
246
+
247
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
248
+ CPLErrorReset ();
249
+ arg.SetDefault (0 );
250
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
251
+ }
252
+
253
+ {
254
+ std::vector<GDALArgDatasetValue> v;
255
+ auto &arg = AddArg (" " , 0 , " " , &v);
256
+
257
+ CPLErrorStateBackuper oBackuper (CPLQuietErrorHandler);
258
+ CPLErrorReset ();
259
+ arg.SetDefault (0 );
260
+ EXPECT_EQ (CPLGetLastErrorType (), CE_Failure);
261
+ }
262
+ }
263
+ };
264
+
265
+ MyAlgorithm alg;
266
+ }
267
+
104
268
TEST_F (test_gdal_algorithm, GDALAlgorithmArg_Set)
105
269
{
106
270
{
@@ -783,22 +947,6 @@ TEST_F(test_gdal_algorithm, SetIsCRSArg_wrong_type)
783
947
}
784
948
}
785
949
786
- class MyAlgorithmWithDummyRun : public GDALAlgorithm
787
- {
788
- public:
789
- MyAlgorithmWithDummyRun (const std::string &name = " test" ,
790
- const std::string &description = " " ,
791
- const std::string &url = " https://example.com" )
792
- : GDALAlgorithm(name, description, url)
793
- {
794
- }
795
-
796
- bool RunImpl (GDALProgressFunc, void *) override
797
- {
798
- return true ;
799
- }
800
- };
801
-
802
950
TEST_F (test_gdal_algorithm, wrong_long_name_dash)
803
951
{
804
952
class MyAlgorithm : public MyAlgorithmWithDummyRun
0 commit comments