GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_SUB_MESSAGE_PARSING_YML/main.cpp
Date: 2026-01-15 15:40:41
Exec Total Coverage
Lines: 72 74 97.3%
Functions: 2 2 100.0%
Branches: 193 203 95.1%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include "phoenix_assert.h"
8 #include "phoenix_check.h"
9 #include "data_all.h"
10 #include "FieldParser.h"
11
12 typedef std::vector<char> Message;
13 typedef std::vector<Message > VecMessage;
14
15
16 ///Dump all the messages bytes
17 /** @param fileNameData : input file name
18 * @param fileNameYml : configuration file yml
19 * @param isFinishedSooner : true if the parse yml function will fail, false otherwise
20 */
21 2 void testSubMessageParsing(const std::string & fileNameData, const std::string & fileNameYml, bool isFinishedSooner){
22 2 VecMessage vecInMessage;
23
5/5
✓ Branch 0 (5→6) taken 2 times.
✓ Branch 2 (8→9) taken 2 times.
✓ Branch 4 (11→12) taken 2 times.
✓ Branch 6 (12→13) taken 2 times.
✓ Branch 8 (13→14) taken 2 times.
10 phoenix_assert(data_load(fileNameData, vecInMessage));
24
1/1
✓ Branch 0 (20→21) taken 2 times.
2 FieldConfig config;
25
4/4
✓ Branch 0 (21→22) taken 2 times.
✓ Branch 2 (22→23) taken 2 times.
✓ Branch 4 (23→24) taken 2 times.
✓ Branch 6 (24→25) taken 2 times.
2 bool b(phoenix_parseFieldConfig(config, PPath(fileNameYml)));
26
3/4
✓ Branch 0 (28→29) taken 1 times.
✓ Branch 1 (28→31) taken 1 times.
✓ Branch 2 (29→30) taken 1 times.
✗ Branch 3 (29→31) not taken.
2 if(!b && isFinishedSooner){
27 1 return;
28 }
29
4/4
✓ Branch 0 (33→34) taken 1 times.
✓ Branch 2 (36→37) taken 1 times.
✓ Branch 4 (39→40) taken 1 times.
✓ Branch 6 (40→41) taken 1 times.
5 phoenix_assert(b);
30
31
1/1
✓ Branch 0 (47→48) taken 1 times.
1 FieldParser parser;
32 1 size_t field1(0lu), configurationId(0lu), eventId(0lu), telEventId(0lu);
33 1 unsigned int field3(0), triggerTimeS(0), triggerTimeQns(0), triggerType(0);
34
6/6
✓ Branch 0 (50→51) taken 1 times.
✓ Branch 2 (53→54) taken 1 times.
✓ Branch 4 (56→57) taken 1 times.
✓ Branch 6 (57→58) taken 1 times.
✓ Branch 8 (58→59) taken 1 times.
✓ Branch 10 (59→60) taken 1 times.
6 phoenix_assert(parser.addParseFieldEnum(&field1, config, "Field1"));
35
6/6
✓ Branch 0 (69→70) taken 1 times.
✓ Branch 2 (72→73) taken 1 times.
✓ Branch 4 (75→76) taken 1 times.
✓ Branch 6 (76→77) taken 1 times.
✓ Branch 8 (77→78) taken 1 times.
✓ Branch 10 (78→79) taken 1 times.
5 phoenix_assert(parser.addParseFieldValue(&field3, config, "Field3"));
36
37
1/1
✓ Branch 0 (86→87) taken 1 times.
1 FieldConfig fieldEvent;
38
2/2
✓ Branch 0 (87→88) taken 1 times.
✓ Branch 2 (88→89) taken 1 times.
1 FieldParser* eventParser = parser.addSubMessage(fieldEvent, config, "Event");
39
6/6
✓ Branch 0 (92→93) taken 1 times.
✓ Branch 2 (95→96) taken 1 times.
✓ Branch 4 (98→99) taken 1 times.
✓ Branch 6 (99→100) taken 1 times.
✓ Branch 8 (100→101) taken 1 times.
✓ Branch 10 (101→102) taken 1 times.
6 phoenix_assert(eventParser->addParseFieldValue(&configurationId, fieldEvent, "configuration_id"));
40
6/6
✓ Branch 0 (111→112) taken 1 times.
✓ Branch 2 (114→115) taken 1 times.
✓ Branch 4 (117→118) taken 1 times.
✓ Branch 6 (118→119) taken 1 times.
✓ Branch 8 (119→120) taken 1 times.
✓ Branch 10 (120→121) taken 1 times.
6 phoenix_assert(eventParser->addParseFieldValue(&eventId, fieldEvent, "event_id"));
41
6/6
✓ Branch 0 (130→131) taken 1 times.
✓ Branch 2 (133→134) taken 1 times.
✓ Branch 4 (136→137) taken 1 times.
✓ Branch 6 (137→138) taken 1 times.
✓ Branch 8 (138→139) taken 1 times.
✓ Branch 10 (139→140) taken 1 times.
6 phoenix_assert(eventParser->addParseFieldValue(&telEventId, fieldEvent, "tel_event_id"));
42
6/6
✓ Branch 0 (149→150) taken 1 times.
✓ Branch 2 (152→153) taken 1 times.
✓ Branch 4 (155→156) taken 1 times.
✓ Branch 6 (156→157) taken 1 times.
✓ Branch 8 (157→158) taken 1 times.
✓ Branch 10 (158→159) taken 1 times.
6 phoenix_assert(eventParser->addParseFieldValue(&triggerTimeS, fieldEvent, "trigger_time_s"));
43
6/6
✓ Branch 0 (168→169) taken 1 times.
✓ Branch 2 (171→172) taken 1 times.
✓ Branch 4 (174→175) taken 1 times.
✓ Branch 6 (175→176) taken 1 times.
✓ Branch 8 (176→177) taken 1 times.
✓ Branch 10 (177→178) taken 1 times.
5 phoenix_assert(eventParser->addParseFieldValue(&triggerTimeQns, fieldEvent, "trigger_time_qns"));
44
1/2
✗ Branch 0 (185→186) not taken.
✓ Branch 1 (185→206) taken 1 times.
1 if(isFinishedSooner){
45 phoenix_assert(!eventParser->addParseFieldValue(&triggerType, fieldEvent, "unexisting_trigger_type"));
46 }
47
6/6
✓ Branch 0 (208→209) taken 1 times.
✓ Branch 2 (211→212) taken 1 times.
✓ Branch 4 (214→215) taken 1 times.
✓ Branch 6 (215→216) taken 1 times.
✓ Branch 8 (216→217) taken 1 times.
✓ Branch 10 (217→218) taken 1 times.
5 phoenix_assert(eventParser->addParseFieldValue(&triggerType, fieldEvent, "trigger_type"));
48
49
1/2
✗ Branch 0 (225→226) not taken.
✓ Branch 1 (225→227) taken 1 times.
1 if(isFinishedSooner){
50 return;
51 }
52
53 1 unsigned short* tabWaveform = NULL;
54 1 size_t nbPixelSliceGain(0lu);
55
3/3
✓ Branch 0 (227→228) taken 1 times.
✓ Branch 2 (228→229) taken 1 times.
✓ Branch 4 (229→230) taken 1 times.
1 FieldConfig & fieldWaveform = fieldEvent.getVecChildren()["waveform"];
56
1/1
✓ Branch 0 (231→232) taken 1 times.
1 FieldParser * waveformParser = eventParser->addSubMessage(fieldWaveform);
57
7/7
✓ Branch 0 (234→235) taken 1 times.
✓ Branch 2 (237→238) taken 1 times.
✓ Branch 4 (240→241) taken 1 times.
✓ Branch 6 (241→242) taken 1 times.
✓ Branch 8 (242→243) taken 1 times.
✓ Branch 10 (243→244) taken 1 times.
✓ Branch 12 (251→252) taken 1 times.
6 phoenix_assert(waveformParser->addParseFieldArray(&tabWaveform, &nbPixelSliceGain, fieldWaveform, "data"));
58
59
1/1
✓ Branch 0 (252→253) taken 1 times.
1 parser.print();
60
61 //Expected values of field 3
62
1/1
✓ Branch 0 (256→257) taken 1 times.
2 std::vector<unsigned int> vecExpectedField3 = {628325 ,628326, 628327,628328,628329,628330,628331,628332,628333,628334};
63
64 1 size_t i(0lu);
65 1 std::vector<unsigned int>::iterator itCheckField3 = vecExpectedField3.begin();
66
2/2
✓ Branch 0 (482→260) taken 10 times.
✓ Branch 1 (482→483) taken 1 times.
22 for(VecMessage::iterator it(vecInMessage.begin()); it != vecInMessage.end(); ++it){
67
5/5
✓ Branch 0 (262→263) taken 10 times.
✓ Branch 2 (265→266) taken 10 times.
✓ Branch 4 (268→269) taken 10 times.
✓ Branch 6 (271→272) taken 10 times.
✓ Branch 8 (272→273) taken 10 times.
60 phoenix_assert(parser.load(*it));
68
3/3
✓ Branch 0 (279→280) taken 10 times.
✓ Branch 2 (280→281) taken 10 times.
✓ Branch 4 (281→282) taken 10 times.
10 std::cout << "Parse Event " << i << std::endl;
69
5/5
✓ Branch 0 (282→283) taken 10 times.
✓ Branch 2 (283→284) taken 10 times.
✓ Branch 4 (284→285) taken 10 times.
✓ Branch 6 (285→286) taken 10 times.
✓ Branch 8 (286→287) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : field 1 = " << field1 << std::endl;
70
4/4
✓ Branch 0 (289→290) taken 10 times.
✓ Branch 2 (292→293) taken 10 times.
✓ Branch 4 (295→296) taken 10 times.
✓ Branch 6 (296→297) taken 10 times.
50 phoenix_assert(field1 == 16lu);
71
5/5
✓ Branch 0 (303→304) taken 10 times.
✓ Branch 2 (304→305) taken 10 times.
✓ Branch 4 (305→306) taken 10 times.
✓ Branch 6 (306→307) taken 10 times.
✓ Branch 8 (307→308) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : field 3 = " << field3 << std::endl;
72
4/4
✓ Branch 0 (310→311) taken 10 times.
✓ Branch 2 (313→314) taken 10 times.
✓ Branch 4 (316→317) taken 10 times.
✓ Branch 6 (319→320) taken 10 times.
60 phoenix_assert(*itCheckField3 == field3);
73
74
5/5
✓ Branch 0 (326→327) taken 10 times.
✓ Branch 2 (327→328) taken 10 times.
✓ Branch 4 (328→329) taken 10 times.
✓ Branch 6 (329→330) taken 10 times.
✓ Branch 8 (330→331) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : configuration_id = " << configurationId << std::endl;
75
4/4
✓ Branch 0 (333→334) taken 10 times.
✓ Branch 2 (336→337) taken 10 times.
✓ Branch 4 (339→340) taken 10 times.
✓ Branch 6 (340→341) taken 10 times.
50 phoenix_assert(configurationId == 0);
76 10 size_t expectedEventId = 2417265 + 4lu*i;
77
5/5
✓ Branch 0 (347→348) taken 10 times.
✓ Branch 2 (348→349) taken 10 times.
✓ Branch 4 (349→350) taken 10 times.
✓ Branch 6 (350→351) taken 10 times.
✓ Branch 8 (351→352) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : event_id = " << eventId << std::endl;
78
4/4
✓ Branch 0 (354→355) taken 10 times.
✓ Branch 2 (357→358) taken 10 times.
✓ Branch 4 (360→361) taken 10 times.
✓ Branch 6 (361→362) taken 10 times.
50 phoenix_assert(eventId == expectedEventId);
79
5/5
✓ Branch 0 (368→369) taken 10 times.
✓ Branch 2 (369→370) taken 10 times.
✓ Branch 4 (370→371) taken 10 times.
✓ Branch 6 (371→372) taken 10 times.
✓ Branch 8 (372→373) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : tel_event_id = " << telEventId << std::endl;
80
4/4
✓ Branch 0 (375→376) taken 10 times.
✓ Branch 2 (378→379) taken 10 times.
✓ Branch 4 (381→382) taken 10 times.
✓ Branch 6 (382→383) taken 10 times.
50 phoenix_assert(eventId == telEventId);
81
5/5
✓ Branch 0 (389→390) taken 10 times.
✓ Branch 2 (390→391) taken 10 times.
✓ Branch 4 (391→392) taken 10 times.
✓ Branch 6 (392→393) taken 10 times.
✓ Branch 8 (393→394) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : trigger_time_s = " << triggerTimeS << std::endl;
82
4/4
✓ Branch 0 (396→397) taken 10 times.
✓ Branch 2 (399→400) taken 10 times.
✓ Branch 4 (402→403) taken 10 times.
✓ Branch 6 (403→404) taken 10 times.
50 phoenix_assert(triggerTimeS == 1625787312u);
83
5/5
✓ Branch 0 (410→411) taken 10 times.
✓ Branch 2 (411→412) taken 10 times.
✓ Branch 4 (412→413) taken 10 times.
✓ Branch 6 (413→414) taken 10 times.
✓ Branch 8 (414→415) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : trigger_time_qns = " << triggerTimeQns << std::endl;
84
5/5
✓ Branch 0 (415→416) taken 10 times.
✓ Branch 2 (416→417) taken 10 times.
✓ Branch 4 (417→418) taken 10 times.
✓ Branch 6 (418→419) taken 10 times.
✓ Branch 8 (419→420) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : trigger_type = " << triggerType << std::endl;
85
86
6/6
✓ Branch 0 (420→421) taken 10 times.
✓ Branch 2 (421→422) taken 10 times.
✓ Branch 4 (422→423) taken 10 times.
✓ Branch 6 (423→424) taken 10 times.
✓ Branch 8 (424→425) taken 10 times.
✓ Branch 10 (425→426) taken 10 times.
10 std::cout << "testSubMessageParsing("<<i<<") : nbValue = "<<nbPixelSliceGain<<", waveform = " << tabWaveform;
87
6/6
✓ Branch 0 (428→429) taken 10 times.
✓ Branch 2 (431→432) taken 10 times.
✓ Branch 4 (434→435) taken 10 times.
✓ Branch 6 (437→438) taken 10 times.
✓ Branch 8 (438→439) taken 10 times.
✓ Branch 10 (439→440) taken 10 times.
70 phoenix_assert(phoenix_check("Check nbPixelSliceGain", nbPixelSliceGain, 148400lu));
88
2/2
✓ Branch 0 (452→449) taken 100 times.
✓ Branch 1 (452→453) taken 10 times.
110 for(size_t j(0lu); j < 10lu; ++j){
89
2/2
✓ Branch 0 (449→450) taken 100 times.
✓ Branch 2 (450→451) taken 100 times.
100 std::cout << ", " << tabWaveform[j];
90 }
91
1/1
✓ Branch 0 (453→454) taken 10 times.
10 std::cout << std::endl;
92
93
4/4
✓ Branch 0 (456→457) taken 10 times.
✓ Branch 2 (459→460) taken 10 times.
✓ Branch 4 (462→463) taken 10 times.
✓ Branch 6 (463→464) taken 10 times.
60 phoenix_assert(triggerType == 1);
94 ++itCheckField3;
95 10 ++i;
96 }
97
1/1
✓ Branch 0 (484→485) taken 1 times.
1 parser.print();
98
2/2
✓ Branch 0 (486→487) taken 1 times.
✓ Branch 2 (487→488) taken 1 times.
1 std::cout << "testSubMessageParsing : Let's reset the offsets :" << std::endl;
99
1/1
✓ Branch 0 (488→489) taken 1 times.
1 parser.resetOffset();
100
1/1
✓ Branch 0 (490→491) taken 1 times.
1 parser.print();
101 3 }
102
103 2 int main(int argc, char** argv){
104
2/2
✓ Branch 0 (4→5) taken 2 times.
✓ Branch 2 (8→9) taken 2 times.
6 std::string fileNameData(STREAM_DATA_CUT), fileNameYml("");
105 2 bool isFinishedSooner(false);
106
1/2
✓ Branch 0 (10→11) taken 2 times.
✗ Branch 1 (10→15) not taken.
2 if(argc >= 2){
107
1/1
✓ Branch 0 (11→12) taken 2 times.
2 fileNameYml = phoenix_charToString(argv[1]);
108 }
109
2/2
✓ Branch 0 (15→16) taken 1 times.
✓ Branch 1 (15→20) taken 1 times.
2 if(argc >= 3){
110
2/2
✓ Branch 0 (16→17) taken 1 times.
✓ Branch 2 (17→18) taken 1 times.
1 isFinishedSooner = phoenix_charToString(argv[2]) == "true";
111 }
112
1/1
✓ Branch 0 (20→21) taken 2 times.
2 testSubMessageParsing(fileNameData, fileNameYml, isFinishedSooner);
113 2 return 0;
114 2 }
115