8 #ifndef TEST_IODA_OBSDATAVECTOR_H_
9 #define TEST_IODA_OBSDATAVECTOR_H_
15 #include <boost/make_unique.hpp>
17 #include "eckit/config/LocalConfiguration.h"
18 #include "eckit/testing/Test.h"
20 #include "oops/mpi/mpi.h"
21 #include "oops/runs/Test.h"
22 #include "oops/test/TestEnvironment.h"
39 return theObsDataVecTestFixture;
43 const eckit::Configuration &conf = ::test::TestEnvironment::config();
44 const util::DateTime bgn(conf.getString(
"window begin"));
45 const util::DateTime end(conf.getString(
"window end"));
47 eckit::LocalConfiguration obsconf(conf,
"obs space");
48 obspace_ = boost::make_unique<ObsSpace_>(obsconf, oops::mpi::world(),
49 bgn, end, oops::mpi::myself());
55 std::string
trim(
const std::string & str) {
56 const auto strBegin = str.find_first_not_of(
"\n");
57 if (strBegin == std::string::npos)
return "";
58 const auto strEnd = str.find_last_not_of(
"\n");
59 const auto strRange = strEnd - strBegin + 1;
60 return str.substr(strBegin, strRange);
66 eckit::LocalConfiguration conf(::test::TestEnvironment::config(),
"print." + datatype);
69 for (
const std::string &var : conf.getStringVector(
"variables"))
71 const std::string group = conf.getString(
"group");
74 std::stringstream stream;
76 std::string output =
trim(stream.str());
77 std::string expectedOutput =
trim(conf.getString(
"expected output"));
78 EXPECT_EQUAL(output, expectedOutput);
81 CASE(
"ioda/ObsDataVector/printFloat") {
82 testPrint<float>(
"float");
85 CASE(
"ioda/ObsDataVector/printDouble") {
86 testPrint<double>(
"double");
89 CASE(
"ioda/ObsDataVector/printInt") {
90 testPrint<int>(
"int");
93 CASE(
"ioda/ObsDataVector/printString") {
94 testPrint<std::string>(
"string");
97 CASE(
"ioda/ObsDataVector/printDateTime") {
98 testPrint<util::DateTime>(
"datetime");
101 CASE(
"ioda/ObsDataVector/closeObsSpace") {
108 std::string
testid()
const override {
return "test::ObsDataVector<ioda::IodaTrait>";}
ObsDataVector<DATATYPE> handles vectors of data of type DATATYPE in observation space.
Observation data class for IODA.
void save()
save the obs space data into a file (if obsdataout specified)
std::unique_ptr< ObsSpace_ > obspace_
static ObsDataVecTestFixture & getInstance()
static ObsSpace_ & obspace()
void register_tests() const override
void clear() const override
std::string testid() const override
void testPrint(const std::string &datatype)
CASE("Derived variable and unit conversion methods")
std::string trim(const std::string &str)