ifw-daq 3.1.0
IFW Data Acquisition modules
Loading...
Searching...
No Matches
testDaqContext.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::Status and daq::ObservableStatus
7 */
8#include <daq/daqContext.hpp>
9#include <gmock/gmock.h>
10#include <gtest/gtest.h>
11
12using namespace ::testing;
13
14namespace daq {
15
16TEST(TestDaqContext, Files) {
17 DaqContext ctx;
18
19 EXPECT_TRUE(ctx.results.empty());
20
21 std::vector<DpPart> files1{{"origin1", "path1"}, {"origin2", "path2"}};
22 std::vector<DpPart> files2{{"origin3", "path3"}};
23
24 AddDpParts(ctx, files1);
25 EXPECT_FALSE(ctx.results.empty());
26 EXPECT_EQ(files1, ctx.results);
27 EXPECT_NE(files2, ctx.results);
28
29 AddDpParts(ctx, files2);
30 EXPECT_NE(files1, ctx.results);
31
32 auto files3 = files1;
33 files3.insert(files3.end(), files2.begin(), files2.end());
34 EXPECT_EQ(files3, ctx.results);
35}
36
37MATCHER_P2(KeywordEq, name, type, "keyword name and type equality") {
38 auto kw = fits::GetKeywordName(arg);
39 *result_listener << "keyword is " << (arg);
40 return kw.name == name && kw.type == type;
41}
42
43TEST(TestDaqContext, Keywords) {
44 DaqContext ctx;
46 EXPECT_TRUE(ctx.keywords.empty());
47
49 UpdateKeywords(ctx, v, fmt);
50 EXPECT_TRUE(ctx.keywords.empty());
51
52 v.push_back(fits::EsoKeyword("FOO", "EsoKeyword"));
53 UpdateKeywords(ctx, v, fmt);
54 EXPECT_THAT(ctx.keywords, ElementsAre(KeywordEq("FOO", fits::KeywordType::Eso)));
55
56 v.push_back(fits::ValueKeyword("FOO", "ValueKeyword"));
57 UpdateKeywords(ctx, v, fmt);
58 EXPECT_THAT(ctx.keywords,
59 ElementsAre(KeywordEq("FOO", fits::KeywordType::Eso),
60 KeywordEq("FOO", fits::KeywordType::Value)));
61
62 fits::EsoKeyword new_foo = fits::EsoKeyword("FOO", true);
63 UpdateKeywords(ctx, {new_foo}, fmt);
64 ASSERT_THAT(ctx.keywords,
65 ElementsAre(fits::LiteralKeyword("HIERARCH ESO FOO = T /"),
66 KeywordEq("FOO", fits::KeywordType::Value)));
67}
68
69} // namespace daq
Represents the literal 80-character FITS keyword record.
Definition: keyword.hpp:129
Formats according to built-in rules without any dictionaries.
Definition: keyword.hpp:567
Contains declaration of daq::Context.
constexpr KeywordNameView GetKeywordName(EsoKeyword const &keyword) noexcept
Get keyword name from keyword.
Definition: keyword.hpp:436
@ Eso
An ESO hiearchical keyword.
Definition: keyword.hpp:76
@ Value
A value keyword.
Definition: keyword.hpp:72
std::vector< KeywordVariant > KeywordVector
Vector of keywords.
Definition: keyword.hpp:423
BasicKeyword< EsoKeywordTraits > EsoKeyword
ESO hiearchical keyword.
Definition: keyword.hpp:346
void UpdateKeywords(fits::KeywordVector &out, fits::KeywordVector const &in, fits::KeywordFormatter const &fmt)
Updates (adds or replaces) primary HDU keywords.
Definition: daqContext.cpp:24
void AddDpParts(DaqContext &ctx, std::vector< DpPart > const &parts)
Definition: daqContext.cpp:47
MATCHER_P2(KeywordEq, name, type, "keyword name and type equality")
TEST(TestDaqContext, Files)
Structure carrying context needed to start a Data Acquisition and construct a Data Product Specificat...
Definition: daqContext.hpp:42
DpParts results
Results from Data Acquisition (FITS files and keywords).
Definition: daqContext.hpp:100
std::vector< daq::fits::KeywordVariant > keywords
Keyword list provided by OCM to Data Product.
Definition: daqContext.hpp:85
A type safe version of LiteralKeyword that consist of the three basic components of a FITS keyword ke...
Definition: keyword.hpp:275
EXPECT_EQ(meta.rr_uri, "zpb.rr://meta")