GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_SOCKET_UTILITY_FUNCTIONS/main.cpp
Date: 2025-12-02 14:33:23
Exec Total Coverage
Lines: 120 120 100.0%
Functions: 6 6 100.0%
Branches: 214 220 97.3%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include <iostream>
8 #include "data_stream_assert.h"
9 #include "data_stream_check_value.h"
10 #include "PMockBackend.h"
11 #include "PMockBackendFile.h"
12
13 ///Check msgSize and msgData
14 1 void testMsgUtilityFunctions(){
15 // Test msgResize and msgSize
16 1 PMockBackend::Message msg;
17
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockBackend::msgResize(msg, 4);
18
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 data_stream_assert(PMockBackend::msgSize(msg) == 4);
19
20
1/1
✓ Branch 0 (21→22) taken 1 times.
1 DataStreamIter data = PMockBackend::msgData(msg);
21
4/4
✓ 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.
5 data_stream_assert(data != nullptr);
22 1 data[0] = 1lu;
23 1 data[1] = 2lu;
24 1 data[2] = 3lu;
25 1 data[3] = 4lu;
26
27 1 const PMockBackend::Message& constMsg = msg;
28
1/1
✓ Branch 0 (38→39) taken 1 times.
1 const DataStreamIter constData = PMockBackend::msgData(constMsg);
29
4/4
✓ Branch 0 (41→42) taken 1 times.
✓ Branch 2 (44→45) taken 1 times.
✓ Branch 4 (47→48) taken 1 times.
✓ Branch 6 (48→49) taken 1 times.
6 data_stream_assert(constData[0] == 1lu);
30
4/4
✓ Branch 0 (57→58) taken 1 times.
✓ Branch 2 (60→61) taken 1 times.
✓ Branch 4 (63→64) taken 1 times.
✓ Branch 6 (64→65) taken 1 times.
6 data_stream_assert(constData[1] == 2lu);
31
4/4
✓ Branch 0 (73→74) taken 1 times.
✓ Branch 2 (76→77) taken 1 times.
✓ Branch 4 (79→80) taken 1 times.
✓ Branch 6 (80→81) taken 1 times.
6 data_stream_assert(constData[2] == 3lu);
32
4/4
✓ Branch 0 (89→90) taken 1 times.
✓ Branch 2 (92→93) taken 1 times.
✓ Branch 4 (95→96) taken 1 times.
✓ Branch 6 (96→97) taken 1 times.
5 data_stream_assert(constData[3] == 4lu);
33 1 }
34
35 ///Test conversion
36 1 void testMsgConversionFunctions(){
37
1/1
✓ Branch 0 (2→3) taken 1 times.
1 PMockBackend backend;
38 // Test msgToMock
39 1 PMockBackend::Message backendMsg;
40
1/1
✓ Branch 0 (4→5) taken 1 times.
1 PMockBackend::msgResize(backendMsg, 6);
41
1/1
✓ Branch 0 (5→6) taken 1 times.
1 DataStreamIter data = PMockBackend::msgData(backendMsg);
42 1 data[0] = 1lu;
43 1 data[1] = 2lu;
44 1 data[2] = 3lu;
45 1 data[3] = 4lu;
46 1 data[4] = 5lu;
47 1 data[5] = 6lu;
48
49 1 DataStreamMsg mockMsg;
50
1/1
✓ Branch 0 (7→8) taken 1 times.
1 PMockBackend::msgToMock(mockMsg, backendMsg);
51
52 // Check conversion
53
4/4
✓ Branch 0 (10→11) taken 1 times.
✓ Branch 2 (13→14) taken 1 times.
✓ Branch 4 (16→17) taken 1 times.
✓ Branch 6 (18→19) taken 1 times.
6 data_stream_assert(mockMsg.size() == 6);
54
4/4
✓ Branch 0 (27→28) taken 1 times.
✓ Branch 2 (30→31) taken 1 times.
✓ Branch 4 (33→34) taken 1 times.
✓ Branch 6 (35→36) taken 1 times.
6 data_stream_assert(mockMsg[0] == 1lu);
55
4/4
✓ Branch 0 (44→45) taken 1 times.
✓ Branch 2 (47→48) taken 1 times.
✓ Branch 4 (50→51) taken 1 times.
✓ Branch 6 (52→53) taken 1 times.
6 data_stream_assert(mockMsg[1] == 2lu);
56
4/4
✓ Branch 0 (61→62) taken 1 times.
✓ Branch 2 (64→65) taken 1 times.
✓ Branch 4 (67→68) taken 1 times.
✓ Branch 6 (69→70) taken 1 times.
6 data_stream_assert(mockMsg[2] == 3lu);
57
4/4
✓ Branch 0 (78→79) taken 1 times.
✓ Branch 2 (81→82) taken 1 times.
✓ Branch 4 (84→85) taken 1 times.
✓ Branch 6 (86→87) taken 1 times.
6 data_stream_assert(mockMsg[3] == 4lu);
58
4/4
✓ Branch 0 (95→96) taken 1 times.
✓ Branch 2 (98→99) taken 1 times.
✓ Branch 4 (101→102) taken 1 times.
✓ Branch 6 (103→104) taken 1 times.
6 data_stream_assert(mockMsg[4] == 5lu);
59
4/4
✓ Branch 0 (112→113) taken 1 times.
✓ Branch 2 (115→116) taken 1 times.
✓ Branch 4 (118→119) taken 1 times.
✓ Branch 6 (120→121) taken 1 times.
5 data_stream_assert(mockMsg[5] == 6lu);
60
61 // Test mockToMsg
62 1 PMockBackend::Message convertedMsg;
63
1/1
✓ Branch 0 (128→129) taken 1 times.
1 PMockBackend::mockToMsg(convertedMsg, mockMsg);
64
65 // Check inverse conversion
66
5/5
✓ 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.
5 data_stream_assert(PMockBackend::msgSize(convertedMsg) == 6);
67
1/1
✓ Branch 0 (146→147) taken 1 times.
1 const DataStreamIter convertedData = PMockBackend::msgData(convertedMsg);
68
4/4
✓ 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.
6 data_stream_assert(convertedData[0] == 1lu);
69
4/4
✓ Branch 0 (165→166) taken 1 times.
✓ Branch 2 (168→169) taken 1 times.
✓ Branch 4 (171→172) taken 1 times.
✓ Branch 6 (172→173) taken 1 times.
6 data_stream_assert(convertedData[1] == 2lu);
70
4/4
✓ Branch 0 (181→182) taken 1 times.
✓ Branch 2 (184→185) taken 1 times.
✓ Branch 4 (187→188) taken 1 times.
✓ Branch 6 (188→189) taken 1 times.
6 data_stream_assert(convertedData[2] == 3lu);
71
4/4
✓ Branch 0 (197→198) taken 1 times.
✓ Branch 2 (200→201) taken 1 times.
✓ Branch 4 (203→204) taken 1 times.
✓ Branch 6 (204→205) taken 1 times.
6 data_stream_assert(convertedData[3] == 4lu);
72
4/4
✓ Branch 0 (213→214) taken 1 times.
✓ Branch 2 (216→217) taken 1 times.
✓ Branch 4 (219→220) taken 1 times.
✓ Branch 6 (220→221) taken 1 times.
6 data_stream_assert(convertedData[4] == 5lu);
73
4/4
✓ Branch 0 (229→230) taken 1 times.
✓ Branch 2 (232→233) taken 1 times.
✓ Branch 4 (235→236) taken 1 times.
✓ Branch 6 (236→237) taken 1 times.
5 data_stream_assert(convertedData[5] == 6lu);
74 1 }
75
76 ///Test mock backend function
77 1 void testPMockBackendServerFunctions(){
78
1/1
✓ Branch 0 (2→3) taken 1 times.
1 PMockBackend backend;
79
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockBackend::Param clientParam = PMockBackend::client();
80
1/1
✓ Branch 0 (4→5) taken 1 times.
1 PMockBackend::Param serverParam = PMockBackend::server();
81
82 // Test createServerSocket
83
2/2
✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (6→7) taken 1 times.
1 PMockBackend::Socket serverSocket, clientSocket;
84
7/10
✓ Branch 0 (9→10) taken 1 times.
✓ Branch 2 (12→13) taken 1 times.
✓ Branch 4 (15→16) taken 1 times.
✓ Branch 6 (18→19) taken 1 times.
✓ Branch 8 (19→20) taken 1 times.
✓ Branch 10 (20→21) taken 1 times.
✗ Branch 12 (22→23) not taken.
✓ Branch 13 (22→24) taken 1 times.
✗ Branch 14 (148→149) not taken.
✗ Branch 15 (148→150) not taken.
8 data_stream_assert(backend.createServerSocket(serverSocket, PSocketParam{"localhost", 7777}, serverParam));
85
2/2
✓ Branch 0 (33→34) taken 1 times.
✓ Branch 2 (34→35) taken 1 times.
1 serverSocket.setMockPrefix("server_test_");
86
1/1
✓ Branch 0 (37→38) taken 1 times.
1 serverSocket.setIsMockRecord(true);
87
5/5
✓ Branch 0 (40→41) taken 1 times.
✓ Branch 2 (43→44) taken 1 times.
✓ Branch 4 (46→47) taken 1 times.
✓ Branch 6 (47→48) taken 1 times.
✓ Branch 8 (48→49) taken 1 times.
6 data_stream_assert(serverSocket.isConnected());
88
89
7/10
✓ Branch 0 (57→58) taken 1 times.
✓ Branch 2 (60→61) taken 1 times.
✓ Branch 4 (63→64) taken 1 times.
✓ Branch 6 (66→67) taken 1 times.
✓ Branch 8 (67→68) taken 1 times.
✓ Branch 10 (68→69) taken 1 times.
✗ Branch 12 (70→71) not taken.
✓ Branch 13 (70→72) taken 1 times.
✗ Branch 14 (199→200) not taken.
✗ Branch 15 (199→201) not taken.
8 data_stream_assert(backend.createServerSocket(clientSocket, PSocketParam{"localhost", 7777}, clientParam));
90
2/2
✓ Branch 0 (81→82) taken 1 times.
✓ Branch 2 (82→83) taken 1 times.
1 clientSocket.setMockPrefix("client_test_");
91
1/1
✓ Branch 0 (85→86) taken 1 times.
1 clientSocket.setIsMockRecord(true);
92
5/5
✓ Branch 0 (88→89) taken 1 times.
✓ Branch 2 (91→92) taken 1 times.
✓ Branch 4 (94→95) taken 1 times.
✓ Branch 6 (95→96) taken 1 times.
✓ Branch 8 (96→97) taken 1 times.
5 data_stream_assert(clientSocket.isConnected());
93
94 1 PMockBackend::Message testMsg;
95
1/1
✓ Branch 0 (104→105) taken 1 times.
1 PMockBackend::msgResize(testMsg, 3);
96
1/1
✓ Branch 0 (105→106) taken 1 times.
1 DataStreamIter data = PMockBackend::msgData(testMsg);
97 1 data[0] = 1lu;
98 1 data[1] = 2lu;
99 1 data[2] = 3lu;
100
101
5/5
✓ Branch 0 (108→109) taken 1 times.
✓ Branch 2 (111→112) taken 1 times.
✓ Branch 4 (114→115) taken 1 times.
✓ Branch 6 (115→116) taken 1 times.
✓ Branch 8 (116→117) taken 1 times.
5 data_stream_assert(serverSocket.sendMsg(testMsg, PSendFlag::BLOCK) == PSendStatus::OK);
102
1/1
✓ Branch 0 (123→124) taken 1 times.
1 serverSocket.close();
103
5/5
✓ Branch 0 (126→127) taken 1 times.
✓ Branch 2 (129→130) taken 1 times.
✓ Branch 4 (132→133) taken 1 times.
✓ Branch 6 (133→134) taken 1 times.
✓ Branch 8 (134→135) taken 1 times.
5 data_stream_assert(clientSocket.recvMsg(testMsg, PRecvFlag::BLOCK) == PRecvStatus::OK);
104
1/1
✓ Branch 0 (141→142) taken 1 times.
1 clientSocket.close();
105 1 }
106
107 ///Test msgResize and msgSize pour PMockBackendFile
108 1 void testFileBackendUtilityFunctions(){
109 1 PMockBackendFile::Message fileMsg;
110
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockBackendFile::msgResize(fileMsg, 4);
111
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 data_stream_assert(PMockBackendFile::msgSize(fileMsg) == 4);
112
113
1/1
✓ Branch 0 (21→22) taken 1 times.
1 DataStreamIter fileData = PMockBackendFile::msgData(fileMsg);
114
4/4
✓ 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.
5 data_stream_assert(fileData != nullptr);
115 1 fileData[0] = 1lu;
116 1 fileData[1] = 2lu;
117 1 fileData[2] = 3lu;
118 1 fileData[3] = 4lu;
119
120 1 const PMockBackendFile::Message& constFileMsg = fileMsg;
121
1/1
✓ Branch 0 (38→39) taken 1 times.
1 const DataStreamIter constFileData = PMockBackendFile::msgData(constFileMsg);
122
4/4
✓ Branch 0 (41→42) taken 1 times.
✓ Branch 2 (44→45) taken 1 times.
✓ Branch 4 (47→48) taken 1 times.
✓ Branch 6 (48→49) taken 1 times.
6 data_stream_assert(constFileData[0] == 1lu);
123
4/4
✓ Branch 0 (57→58) taken 1 times.
✓ Branch 2 (60→61) taken 1 times.
✓ Branch 4 (63→64) taken 1 times.
✓ Branch 6 (64→65) taken 1 times.
6 data_stream_assert(constFileData[1] == 2lu);
124
4/4
✓ Branch 0 (73→74) taken 1 times.
✓ Branch 2 (76→77) taken 1 times.
✓ Branch 4 (79→80) taken 1 times.
✓ Branch 6 (80→81) taken 1 times.
6 data_stream_assert(constFileData[2] == 3lu);
125
4/4
✓ Branch 0 (89→90) taken 1 times.
✓ Branch 2 (92→93) taken 1 times.
✓ Branch 4 (95→96) taken 1 times.
✓ Branch 6 (96→97) taken 1 times.
5 data_stream_assert(constFileData[3] == 4lu);
126 1 }
127
128 ///Test backend conversion function
129 1 void testFileBackendConversionFunctions(){
130 1 PMockBackendFile::Message fileMsg;
131
1/1
✓ Branch 0 (3→4) taken 1 times.
1 PMockBackendFile::msgResize(fileMsg, 4);
132
1/1
✓ Branch 0 (4→5) taken 1 times.
1 DataStreamIter fileData = PMockBackendFile::msgData(fileMsg);
133 1 fileData[0] = 1lu;
134 1 fileData[1] = 2lu;
135 1 fileData[2] = 3lu;
136 1 fileData[3] = 4lu;
137
138 1 DataStreamMsg fileMockMsg;
139
1/1
✓ Branch 0 (6→7) taken 1 times.
1 PMockBackendFile::msgToMock(fileMockMsg, fileMsg);
140
141
4/4
✓ Branch 0 (9→10) taken 1 times.
✓ Branch 2 (12→13) taken 1 times.
✓ Branch 4 (15→16) taken 1 times.
✓ Branch 6 (17→18) taken 1 times.
6 data_stream_assert(fileMockMsg.size() == 4);
142
4/4
✓ Branch 0 (26→27) taken 1 times.
✓ Branch 2 (29→30) taken 1 times.
✓ Branch 4 (32→33) taken 1 times.
✓ Branch 6 (34→35) taken 1 times.
6 data_stream_assert(fileMockMsg[0] == 1lu);
143
4/4
✓ Branch 0 (43→44) taken 1 times.
✓ Branch 2 (46→47) taken 1 times.
✓ Branch 4 (49→50) taken 1 times.
✓ Branch 6 (51→52) taken 1 times.
6 data_stream_assert(fileMockMsg[1] == 2lu);
144
4/4
✓ Branch 0 (60→61) taken 1 times.
✓ Branch 2 (63→64) taken 1 times.
✓ Branch 4 (66→67) taken 1 times.
✓ Branch 6 (68→69) taken 1 times.
6 data_stream_assert(fileMockMsg[2] == 3lu);
145
4/4
✓ Branch 0 (77→78) taken 1 times.
✓ Branch 2 (80→81) taken 1 times.
✓ Branch 4 (83→84) taken 1 times.
✓ Branch 6 (85→86) taken 1 times.
5 data_stream_assert(fileMockMsg[3] == 4lu);
146
147 // Test mockToMsg pour PMockBackendFile
148 1 PMockBackendFile::Message convertedFileMsg;
149
1/1
✓ Branch 0 (93→94) taken 1 times.
1 PMockBackendFile::mockToMsg(convertedFileMsg, fileMockMsg);
150
151 // Vérification
152
5/5
✓ Branch 0 (96→97) taken 1 times.
✓ Branch 2 (99→100) taken 1 times.
✓ Branch 4 (102→103) taken 1 times.
✓ Branch 6 (103→104) taken 1 times.
✓ Branch 8 (104→105) taken 1 times.
5 data_stream_assert(PMockBackendFile::msgSize(convertedFileMsg) == 4);
153
1/1
✓ Branch 0 (111→112) taken 1 times.
1 const DataStreamIter convertedFileData = PMockBackendFile::msgData(convertedFileMsg);
154
4/4
✓ Branch 0 (114→115) taken 1 times.
✓ Branch 2 (117→118) taken 1 times.
✓ Branch 4 (120→121) taken 1 times.
✓ Branch 6 (121→122) taken 1 times.
6 data_stream_assert(convertedFileData[0] == 1lu);
155
4/4
✓ 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.
6 data_stream_assert(convertedFileData[1] == 2lu);
156
4/4
✓ Branch 0 (146→147) taken 1 times.
✓ Branch 2 (149→150) taken 1 times.
✓ Branch 4 (152→153) taken 1 times.
✓ Branch 6 (153→154) taken 1 times.
6 data_stream_assert(convertedFileData[2] == 3lu);
157
4/4
✓ Branch 0 (162→163) taken 1 times.
✓ Branch 2 (165→166) taken 1 times.
✓ Branch 4 (168→169) taken 1 times.
✓ Branch 6 (169→170) taken 1 times.
5 data_stream_assert(convertedFileData[3] == 4lu);
158 1 }
159
160 1 int main(int argc, char **argv){
161 1 testMsgUtilityFunctions();
162 1 testMsgConversionFunctions();
163 1 testPMockBackendServerFunctions();
164 1 testFileBackendUtilityFunctions();
165 1 testFileBackendConversionFunctions();
166 1 return 0;
167 }
168
169