OOPS
test/interface/ModelAuxCovariance.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2009-2016 ECMWF.
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  * In applying this licence, ECMWF does not waive the privileges and immunities
7  * granted to it by virtue of its status as an intergovernmental organisation nor
8  * does it submit to any jurisdiction.
9  */
10 
11 #ifndef TEST_INTERFACE_MODELAUXCOVARIANCE_H_
12 #define TEST_INTERFACE_MODELAUXCOVARIANCE_H_
13 
14 #include <memory>
15 #include <string>
16 #include <vector>
17 
18 #define ECKIT_TESTING_SELF_REGISTER_CASES 0
19 
20 #include <boost/noncopyable.hpp>
21 
22 #include "eckit/config/LocalConfiguration.h"
23 #include "eckit/testing/Test.h"
26 #include "oops/mpi/mpi.h"
27 #include "oops/runs/Test.h"
28 #include "test/TestEnvironment.h"
29 
30 namespace test {
31 
32 // -----------------------------------------------------------------------------
33 template <typename MODEL> class ModelAuxCovarianceFixture : private boost::noncopyable {
36 
37  public:
38  static const eckit::Configuration & config() {return *getInstance().conf_;}
39  static const Geometry_ & resol() {return *getInstance().resol_;}
40 
41  private:
43  static ModelAuxCovarianceFixture<MODEL> theModelAuxCovarianceFixture;
44  return theModelAuxCovarianceFixture;
45  }
46 
48  conf_.reset(new eckit::LocalConfiguration(TestEnvironment::config(), "model aux error"));
49 
50  const eckit::LocalConfiguration resolConfig(TestEnvironment::config(), "geometry");
51  resol_.reset(new Geometry_(resolConfig, oops::mpi::world()));
52  }
53 
55 
56  std::unique_ptr<const eckit::LocalConfiguration> conf_;
57  std::unique_ptr<Geometry_> resol_;
58 };
59 
60 // -----------------------------------------------------------------------------
61 
62 template <typename MODEL> void testConstructor() {
64  typedef oops::ModelAuxCovariance<MODEL> Covariance_;
65 
66  std::unique_ptr<Covariance_> bias(new Covariance_(Test_::config(), Test_::resol()));
67  EXPECT(bias.get());
68 
69  bias.reset();
70  EXPECT(!bias.get());
71 }
72 
73 // -----------------------------------------------------------------------------
74 // void linearize(const ModelAuxControl_ &, const Geometry_ &);
75 // void multiply(const ModelAuxIncrement_ &, ModelAuxIncrement_ &) const;
76 // void invMult(const ModelAuxIncrement_ &, ModelAuxIncrement_ &) const;
77 // void randomize(ModelAuxIncrement_ &) const;
78 // -----------------------------------------------------------------------------
79 
80 // -----------------------------------------------------------------------------
81 
82 template <typename MODEL>
84  public:
86  virtual ~ModelAuxCovariance() {}
87  private:
88  std::string testid() const override {return "test::ModelAuxCovariance<" + MODEL::name() + ">";}
89 
90  void register_tests() const override {
91  std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
92 
93  ts.emplace_back(CASE("interface/ModelAuxCovariance/testConstructor")
94  { testConstructor<MODEL>(); });
95  }
96 
97  void clear() const override {}
98 };
99 
100 // =============================================================================
101 
102 } // namespace test
103 
104 #endif // TEST_INTERFACE_MODELAUXCOVARIANCE_H_
test::ModelAuxCovarianceFixture::config
static const eckit::Configuration & config()
Definition: test/interface/ModelAuxCovariance.h:38
test::ModelAuxCovariance::clear
void clear() const override
Definition: test/interface/ModelAuxCovariance.h:97
test::ModelAuxCovarianceFixture::resol
static const Geometry_ & resol()
Definition: test/interface/ModelAuxCovariance.h:39
test::ModelAuxCovariance::testid
std::string testid() const override
Definition: test/interface/ModelAuxCovariance.h:88
test::ModelAuxCovarianceFixture::conf_
std::unique_ptr< const eckit::LocalConfiguration > conf_
Definition: test/interface/ModelAuxCovariance.h:56
mpi.h
test::ModelAuxCovarianceFixture::Covariance_
oops::ModelAuxCovariance< MODEL > Covariance_
Definition: test/interface/ModelAuxCovariance.h:35
test::ModelAuxCovarianceFixture::Geometry_
oops::Geometry< MODEL > Geometry_
Definition: test/interface/ModelAuxCovariance.h:34
test::CASE
CASE("test_linearmodelparameterswrapper_valid_name")
Definition: LinearModelFactory.cc:22
test
Definition: LinearModelFactory.cc:20
ModelAuxCovariance.h
test::ModelAuxCovariance
Definition: test/interface/ModelAuxCovariance.h:83
Test.h
test::ModelAuxCovariance::register_tests
void register_tests() const override
Definition: test/interface/ModelAuxCovariance.h:90
test::TestEnvironment::config
static const eckit::Configuration & config()
Definition: TestEnvironment.h:40
test::ModelAuxCovarianceFixture::~ModelAuxCovarianceFixture
~ModelAuxCovarianceFixture()
Definition: test/interface/ModelAuxCovariance.h:54
oops::Geometry
Geometry class used in oops; subclass of interface class above.
Definition: oops/interface/Geometry.h:189
test::ModelAuxCovarianceFixture::resol_
std::unique_ptr< Geometry_ > resol_
Definition: test/interface/ModelAuxCovariance.h:57
test::ModelAuxCovarianceFixture
Definition: test/interface/ModelAuxCovariance.h:33
TestEnvironment.h
test::ModelAuxCovarianceFixture::getInstance
static ModelAuxCovarianceFixture< MODEL > & getInstance()
Definition: test/interface/ModelAuxCovariance.h:42
oops::ModelAuxCovariance
Definition: oops/interface/ModelAuxCovariance.h:36
test::testConstructor
void testConstructor()
Tests creation and destruction of ObsErrorCovariances.
Definition: test/base/ObsErrorCovariance.h:32
oops::Test
Definition: Test.h:39
oops::mpi::world
const eckit::mpi::Comm & world()
Default communicator with all MPI tasks (ie MPI_COMM_WORLD)
Definition: oops/mpi/mpi.cc:22
test::ModelAuxCovariance::~ModelAuxCovariance
virtual ~ModelAuxCovariance()
Definition: test/interface/ModelAuxCovariance.h:86
test::ModelAuxCovariance::ModelAuxCovariance
ModelAuxCovariance()
Definition: test/interface/ModelAuxCovariance.h:85
test::ModelAuxCovarianceFixture::ModelAuxCovarianceFixture
ModelAuxCovarianceFixture()
Definition: test/interface/ModelAuxCovariance.h:47
Geometry.h