ifw-daq  2.1.0-pre1
IFW Data Acquisition modules
testSource.cpp
Go to the documentation of this file.
1 /**
2  * @file
3  * @ingroup daq_ocm_libdaq_test
4  * @copyright 2022 ESO - European Southern Observatory
5  *
6  * @brief Test daq::Source and related
7  */
8 #include <gtest/gtest.h>
9 #include "mock/metadaqifMock.hpp"
10 #include "mock/recifMock.hpp"
11 #include <daq/source.hpp>
12 
13 namespace daq {
14 
15 /**
16  * Test fixture for source tests.
17  *
18  * @ingroup daq_ocm_libdaq_test
19  */
20 class TestSource : public ::testing::Test {
21 public:
22  void SetUp() override {
23  m_prim_rr_client = std::make_shared<RecCmdsAsyncMock>();
24  m_meta_rr_client = std::make_shared<MetaDaqAsyncMock>();
25  }
26 
27  void TearDown() override {
28  }
29 protected:
30  std::shared_ptr<PrimSource::RrClient> m_prim_rr_client;
31  std::shared_ptr<MetaSource::RrClient> m_meta_rr_client;
32 };
33 
34 TEST_F(TestSource, Constructors) {
35  {
36  PrimSource s1("name", m_prim_rr_client);
37  auto s2(s1);
38  auto s3 = s1;
39  auto s4 = std::move(s1);
40  auto s5(std::move(s2));
41  }
42  {
43  MetaSource s1("name", m_meta_rr_client);
44  auto s2(s1);
45  auto s3 = s1;
46  auto s4 = std::move(s1);
47  auto s5(std::move(s2));
48  }
49 }
50 
51 TEST_F(TestSource, Accessors) {
52  {
53  PrimSource s1("name", m_prim_rr_client);
54  EXPECT_EQ(s1.GetName(), "name");
55  EXPECT_EQ(&s1.GetRrClient(), m_prim_rr_client.get());
56  }
57  {
58  MetaSource s1("name", m_meta_rr_client);
59  EXPECT_EQ(s1.GetName(), "name");
60  EXPECT_EQ(&s1.GetRrClient(), m_meta_rr_client.get());
61  }
62 }
63 
64 TEST_F(TestSource, PrimSourceConstructionFailsIfRrClientIsInvalid) {
65  ASSERT_THROW(PrimSource("name", {}), std::invalid_argument);
66 }
67 
68 TEST_F(TestSource, PrimSourceConstructionFailsIfNameIsEmpty) {
69  ASSERT_TRUE(m_prim_rr_client);
70  ASSERT_THROW(PrimSource("", m_prim_rr_client), std::invalid_argument);
71 }
72 
73 TEST_F(TestSource, MetaSourceConstructionFailsIfRrClientIsInvalid) {
74  ASSERT_THROW(MetaSource("name", {}), std::invalid_argument);
75 }
76 
77 TEST_F(TestSource, MetaSourceConstructionFailsIfNameIsEmpty) {
78  ASSERT_TRUE(m_meta_rr_client);
79  ASSERT_THROW(MetaSource("", m_meta_rr_client), std::invalid_argument);
80 }
81 
82 }
daq::MetaSource::GetName
std::string const & GetName() const
Definition: source.hpp:161
source.hpp
Declarations for daq::Source and related classes.
metadaqifMock.hpp
Mockup of metadaqif classes.
daq::TestSource::TearDown
void TearDown() override
Definition: testSource.cpp:27
daq::TestSource::m_prim_rr_client
std::shared_ptr< PrimSource::RrClient > m_prim_rr_client
Definition: testSource.cpp:30
recifMock.hpp
Mockup of metadaqif classes.
daq::TestSource
Test fixture for source tests.
Definition: testSource.cpp:20
daq::MetaSource::GetRrClient
RrClient & GetRrClient()
Definition: source.hpp:165
daq
Definition: asyncProcess.cpp:15
daq::PrimSource::GetName
std::string const & GetName() const
Definition: source.hpp:117
daq::TEST_F
TEST_F(TestDpmDaqController, StatusUpdateInNotScheduledSucceeds)
Definition: testDpmDaqController.cpp:60
daq::MetaSource
Keeps relevant state to be able to communicate with a primary data source.
Definition: source.hpp:140
daq::PrimSource::GetRrClient
RrClient & GetRrClient()
Definition: source.hpp:121
daq::TestSource::SetUp
void SetUp() override
Definition: testSource.cpp:22
daq::PrimSource
Keeps relevant state to be able to communicate with a primary data source.
Definition: source.hpp:96
daq::TestSource::m_meta_rr_client
std::shared_ptr< MetaSource::RrClient > m_meta_rr_client
Definition: testSource.cpp:31