API
 
Loading...
Searching...
No Matches
telem_dmspeck_generated_tests.cpp
Go to the documentation of this file.
1#include <assert.h>
2#include "../../../../tests/catch2/catch.hpp"
3#include "../generated/logCodes.hpp"
4#include "../types/telem_dmspeck.hpp"
5#include "../types/generated/telem_dmspeck_generated.h"
6#include "../types/flatbuffer_log.hpp"
7
8/*
9 * GENERATED TEST FILE for types/telem_dmspeck.hpp
10 * generated by generateTemplateCatch2Tests.py
11 */
12
13const bool telemDmspeckModulating_0 = 1; // dummy modulating
14const bool telemDmspeckTrigger_0 = 1; // dummy trigger
15const float telemDmspeckFrequency_0 = 0.681389; // dummy frequency
16const std::vector<float> telemDmspeckSeparations_0 = { 0.72324,0.653967,0.876789,0.11299,0.524561,0.913138,0.458665,0.693803,0.292491,0.331369 }; // dummy separations
17const std::vector<float> telemDmspeckAngles_0 = { 0.611177,0.072505,0.053615,0.274477,0.720381,0.964199,0.557298,0.723119,0.781756,0.136638 }; // dummy angles
18const std::vector<float> telemDmspeckAmplitudes_0 = { 0.077035,0.47736,0.115656,0.102637,0.038535,0.968587,0.016232,0.983633,0.447165,0.780489 }; // dummy amplitudes
19const std::vector<bool> telemDmspeckCrosses_0 = { 1,1,1,1,1,1,1,1,1,1 }; // dummy crosses
20
21
22/** Class to encapsulate telem_dmspeck flatbuffer data using
23 ** => types/telem_dmspeck.hpp
24 ** => types/generated/telem_dmspeck_generated.h
25 **/
27{
28public:
29 // Saved input parameter value; unused
33 std::vector<float> m_saveTdSeparations;
34 std::vector<float> m_saveTdAngles;
35 std::vector<float> m_saveTdAmplitudes;
36 std::vector<bool> m_saveTdCrosses;
37
38 // Parameters retrieved from flatbuffer
42 std::vector<float> m_separations;
43 std::vector<float> m_angles;
44 std::vector<float> m_amplitudes;
45 std::vector<bool> m_crosses;
46
47 // Flatbuffers verifier success/failure
48 bool m_verify{false};
49
50 // flatbuffer data length; used in ::verify
51 int L;
52
53 // Constructor
54 CTelemDmspeck_0(bool modulating_, bool trigger_, float frequency_, std::vector<float> separations_, std::vector<float> angles_, std::vector<float> amplitudes_, std::vector<bool> crosses_) {
55 // Save input parameters
56 m_saveTdModulating = modulating_;
57 m_saveTdTrigger = trigger_;
58 m_saveTdFrequency = frequency_;
59 m_saveTdSeparations = separations_;
60 m_saveTdAngles = angles_;
61 m_saveTdAmplitudes = amplitudes_;
62 m_saveTdCrosses = crosses_;
63
64 // Create the flatbuffer messageT using the input parameters
65 auto td = MagAOX::logger::telem_dmspeck::messageT(modulating_, trigger_, frequency_, separations_, angles_, amplitudes_, crosses_);
66
67 // Retrieve flatbuffer pointer (if not an empty_log type) and length
68 void* buffPtr = td.builder.GetBufferPointer();
70
71 // Retrieve the flatbuffer parameters for Catch2 comparison below
75 if (MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->separations() != nullptr)
76 {
77 for(auto it = MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->separations()->begin();
78 it != MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->separations()->end();
79 ++it)
80 {
81 m_separations.push_back(*it);
82 }
83 }
84 if (MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->angles() != nullptr)
85 {
86 for(auto it = MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->angles()->begin();
87 it != MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->angles()->end();
88 ++it)
89 {
90 m_angles.push_back(*it);
91 }
92 }
93 if (MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->amplitudes() != nullptr)
94 {
95 for(auto it = MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->amplitudes()->begin();
96 it != MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->amplitudes()->end();
97 ++it)
98 {
99 m_amplitudes.push_back(*it);
100 }
101 }
102 if (MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->crosses() != nullptr)
103 {
104 for(auto it = MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->crosses()->begin();
105 it != MagAOX::logger::GetTelem_dmspeck_fb(buffPtr)->crosses()->end();
106 ++it)
107 {
108 m_crosses.push_back(*it);
109 }
110 }
111
112 // Run the telem_dmspeck verifier
113 m_verify = verify(td);
114 }
115
116 // Run the flatbuffer Verifier for this log type
117 // - requires bufferPtrT (shared_ptr<char*>) to full log entry
118 // comprising log header plus flatbuffer log message
120
121 // Timestamp, prioriy (use nominal value here)
122 flatlogs::timespecX tsx{0,0};
124
125 // Create full log: log header(*); log message (+)
126 // * Log level (priority)
127 // * Event code (implicit in <MagAOX::logger::type>)
128 // * Timestamp
129 // * Message size (variable length; 1, 2, or 8 bytes)
130 // + Message (variable length)
131
132 // N.G. allocates space and writes pointer value to logBuffer
133 flatlogs::bufferPtrT logBuffer;
134 flatlogs::logHeader::createLog<MagAOX::logger::telem_dmspeck>(logBuffer
135 , tsx, msg
136 , prio);
137 // Run full log through flatbuffer Verifier
139 }
140};
141
142SCENARIO( "Create telem_dmspeck 0", "[a log item]")
143{
144 GIVEN("a telem_dmspeck log code")
145 {
146 WHEN("random values for fields")
147 {
148 // Create flatbuffer
150 // Compare flatbuffer parameters
152 REQUIRE(td.m_trigger == telemDmspeckTrigger_0);
155 REQUIRE(td.m_angles == telemDmspeckAngles_0);
157 REQUIRE(td.m_crosses == telemDmspeckCrosses_0);
158 REQUIRE(td.m_verify);
159 }
160 }
161}
162
163
std::vector< bool > m_saveTdCrosses
std::vector< float > m_amplitudes
std::vector< float > m_saveTdAmplitudes
std::vector< float > m_saveTdAngles
std::vector< float > m_saveTdSeparations
bool verify(const typename MagAOX::logger::telem_dmspeck::messageT &msg)
CTelemDmspeck_0(bool modulating_, bool trigger_, float frequency_, std::vector< float > separations_, std::vector< float > angles_, std::vector< float > amplitudes_, std::vector< bool > crosses_)
std::vector< float > m_separations
int8_t logPrioT
The type of the log priority code.
Definition logDefs.hpp:21
std::shared_ptr< char > bufferPtrT
The log entry buffer smart pointer.
Definition logHeader.hpp:58
const MagAOX::logger::Telem_dmspeck_fb * GetTelem_dmspeck_fb(const void *buf)
static constexpr logPrioT LOG_DEFAULT
Used to denote "use the default level for this log type".
static flatlogs::msgLenT length(const fbMessage &msg)
Get the length of the message.
The type of the input message.
static bool verify(flatlogs::bufferPtrT &logBuff, flatlogs::msgLenT len)
A fixed-width timespec structure.
Definition timespecX.hpp:35
const bool telemDmspeckModulating_0
const bool telemDmspeckTrigger_0
const std::vector< float > telemDmspeckAmplitudes_0
const float telemDmspeckFrequency_0
const std::vector< float > telemDmspeckAngles_0
const std::vector< bool > telemDmspeckCrosses_0
const std::vector< float > telemDmspeckSeparations_0
SCENARIO("Create telem_dmspeck 0", "[a log item]")