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"
34 bool is_in_usererror =
false) {
35 util::DateTime bgn(
conf.getString(
"window begin"));
36 util::DateTime end(
conf.getString(
"window end"));
38 eckit::LocalConfiguration obsconf(
conf,
"obs space");
40 ioda::ObsSpace ospace(obsconf, oops::mpi::world(), bgn, end, oops::mpi::myself());
43 const int nlocs = obsconf.getInt(
"nlocs");
44 EXPECT(data.nlocs() == nlocs);
46 std::vector<eckit::LocalConfiguration> confs;
47 conf.get(
"ProcessWhere", confs);
48 for (
size_t jconf = 0; jconf < confs.size(); ++jconf) {
49 eckit::LocalConfiguration config = confs[jconf];
50 if (is_in_usererror) {
54 const int size_ref = config.getInt(
"size where true");
55 const int size = std::count(result.begin(), result.end(),
true);
56 oops::Log::info() <<
"reference: " << size_ref <<
", compare with " << size << std::endl;
57 EXPECT(size == size_ref);
69 std::string
testid()
const override {
return "ufo::test::ProcessWhere";}
72 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
74 ts.emplace_back(
CASE(
"ufo/ProcessWhere/testProcessWhere_successful") {
75 testProcessWhere(eckit::LocalConfiguration(::test::TestEnvironment::config(),
79 ts.emplace_back(
CASE(
"ufo/ProcessWhere/testProcessWhere_isin_usererror") {
80 testProcessWhere(eckit::LocalConfiguration(::test::TestEnvironment::config(),
81 "user_error_type_handling_is_in"),
94 #endif // TEST_UFO_PROCESSWHERE_H_