OOPS
ObsTestsFixture.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2018 UCAR
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  */
7 
8 #ifndef TEST_INTERFACE_OBSTESTSFIXTURE_H_
9 #define TEST_INTERFACE_OBSTESTSFIXTURE_H_
10 
11 #include <memory>
12 #include <string>
13 
14 #include <boost/noncopyable.hpp>
15 
16 #include "eckit/config/LocalConfiguration.h"
17 #include "oops/base/ObsSpaces.h"
18 #include "oops/mpi/mpi.h"
19 #include "oops/runs/Test.h"
20 #include "oops/util/DateTime.h"
21 #include "oops/util/Logger.h"
22 #include "test/TestEnvironment.h"
23 
24 namespace test {
25 
26 // -----------------------------------------------------------------------------
27 
28 template <typename OBS>
29 class ObsTestsFixture : private boost::noncopyable {
31 
32  public:
33  static const util::DateTime & tbgn() {return *getInstance().tbgn_;}
34  static const util::DateTime & tend() {return *getInstance().tend_;}
35  static ObsSpaces_ & obspace() {return *getInstance().ospaces_;}
36 
37  static void reset() {
38  getInstance().ospaces_.reset();
39  getInstance().tend_.reset();
40  getInstance().tbgn_.reset();
41  }
42 
43  private:
45  tbgn_.reset(new util::DateTime(TestEnvironment::config().getString("window begin")));
46  tend_.reset(new util::DateTime(TestEnvironment::config().getString("window end")));
48  }
49 
51 
53  static ObsTestsFixture<OBS> theObsTestsFixture;
54  return theObsTestsFixture;
55  }
56 
57  std::unique_ptr<const util::DateTime> tbgn_;
58  std::unique_ptr<const util::DateTime> tend_;
59  std::unique_ptr<ObsSpaces_> ospaces_;
60 };
61 
62 // -----------------------------------------------------------------------------
63 
64 } // namespace test
65 
66 #endif // TEST_INTERFACE_OBSTESTSFIXTURE_H_
test::ObsTestsFixture
Definition: ObsTestsFixture.h:29
test::ObsTestsFixture::reset
static void reset()
Definition: ObsTestsFixture.h:37
ObsSpaces.h
test::ObsTestsFixture::tend
static const util::DateTime & tend()
Definition: ObsTestsFixture.h:34
mpi.h
test::ObsTestsFixture::tbgn_
std::unique_ptr< const util::DateTime > tbgn_
Definition: ObsTestsFixture.h:57
test
Definition: LinearModelFactory.cc:20
test::ObsTestsFixture::ObsTestsFixture
ObsTestsFixture()
Definition: ObsTestsFixture.h:44
test::ObsTestsFixture::~ObsTestsFixture
~ObsTestsFixture()
Definition: ObsTestsFixture.h:50
test::ObsTestsFixture::ospaces_
std::unique_ptr< ObsSpaces_ > ospaces_
Definition: ObsTestsFixture.h:59
test::ObsTestsFixture::tend_
std::unique_ptr< const util::DateTime > tend_
Definition: ObsTestsFixture.h:58
Test.h
test::ObsTestsFixture::ObsSpaces_
oops::ObsSpaces< OBS > ObsSpaces_
Definition: ObsTestsFixture.h:30
test::ObsTestsFixture::getInstance
static ObsTestsFixture< OBS > & getInstance()
Definition: ObsTestsFixture.h:52
test::ObsTestsFixture::tbgn
static const util::DateTime & tbgn()
Definition: ObsTestsFixture.h:33
test::TestEnvironment::config
static const eckit::Configuration & config()
Definition: TestEnvironment.h:40
TestEnvironment.h
oops::mpi::world
const eckit::mpi::Comm & world()
Default communicator with all MPI tasks (ie MPI_COMM_WORLD)
Definition: oops/mpi/mpi.cc:22
oops::ObsSpaces
Definition: ObsSpaces.h:41
test::ObsTestsFixture::obspace
static ObsSpaces_ & obspace()
Definition: ObsTestsFixture.h:35