8 #ifndef TEST_UFO_TEMPORALTHINNING_H_
9 #define TEST_UFO_TEMPORALTHINNING_H_
16 #define ECKIT_TESTING_SELF_REGISTER_CASES 0
18 #include "eckit/config/LocalConfiguration.h"
19 #include "eckit/testing/Test.h"
20 #include "ioda/ObsSpace.h"
21 #include "ioda/ObsVector.h"
22 #include "oops/mpi/mpi.h"
23 #include "oops/runs/Test.h"
24 #include "oops/util/Expect.h"
25 #include "test/TestEnvironment.h"
33 util::DateTime bgn(
conf.getString(
"window begin"));
34 util::DateTime end(
conf.getString(
"window end"));
36 const eckit::LocalConfiguration obsSpaceConf(
conf,
"obs space");
37 ioda::ObsSpace obsspace(obsSpaceConf, oops::mpi::world(), bgn, end, oops::mpi::myself());
39 if (
conf.has(
"category")) {
40 const std::vector<int> categories =
conf.getIntVector(
"category");
41 obsspace.put_db(
"MetaData",
"category", categories);
44 if (
conf.has(
"priority")) {
45 const std::vector<int> priorities =
conf.getIntVector(
"priority");
46 obsspace.put_db(
"MetaData",
"priority", priorities);
50 obsspace, obsspace.obsvariables(),
"ObsError"));
52 obsspace, obsspace.obsvariables()));
54 const eckit::LocalConfiguration filterConf(
conf,
"TemporalThinning");
58 const std::vector<size_t> expectedThinnedObsIndices =
59 conf.getUnsignedVector(
"expected_thinned_obs_indices");
60 std::vector<size_t> thinnedObsIndices;
61 for (
size_t i = 0; i < qcflags->nlocs(); ++i)
63 thinnedObsIndices.push_back(i);
64 EXPECT_EQUAL(thinnedObsIndices, expectedThinnedObsIndices);
69 std::string
testid()
const override {
return "ufo::test::TemporalThinning";}
72 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
74 const eckit::LocalConfiguration
conf(::test::TestEnvironment::config());
75 for (
const std::string & testCaseName :
conf.keys())
77 const eckit::LocalConfiguration testCaseConf(::test::TestEnvironment::config(), testCaseName);
78 ts.emplace_back(
CASE(
"ufo/TemporalThinning/" + testCaseName, testCaseConf)
91 #endif // TEST_UFO_TEMPORALTHINNING_H_