8 #ifndef TEST_UFO_PROCESSWHERE_H_
9 #define TEST_UFO_PROCESSWHERE_H_
14 #define ECKIT_TESTING_SELF_REGISTER_CASES 0
16 #include "eckit/config/LocalConfiguration.h"
17 #include "eckit/testing/Test.h"
18 #include "ioda/ObsSpace.h"
19 #include "oops/mpi/mpi.h"
20 #include "oops/runs/Test.h"
21 #include "oops/util/Logger.h"
22 #include "test/TestEnvironment.h"
27 #include "oops/util/parameters/Parameter.h"
28 #include "oops/util/parameters/Parameters.h"
29 #include "oops/util/parameters/RequiredParameter.h"
37 oops::Parameter<std::vector<WhereParameters>>
where{
"where", {},
this};
44 bool is_in_usererror =
false) {
45 util::DateTime bgn(conf.getString(
"window begin"));
46 util::DateTime end(conf.getString(
"window end"));
48 eckit::LocalConfiguration obsconf(conf,
"obs space");
49 ioda::ObsTopLevelParameters obsparams;
50 obsparams.validateAndDeserialize(obsconf);
51 ioda::ObsSpace ospace(obsparams, oops::mpi::world(), bgn, end, oops::mpi::myself());
54 const int nlocs = conf.getInt(
"nlocs");
55 EXPECT(data.nlocs() ==
nlocs);
57 std::vector<eckit::LocalConfiguration> confs;
58 conf.get(
"ProcessWhere", confs);
59 for (
size_t jconf = 0; jconf < confs.size(); ++jconf) {
60 eckit::LocalConfiguration config = confs[jconf];
62 params.validateAndDeserialize(config);
63 if (is_in_usererror) {
68 const int size = std::count(result.begin(), result.end(),
true);
69 oops::Log::info() <<
"reference: " << size_ref <<
", compare with " << size << std::endl;
70 EXPECT(size == size_ref);
82 std::string
testid()
const override {
return "ufo::test::ProcessWhere";}
85 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
87 ts.emplace_back(
CASE(
"ufo/ProcessWhere/testProcessWhere_successful") {
88 testProcessWhere(eckit::LocalConfiguration(::test::TestEnvironment::config(),
92 ts.emplace_back(
CASE(
"ufo/ProcessWhere/testProcessWhere_isin_usererror") {
93 testProcessWhere(eckit::LocalConfiguration(::test::TestEnvironment::config(),
94 "user_error_type_handling_is_in"),
void clear() const override
std::string testid() const override
void register_tests() const override
oops::Parameter< std::vector< WhereParameters > > where
oops::RequiredParameter< int > sizeWhereTrue
OOPS_CONCRETE_PARAMETERS(TestParameters, Parameters)
void testProcessWhere(const eckit::LocalConfiguration &conf, bool is_in_usererror=false)
CASE("ufo/DataExtractor/bilinearinterp/float_linear")
integer function nlocs(this)
Return the number of observational locations in this Locations object.
std::vector< bool > processWhere(const std::vector< WhereParameters > ¶ms, const ObsFilterData &filterdata)