ifw-daq  1.0.0
IFW Data Acquisition modules
testFitsController.cpp
Go to the documentation of this file.
1 /**
2  * @file
3  * @ingroup daq_ocm_libdaq_test
4  * @copyright 2021 ESO - European Southern Observatory
5  *
6  * @brief Unit test for `daq::FitsControllerImpl`
7  */
8 #include <algorithm>
9 #include <gtest/gtest.h>
10 #include <fmt/format.h>
11 
12 #include <daq/fitsController.hpp>
13 
14 using namespace daq;
15 using namespace ::testing;
16 using namespace std::chrono;
17 
18 /**
19  * Fixture for daq::FitsControllerImpl test
20  *
21  * @ingroup daq_ocm_libdaq_test
22  */
23 class TestFitsController : public ::testing::Test {
24 public:
25  void SetUp() override {
26  static unsigned seq = 0;
27  properties.dp_name_prefix = "daq-fits-test-";
28  properties.id = fmt::format("{}", seq++);
29 
30  // Add one keyword of each supported value type
31  m_keywords.emplace_back(fits::EsoKeyword("A B A", -12l, "signed int"));
32  m_keywords.emplace_back(fits::EsoKeyword("A B B", 12lu, "unsigned int"));
33  m_keywords.emplace_back(fits::EsoKeyword("A B C", -1.234, "double"));
34  m_keywords.emplace_back(fits::EsoKeyword("A B D", "a string", "string"));
35  m_keywords.emplace_back(fits::EsoKeyword("A B E", false, "logical"));
36  m_keywords.emplace_back(fits::ValueKeyword("A", -12l, "signed int"));
37  m_keywords.emplace_back(fits::ValueKeyword("B", 12lu, "unsigned int"));
38  m_keywords.emplace_back(fits::ValueKeyword("C", -1.234, "double"));
39  m_keywords.emplace_back(fits::ValueKeyword("D", "a string", "string"));
40  m_keywords.emplace_back(fits::ValueKeyword("E", false, "logical"));
41  std::random_shuffle(m_keywords.begin(), m_keywords.end());
42  m_event_log = std::make_shared<ObservableEventLog>();
43  m_ctl = std::make_unique<FitsControllerImpl>(properties, m_event_log);
44  ASSERT_EQ(State::NotStarted, m_ctl->GetState());
45  }
47  std::shared_ptr<ObservableEventLog> m_event_log;
48  std::unique_ptr<FitsControllerImpl> m_ctl;
49 
51 };
52 
54  // Run
55  m_ctl->Start();
56  m_ctl->UpdateKeywords(m_keywords);
57  m_ctl->Stop(ErrorPolicy::Strict);
58 
59  EXPECT_EQ(State::Stopped, m_ctl->GetState());
60 }
61 
62 TEST_F(TestFitsController, AbortNotStartedSucceeds) {
63  // Run
64  m_ctl->Abort(ErrorPolicy::Strict);
65  EXPECT_EQ(State::Aborted, m_ctl->GetState());
66 }
67 
68 TEST_F(TestFitsController, AbortAcquiringSucceeds) {
69  // Setup
70  m_ctl->Start();
71 
72  // Run
73  m_ctl->Abort(ErrorPolicy::Strict);
74  EXPECT_EQ(State::Aborted, m_ctl->GetState());
75 }
TestFitsController::m_keywords
fits::KeywordVector m_keywords
Definition: testFitsController.cpp:50
daq::DaqProperties
Structure carrying properties needed to start a DataAcquisition.
Definition: daqProperties.hpp:28
daq::TEST_F
TEST_F(TestSource, Constructors)
Definition: testSource.cpp:34
TestFitsController::SetUp
void SetUp() override
Definition: testFitsController.cpp:25
daq
Definition: daqController.cpp:18
daq::fits::BasicKeyword
A type safe version of FormattedKeyword that consist of the three basic components of a FITS keyword ...
Definition: keyword.hpp:51
fitsController.hpp
Contains declaration for for FitsController.
TestFitsController
Fixture for daq::FitsControllerImpl test.
Definition: testFitsController.cpp:40
daq::fits::KeywordVector
std::vector< KeywordVariant > KeywordVector
Vector of keywords.
Definition: keyword.hpp:138
TestFitsController::properties
DaqProperties properties
Definition: testFitsController.cpp:46
daq::State::NotStarted
@ NotStarted
Initial state of data acquisition.