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(),
"no_channels");
93 EXPECT_NO_THROW(params.validate(fullConf));
94 params.deserialize(fullConf);
104 const eckit::LocalConfiguration fullConf(::test::TestEnvironment::config(),
"complex_channels");
105 EXPECT_NO_THROW(params.validate(fullConf));
106 params.deserialize(fullConf);
112 (std::vector<int>{1, 5, 10, 11, 12, 13, 14, 15}));
117 const eckit::LocalConfiguration
conf(::test::TestEnvironment::config(),
"missing_name");
119 EXPECT_THROWS(params.validate(
conf));
120 EXPECT_THROWS_AS(params.deserialize(
conf), eckit::BadParameter);
125 const eckit::LocalConfiguration
conf(::test::TestEnvironment::config(),
"misspelled_property");
127 EXPECT_THROWS(params.validate(
conf));
132 const eckit::LocalConfiguration
conf(::test::TestEnvironment::config(),
"full");
133 doTestSerialization<MyParameters>(
conf);
138 const eckit::LocalConfiguration
conf(::test::TestEnvironment::config(),
"no_channels");
139 doTestSerialization<MyParameters>(
conf);
144 std::string
testid()
const override {
return "ufo::test::Parameters";}
147 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
149 ts.emplace_back(
CASE(
"ufo/Parameters/defaultValue") {
152 ts.emplace_back(
CASE(
"ufo/Parameters/correctValue") {
155 ts.emplace_back(
CASE(
"ufo/Parameters/noChannels") {
158 ts.emplace_back(
CASE(
"ufo/Parameters/complexChannels") {
161 ts.emplace_back(
CASE(
"ufo/Parameters/missingName") {
164 ts.emplace_back(
CASE(
"ufo/Parameters/misspelledProperty") {
167 ts.emplace_back(
CASE(
"ufo/Parameters/serializationWithChannels") {
170 ts.emplace_back(
CASE(
"ufo/Parameters/serializationWithoutChannels") {
181 #endif // TEST_UFO_PARAMETERS_H_