GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_CONFIG_NODE_ITER/main.cpp
Date: 2025-11-27 16:44:16
Exec Total Coverage
Lines: 35 35 100.0%
Functions: 4 4 100.0%
Branches: 81 81 100.0%

Line Branch Exec Source
1
2 /***************************************
3 Auteur : Pierre Aubert
4 Mail : pierre.aubert@lapp.in2p3.fr
5 Licence : CeCILL-C
6 ****************************************/
7
8 #include "phoenix_assert.h"
9 #include "phoenix_check.h"
10 #include "ConfigNode.h"
11 #include "parser_json.h"
12
13 ///@brief Shadok
14 struct Shadok{
15 ///Name of the Shadok
16 PString name;
17 ///Age of the Shadok
18 size_t age;
19 };
20
21 ///load a Shadok with a ConfigNodeIter
22 /** @param[out] iter : iterator to be used
23 * @param[out] shadok : Shadok to be loaded
24 * @return true on success, false otherwize
25 */
26 3 bool shadokLoad(ConfigNodeIter & iter, Shadok & shadok){
27 3 bool b(true);
28
2/2
✓ Branch 0 (2→3) taken 3 times.
✓ Branch 2 (3→4) taken 3 times.
3 b &= iter.getChildValue("name", shadok.name);
29
1/1
✓ Branch 0 (5→6) taken 3 times.
3 ConfigCheckValue checkAge(&shadok.age, 0lu, true, 100lu, true);
30
2/2
✓ Branch 0 (6→7) taken 3 times.
✓ Branch 2 (7→8) taken 3 times.
3 b &= iter.getChildValue("age", shadok.age, &checkAge);
31 3 return b;
32 3 }
33
34 ///Check the load of a Shadok
35 /** @param configContent : content to be parsed
36 * @return true if the load was a success, false otherwise
37 */
38 1 bool checkLoadShadok(const PString & configContent){
39
1/1
✓ Branch 0 (2→3) taken 1 times.
1 ConfigNode main;
40
5/5
✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (8→9) taken 1 times.
✓ Branch 4 (11→12) taken 1 times.
✓ Branch 6 (12→13) taken 1 times.
✓ Branch 8 (13→14) taken 1 times.
5 phoenix_assert(parser_jsonString(main, configContent));
41
1/1
✓ Branch 0 (20→21) taken 1 times.
1 ConfigNodeIter iter(main.iter());
42
6/6
✓ Branch 0 (23→24) taken 1 times.
✓ Branch 2 (26→27) taken 1 times.
✓ Branch 4 (29→30) taken 1 times.
✓ Branch 6 (30→31) taken 1 times.
✓ Branch 8 (31→32) taken 1 times.
✓ Branch 10 (32→33) taken 1 times.
5 phoenix_assert(iter.down("Shadok"));
43
1/1
✓ Branch 0 (40→41) taken 1 times.
1 Shadok shadok;
44
1/1
✓ Branch 0 (41→42) taken 1 times.
2 return shadokLoad(iter, shadok);
45 1 }
46
47 ///Check the ConfigNode
48 1 void checkConfigNodeIter(){
49
1/1
✓ Branch 0 (2→3) taken 1 times.
1 PString content("{\"Shadok\": {\"name\": \"Shadoko\",\"age\": \"42\"}}");
50
1/1
✓ Branch 0 (3→4) taken 1 times.
1 ConfigNode main;
51
5/5
✓ Branch 0 (6→7) taken 1 times.
✓ Branch 2 (9→10) taken 1 times.
✓ Branch 4 (12→13) taken 1 times.
✓ Branch 6 (13→14) taken 1 times.
✓ Branch 8 (14→15) taken 1 times.
5 phoenix_assert(parser_jsonString(main, content));
52
53
1/1
✓ Branch 0 (21→22) taken 1 times.
1 ConfigNodeIter iter(main.iter());
54
6/6
✓ Branch 0 (24→25) taken 1 times.
✓ Branch 2 (27→28) taken 1 times.
✓ Branch 4 (30→31) taken 1 times.
✓ Branch 6 (31→32) taken 1 times.
✓ Branch 8 (32→33) taken 1 times.
✓ Branch 10 (33→34) taken 1 times.
5 phoenix_assert(iter.down("Shadok"));
55
1/1
✓ Branch 0 (41→42) taken 1 times.
1 Shadok shadok;
56
5/5
✓ Branch 0 (44→45) taken 1 times.
✓ Branch 2 (47→48) taken 1 times.
✓ Branch 4 (50→51) taken 1 times.
✓ Branch 6 (51→52) taken 1 times.
✓ Branch 8 (52→53) taken 1 times.
6 phoenix_assert(shadokLoad(iter, shadok));
57
58
7/7
✓ Branch 0 (61→62) taken 1 times.
✓ Branch 2 (64→65) taken 1 times.
✓ Branch 4 (67→68) taken 1 times.
✓ Branch 6 (70→71) taken 1 times.
✓ Branch 8 (73→74) taken 1 times.
✓ Branch 10 (74→75) taken 1 times.
✓ Branch 12 (75→76) taken 1 times.
10 phoenix_assert(phoenix_check("checkConfigNodeIter : Shadok::name", shadok.name, "Shadoko"));
59
6/6
✓ Branch 0 (88→89) taken 1 times.
✓ Branch 2 (91→92) taken 1 times.
✓ Branch 4 (94→95) taken 1 times.
✓ Branch 6 (97→98) taken 1 times.
✓ Branch 8 (98→99) taken 1 times.
✓ Branch 10 (99→100) taken 1 times.
8 phoenix_assert(phoenix_check("checkConfigNodeIter : Shadok::age", shadok.age, 42lu));
60
61
6/6
✓ Branch 0 (110→111) taken 1 times.
✓ Branch 2 (113→114) taken 1 times.
✓ Branch 4 (116→117) taken 1 times.
✓ Branch 6 (117→118) taken 1 times.
✓ Branch 8 (118→119) taken 1 times.
✓ Branch 10 (119→120) taken 1 times.
5 phoenix_assert(!checkLoadShadok("{\"Shadok\": {\"name\": \"Shadoko\",\"age\": \"142\"}}"));
62
63
1/1
✓ Branch 0 (127→128) taken 1 times.
1 ConfigNode output;
64
1/1
✓ Branch 0 (128→129) taken 1 times.
1 ConfigNodeIter outIt(output.iterWrite());
65
6/6
✓ Branch 0 (131→132) taken 1 times.
✓ Branch 2 (134→135) taken 1 times.
✓ Branch 4 (137→138) taken 1 times.
✓ Branch 6 (138→139) taken 1 times.
✓ Branch 8 (139→140) taken 1 times.
✓ Branch 10 (140→141) taken 1 times.
6 phoenix_assert(outIt.down("Shadok"));
66
5/5
✓ Branch 0 (150→151) taken 1 times.
✓ Branch 2 (153→154) taken 1 times.
✓ Branch 4 (156→157) taken 1 times.
✓ Branch 6 (157→158) taken 1 times.
✓ Branch 8 (158→159) taken 1 times.
6 phoenix_assert(shadokLoad(outIt, shadok)); //OK this is not a load, but it will be clearer in PhoenixConfigStream
67
9/9
✓ Branch 0 (167→168) taken 1 times.
✓ Branch 2 (170→171) taken 1 times.
✓ Branch 4 (173→174) taken 1 times.
✓ Branch 6 (174→175) taken 1 times.
✓ Branch 8 (175→176) taken 1 times.
✓ Branch 10 (176→177) taken 1 times.
✓ Branch 12 (179→180) taken 1 times.
✓ Branch 14 (180→181) taken 1 times.
✓ Branch 16 (181→182) taken 1 times.
7 phoenix_assert(phoenix_check("checkConfigNodeIter : to string ", toJsonString(output, "", ""), content));
68 1 }
69
70
71 1 int main(int argc, char** argv){
72 1 checkConfigNodeIter();
73 1 return 0;
74 }
75
76
77