GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_PALIGNED_ALLOCATOR/main.cpp
Date: 2025-08-06 14:32:39
Exec Total Coverage
Lines: 64 66 97.0%
Functions: 4 4 100.0%
Branches: 14 18 77.8%

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 <iostream>
9 #include "PAlignedAllocator.h"
10
11 ///Test the PAlignedAllocator
12 /** @return true on success, false otherwise
13 */
14 1 bool testPAlignedAllocator(){
15 1 bool b(true);
16
1/1
✓ Branch 0 (2→3) taken 1 times.
1 std::vector<int, PAlignedAllocator<int> > vecCustomAllocator(10lu);
17
3/3
✓ Branch 0 (3→4) taken 1 times.
✓ Branch 2 (5→6) taken 1 times.
✓ Branch 4 (6→7) taken 1 times.
1 std::cout << "testVectorAllocator : vecCustomAllocator ptr = " << vecCustomAllocator.data() << std::endl;
18
19
1/1
✓ Branch 0 (8→9) taken 1 times.
1 b &= phoenix_checkIsAligned(vecCustomAllocator.data());
20
3/3
✓ Branch 0 (9→10) taken 1 times.
✓ Branch 2 (10→11) taken 1 times.
✓ Branch 4 (11→12) taken 1 times.
1 std::cout << "testPAlignedAllocator : b = "<<b<< std::endl;
21
22 //Check too much allocation
23 try{
24
0/1
✗ Branch 0 (12→13) not taken.
1 std::vector<int, PAlignedAllocator<int> > vecTooMuchMem(-1lu);
25
1/2
✗ Branch 0 (28→29) not taken.
✓ Branch 1 (28→30) taken 1 times.
1 }catch(std::length_error&e){
26 1 b &= true;
27 1 }
28 ///Check bad alloc
29 try{
30
1/1
✓ Branch 0 (15→16) taken 1 times.
1 std::vector<int, PAlignedAllocator<int> > vecBadAlloc(0lu);
31
0/2
✗ Branch 0 (34→35) not taken.
✗ Branch 1 (34→36) not taken.
1 }catch(std::bad_alloc&e){
32 b &= true;
33 }
34
3/3
✓ Branch 0 (18→19) taken 1 times.
✓ Branch 2 (19→20) taken 1 times.
✓ Branch 4 (20→21) taken 1 times.
1 std::cout << "testPAlignedAllocator : b = " << b << std::endl;
35
1/1
✓ Branch 0 (21→22) taken 1 times.
1 phoenix_freeAlignedVector(NULL);
36 1 return b;
37 1 }
38
39 ///Test the padding
40 /** @return true on success, false otherwise
41 */
42 1 bool testPadding(){
43 1 bool b(true);
44 1 b &= phoenix_getPadding<float>(1lu) != 0lu;
45 1 b &= phoenix_getPadding<float>(PHOENIX_VECTOR_SIZE_FLOAT) == 0lu;
46 1 b &= phoenix_getPadding<double>(1lu) != 0lu;
47 1 b &= phoenix_getPadding<double>(PHOENIX_VECTOR_SIZE_FLOAT) == 0lu;
48
49 1 b &= phoenix_getPadding<bool>(1lu) != 0lu;
50 1 b &= phoenix_getPadding<bool>(PHOENIX_VECTOR_SIZE_CHAR) == 0lu;
51 1 b &= phoenix_getPadding<char>(1lu) != 0lu;
52 1 b &= phoenix_getPadding<char>(PHOENIX_VECTOR_SIZE_CHAR) == 0lu;
53 1 b &= phoenix_getPadding<unsigned char>(1lu) != 0lu;
54 1 b &= phoenix_getPadding<unsigned char>(PHOENIX_VECTOR_SIZE_CHAR) == 0lu;
55
56 1 b &= phoenix_getPadding<short>(1lu) != 0lu;
57 1 b &= phoenix_getPadding<short>(PHOENIX_VECTOR_SIZE_SHORT) == 0lu;
58 1 b &= phoenix_getPadding<unsigned short>(1lu) != 0lu;
59 1 b &= phoenix_getPadding<unsigned short>(PHOENIX_VECTOR_SIZE_SHORT) == 0lu;
60
61 1 b &= phoenix_getPadding<int>(1lu) != 0lu;
62 1 b &= phoenix_getPadding<int>(PHOENIX_VECTOR_SIZE_INT) == 0lu;
63 1 b &= phoenix_getPadding<unsigned int>(1lu) != 0lu;
64 1 b &= phoenix_getPadding<unsigned int>(PHOENIX_VECTOR_SIZE_INT) == 0lu;
65
66 1 b &= phoenix_getPadding<long>(1lu) != 0lu;
67 1 b &= phoenix_getPadding<long>(PHOENIX_VECTOR_SIZE_LONG_INT) == 0lu;
68 1 b &= phoenix_getPadding<unsigned long>(1lu) != 0lu;
69 1 b &= phoenix_getPadding<unsigned long>(PHOENIX_VECTOR_SIZE_LONG_INT) == 0lu;
70
71 1 std::cout << "testPadding : b = " << b << std::endl;
72 1 return b;
73 }
74
75 ///Test the byte alignement
76 /** @return true on success, false otherwise
77 */
78 1 bool testByteAlignment(){
79 1 bool b(true);
80 1 b &= phoenix_alignement_in_bytes<bool>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
81 1 b &= phoenix_alignement_in_bytes<char>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
82 1 b &= phoenix_alignement_in_bytes<unsigned char>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
83 1 b &= phoenix_alignement_in_bytes<short>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
84 1 b &= phoenix_alignement_in_bytes<unsigned short>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
85 1 b &= phoenix_alignement_in_bytes<int>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
86 1 b &= phoenix_alignement_in_bytes<unsigned int>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
87 1 b &= phoenix_alignement_in_bytes<long>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
88 1 b &= phoenix_alignement_in_bytes<unsigned long>() == PHOENIX_VECTOR_SIZE_BYTE_INT;
89
90 1 b &= phoenix_alignement_in_bytes<float>() == PHOENIX_VECTOR_SIZE_BYTE_FLOAT;
91 1 b &= phoenix_alignement_in_bytes<double>() == PHOENIX_VECTOR_SIZE_BYTE_FLOAT;
92
93 1 std::cout << "testByteAlignment : b = " << b << std::endl;
94 1 return b;
95 }
96
97 1 int main(int argc, char** argv){
98 1 bool b(true);
99 1 b &= testPAlignedAllocator();
100 1 b &= testPadding();
101 1 b &= testByteAlignment();
102 1 std::cout << "Final : b = " << b << std::endl;
103 1 return b - 1;
104 }
105
106
107