6 #ifndef TEST_UFO_HISTORYCHECK_H_
7 #define TEST_UFO_HISTORYCHECK_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 "ioda/ObsVector.h"
20 #include "oops/mpi/mpi.h"
21 #include "oops/runs/Test.h"
22 #include "oops/util/Expect.h"
23 #include "test/TestEnvironment.h"
30 util::DateTime bgn(conf.getString(
"window begin"));
31 util::DateTime end(conf.getString(
"window end"));
33 const eckit::LocalConfiguration obsSpaceConf(conf,
"obs space");
34 ioda::ObsTopLevelParameters obsParams;
35 obsParams.validateAndDeserialize(obsSpaceConf);
36 ioda::ObsSpace obsspace(obsParams, oops::mpi::world(), bgn, end, oops::mpi::myself());
38 eckit::LocalConfiguration filterConf(conf,
"History Check");
40 filterParameters.validateAndDeserialize(filterConf);
42 if (conf.has(
"air_temperatures")) {
43 const std::vector<float> airTemperatures = conf.getFloatVector(
"air_temperatures");
44 obsspace.put_db(
"ObsValue",
"air_temperature", airTemperatures);
47 if (conf.has(
"station_ids")) {
48 const std::vector<int> stationIds = conf.getIntVector(
"station_ids");
49 obsspace.put_db(
"MetaData",
"station_id", stationIds);
52 if (conf.has(
"station_ids_string")) {
53 const std::vector<std::string> stationIds = conf.getStringVector(
"station_ids_string");
54 obsspace.put_db(
"MetaData",
"station_id", stationIds);
58 obsspace, obsspace.obsvariables(),
"ObsError"));
60 obsspace, obsspace.obsvariables()));
65 const std::vector<size_t> expectedRejectedObsIndices =
66 conf.getUnsignedVector(
"expected rejected obs indices");
67 std::vector<size_t> rejectedObsIndices;
68 for (
size_t i = 0; i < qcflags->nlocs(); ++i)
70 rejectedObsIndices.push_back(i);
71 EXPECT_EQUAL(rejectedObsIndices, expectedRejectedObsIndices);
76 std::string
testid()
const override {
return "ufo::test::HistoryCheck";}
79 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
81 const eckit::LocalConfiguration conf(::test::TestEnvironment::config());
82 for (
const std::string &testCaseName : conf.keys())
84 const eckit::LocalConfiguration testCaseConf(::test::TestEnvironment::config(), testCaseName);
85 ts.emplace_back(
CASE(
"ufo/HistoryCheck/" + testCaseName, testCaseConf)
Options controlling the operation of history check filter.
void preProcess() override
void register_tests() const override
std::string testid() const override
void clear() const override
void testHistoryCheck(const eckit::LocalConfiguration &conf)
CASE("ufo/DataExtractor/bilinearinterp/float_linear")