8 #ifndef TEST_UFO_PARAMETERS_H_
9 #define TEST_UFO_PARAMETERS_H_
14 #define ECKIT_TESTING_SELF_REGISTER_CASES 0
16 #include "eckit/config/LocalConfiguration.h"
17 #include "eckit/testing/Test.h"
18 #include "oops/runs/Test.h"
19 #include "oops/util/Expect.h"
20 #include "oops/util/parameters/OptionalParameter.h"
21 #include "oops/util/parameters/Parameters.h"
22 #include "test/TestEnvironment.h"
36 template <
typename ParametersType>
48 ParametersType params;
49 params.deserialize(config);
51 eckit::LocalConfiguration outputConfig;
52 params.serialize(outputConfig);
54 std::stringstream expectedStream;
55 expectedStream << config;
56 const std::string expected = expectedStream.str();
58 std::stringstream receivedStream;
59 receivedStream << outputConfig;
60 std::string received = receivedStream.str();
62 EXPECT_EQUAL(received, expected);
66 const eckit::LocalConfiguration conf(::test::TestEnvironment::config());
71 const eckit::LocalConfiguration emptyConf(conf,
"empty");
72 EXPECT_NO_THROW(params.validate(emptyConf));
73 params.deserialize(emptyConf);
80 const eckit::LocalConfiguration fullConf(::test::TestEnvironment::config(),
"full");
81 EXPECT_NO_THROW(params.validate(fullConf));
82 params.deserialize(fullConf);
92 const eckit::LocalConfiguration fullConf(::test::TestEnvironment::config(),
"simple_string");
93 EXPECT_NO_THROW(params.validate(fullConf));
94 params.deserialize(fullConf);
103 const eckit::LocalConfiguration fullConf(::test::TestEnvironment::config(),
"no_channels");
104 EXPECT_NO_THROW(params.validate(fullConf));
105 params.deserialize(fullConf);
115 const eckit::LocalConfiguration fullConf(::test::TestEnvironment::config(),
"complex_channels");
116 EXPECT_NO_THROW(params.validate(fullConf));
117 params.deserialize(fullConf);
123 (std::vector<int>{1, 5, 10, 11, 12, 13, 14, 15}));
128 const eckit::LocalConfiguration conf(::test::TestEnvironment::config(),
"missing_name");
130 EXPECT_THROWS(params.validate(conf));
131 EXPECT_THROWS_MSG(params.deserialize(conf),
"ConfigurationNotFound: [name]");
136 const eckit::LocalConfiguration conf(::test::TestEnvironment::config(),
"misspelled_property");
138 EXPECT_THROWS(params.validate(conf));
143 const eckit::LocalConfiguration conf(::test::TestEnvironment::config(),
"full");
144 doTestSerialization<MyParameters>(conf);
149 const eckit::LocalConfiguration conf(::test::TestEnvironment::config(),
"no_channels");
150 doTestSerialization<MyParameters>(conf);
155 std::string
testid()
const override {
return "ufo::test::Parameters";}
158 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
160 ts.emplace_back(
CASE(
"ufo/Parameters/defaultValue") {
163 ts.emplace_back(
CASE(
"ufo/Parameters/correctValue") {
166 ts.emplace_back(
CASE(
"ufo/Parameters/testSimpleString") {
169 ts.emplace_back(
CASE(
"ufo/Parameters/noChannels") {
172 ts.emplace_back(
CASE(
"ufo/Parameters/complexChannels") {
175 ts.emplace_back(
CASE(
"ufo/Parameters/missingName") {
178 ts.emplace_back(
CASE(
"ufo/Parameters/misspelledProperty") {
181 ts.emplace_back(
CASE(
"ufo/Parameters/serializationWithChannels") {
184 ts.emplace_back(
CASE(
"ufo/Parameters/serializationWithoutChannels") {
oops::OptionalParameter< ufo::Variable > optVariableParameter
std::string testid() const override
void clear() const override
void register_tests() const override
void testMisspelledProperty()
const bool validationSupported
void testSerializationWithoutChannels()
void testSerializationWithChannels()
void testComplexChannels()
CASE("ufo/DataExtractor/bilinearinterp/float_linear")
void doTestSerialization(const eckit::Configuration &config)