8 #ifndef TEST_UFO_VARIABLES_H_
9 #define TEST_UFO_VARIABLES_H_
16 #define ECKIT_TESTING_SELF_REGISTER_CASES 0
18 #include "eckit/config/LocalConfiguration.h"
19 #include "eckit/testing/Test.h"
20 #include "oops/base/Variables.h"
21 #include "oops/runs/Test.h"
22 #include "test/TestEnvironment.h"
32 std::vector<eckit::LocalConfiguration> conf;
33 ::test::TestEnvironment::config().get(
"test variables", conf);
34 for (std::size_t jj = 0; jj < conf.size(); ++jj) {
38 std::vector<std::string> refvars(conf[jj].getStringVector(
"reference names"));
39 const std::string refgroup = conf[jj].getString(
"reference group");
41 EXPECT(var.
size() == refvars.size());
42 EXPECT(var.
group() == refgroup);
43 for (std::size_t jvar = 0; jvar < var.
size(); ++jvar) {
44 EXPECT(var.
variable(jvar) == refvars[jvar]);
47 const std::string refFullName = conf[jj].getString(
"reference full name");
48 EXPECT_EQUAL(var.
fullName(), refFullName);
54 std::vector<eckit::LocalConfiguration> conf;
55 ::test::TestEnvironment::config().get(
"oops variables", conf);
56 for (std::size_t jj = 0; jj < conf.size(); ++jj) {
58 oops::Variables oopsvars(conf[jj],
"variables");
60 std::vector<std::string> refvars(conf[jj].getStringVector(
"reference names"));
64 EXPECT(vars.nvars() == refvars.size());
65 for (std::size_t jvar = 0; jvar < vars.nvars(); ++jvar) {
66 EXPECT(vars.variable(jvar).variable() == refvars[jvar]);
76 for (
size_t jj = 0; jj < vars.nvars(); ++jj) {
77 if (vars.variable(jj).variable() == var.
variable() &&
78 vars.variable(jj).group() == var.
group()) found =
true;
86 const eckit::LocalConfiguration &funcConf,
89 vars +=
Variable(funcName, funcConf);
92 oops::Log::info() << res << std::endl;
94 EXPECT(res.size() == 2);
104 vars +=
Variable(
"latitude@MetaData");
105 vars +=
Variable(
"temperature@ObsValue");
106 vars +=
Variable(
"longitude@MetaData");
108 const eckit::Configuration &conf = ::test::TestEnvironment::config();
110 eckit::LocalConfiguration(conf,
"float conditional"),
113 eckit::LocalConfiguration(conf,
"int conditional"),
116 eckit::LocalConfiguration(conf,
"string conditional"),
119 eckit::LocalConfiguration(conf,
"datetime conditional"),
125 const eckit::LocalConfiguration &funcConf,
128 vars +=
Variable(funcName, funcConf);
135 vars +=
Variable(
"latitude@MetaData");
136 vars +=
Variable(
"longitude@MetaData");
141 const eckit::Configuration &conf = ::test::TestEnvironment::config();
143 eckit::LocalConfiguration(conf,
"float conditional"),
146 eckit::LocalConfiguration(conf,
"int conditional"),
149 eckit::LocalConfiguration(conf,
"string conditional"),
152 eckit::LocalConfiguration(conf,
"datetime conditional"),
163 std::string
testid()
const override {
return "ufo::test::Variables";}
166 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
168 ts.emplace_back(
CASE(
"ufo/Variables/testVariable")
171 ts.emplace_back(
CASE(
"ufo/Variables/testConstructor")
174 ts.emplace_back(
CASE(
"ufo/Variables/testAllFromGroup")
177 ts.emplace_back(
CASE(
"ufo/Variables/testHasGroup")
const std::string & variable() const
std::string fullName() const
const std::string & group() const
bool hasGroup(const std::string &) const
Variables allFromGroup(const std::string &) const
void register_tests() const override
std::string testid() const override
void clear() const override
void testHasGroupFor(const std::string &funcName, const eckit::LocalConfiguration &funcConf, const ufo::Variables &initialVars)
void testAllFromGroupFor(const std::string &funcName, const eckit::LocalConfiguration &funcConf, const ufo::Variables &initialVars)
CASE("ufo/DataExtractor/bilinearinterp/float_linear")
bool hasVariable(const Variables &vars, const Variable &var)