1 |
|
|
/*************************************** |
2 |
|
|
Auteur : Pierre Aubert |
3 |
|
|
Mail : pierre.aubert@lapp.in2p3.fr |
4 |
|
|
Licence : CeCILL-C |
5 |
|
|
****************************************/ |
6 |
|
|
|
7 |
|
|
#include "PStride.h" |
8 |
|
|
|
9 |
|
|
///Check and print the given PStride |
10 |
|
|
/** @param varName : string to print |
11 |
|
|
* @param other : PStride to check and print |
12 |
|
|
* @param expectedFullSize : expected full size |
13 |
|
|
* @param expectedFullNbElement : expected full number of elements |
14 |
|
|
*/ |
15 |
|
20 |
bool checkAndPrintPStride(const std::string & varName, const PStride & other, size_t expectedFullSize, size_t expectedFullNbElement){ |
16 |
|
20 |
bool b(true); |
17 |
|
20 |
std::cout << varName << other << std::endl; |
18 |
|
20 |
b &= other.getFullSize() == expectedFullSize; |
19 |
|
20 |
b &= other.getFullNbElement() == expectedFullNbElement; |
20 |
|
20 |
return b; |
21 |
|
|
} |
22 |
|
|
|
23 |
|
|
///Test the PStride |
24 |
|
|
/** @return true on success, false otherwise |
25 |
|
|
*/ |
26 |
|
1 |
bool testPStride(){ |
27 |
✓✓ |
1 |
std::cout << "============== testPStride ===============" << std::endl; |
28 |
|
1 |
bool b(true); |
29 |
|
|
|
30 |
✓ |
2 |
PStride strideA; |
31 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideA = ", strideA, 0lu, 0lu); |
32 |
|
|
|
33 |
✓ |
2 |
PStride strideACopy(strideA); |
34 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideACopy = ", strideACopy, 0lu, 0lu); |
35 |
|
|
|
36 |
✓ |
2 |
PStride strideACopyEq; |
37 |
✓ |
1 |
strideACopyEq = strideA; |
38 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideACopyEq = ", strideACopyEq, 0lu, 0lu); |
39 |
|
|
|
40 |
|
2 |
PVecSize dimB; |
41 |
✓ |
1 |
dimB.push_back(3lu); |
42 |
✓ |
2 |
PStride strideB1(dimB); |
43 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideB1 = ", strideB1, 3lu, 3lu); |
44 |
|
|
|
45 |
✓ |
2 |
PStride strideB1Copy(strideB1); |
46 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideB1Copy = ", strideB1Copy, 3lu, 3lu); |
47 |
|
|
|
48 |
✓ |
2 |
PStride strideB1CopyEq; |
49 |
✓ |
1 |
strideB1CopyEq = strideB1; |
50 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideB1CopyEq = ", strideB1CopyEq, 3lu, 3lu); |
51 |
|
|
|
52 |
✓ |
1 |
dimB.push_back(4lu); |
53 |
✓ |
2 |
PStride strideB2(dimB); |
54 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideB2 = ", strideB2, 12lu, 12lu); |
55 |
|
|
|
56 |
✓ |
2 |
PStride strideB2Copy(strideB2); |
57 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideB2Copy = ", strideB2Copy, 12lu, 12lu); |
58 |
|
|
|
59 |
✓ |
2 |
PStride strideB2CopyEq; |
60 |
✓ |
1 |
strideB2CopyEq = strideB2; |
61 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideB2CopyEq = ", strideB2CopyEq, 12lu, 12lu); |
62 |
|
|
|
63 |
|
2 |
PVecSize paddingC; |
64 |
✓ |
1 |
paddingC.push_back(2lu); |
65 |
✓ |
1 |
paddingC.push_back(1lu); |
66 |
✓ |
2 |
PStride strideC(dimB, paddingC); |
67 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideC = ", strideC, 25lu, 12lu); |
68 |
|
|
|
69 |
✓ |
2 |
PStride strideCCopy(strideC); |
70 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideCCopy = ", strideCCopy, 25lu, 12lu); |
71 |
|
|
|
72 |
✓ |
2 |
PStride strideCCopyEq; |
73 |
✓ |
1 |
strideCCopyEq = strideC; |
74 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideCCopyEq = ", strideCCopyEq, 25lu, 12lu); |
75 |
|
|
|
76 |
|
2 |
PVecSize dimD; |
77 |
✓ |
1 |
dimD.push_back(5lu); |
78 |
|
2 |
PVecSize paddingD; |
79 |
✓ |
1 |
paddingD.push_back(3lu); |
80 |
✓ |
2 |
PStride strideD(dimD, paddingD); |
81 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideD = ", strideD, 8lu, 5lu); |
82 |
|
|
|
83 |
✓ |
2 |
PStride strideDCopy(strideD); |
84 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideDCopy = ", strideDCopy, 8lu, 5lu); |
85 |
|
|
|
86 |
✓ |
2 |
PStride strideDCopyEq; |
87 |
✓ |
1 |
strideDCopyEq = strideD; |
88 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideDCopyEq = ", strideDCopyEq, 8lu, 5lu); |
89 |
|
|
|
90 |
|
2 |
PVecSize positionE; |
91 |
✓ |
1 |
positionE.push_back(2lu); |
92 |
|
|
|
93 |
✓ |
2 |
PStride strideE(dimD, paddingD, positionE); |
94 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideE = ", strideE, 8lu, 5lu); |
95 |
|
|
|
96 |
✓ |
2 |
PStride strideECopy(strideE); |
97 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideECopy = ", strideECopy, 8lu, 5lu); |
98 |
|
|
|
99 |
✓ |
1 |
PStride strideECopyEq; |
100 |
✓ |
1 |
strideECopyEq = strideE; |
101 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideECopyEq = ", strideECopyEq, 8lu, 5lu); |
102 |
|
|
|
103 |
✓✓✓ |
1 |
std::cout << "testPStride : b = " << b << std::endl; |
104 |
|
2 |
return b; |
105 |
|
|
} |
106 |
|
|
|
107 |
|
|
///Test the PStride |
108 |
|
|
/** @return true on success, false otherwise |
109 |
|
|
*/ |
110 |
|
1 |
bool testPStridePadding(){ |
111 |
✓✓ |
1 |
std::cout << "============== testPStridePadding ===============" << std::endl; |
112 |
|
1 |
bool b(true); |
113 |
|
2 |
PVecSize paddingA; |
114 |
✓ |
1 |
paddingA.push_back(3lu); |
115 |
✓ |
2 |
PStride strideA; |
116 |
✓ |
1 |
strideA.setVecPadding(paddingA); |
117 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideA = ", strideA, 3lu, 0lu); |
118 |
✓ |
1 |
b &= strideA.getVecPadding().size() == 1lu; |
119 |
✓ |
1 |
b &= strideA.getVecPosition().size() == 0lu; |
120 |
✓ |
1 |
b &= strideA.getVecDimension().size() == 0lu; |
121 |
✓ |
1 |
b &= strideA.getVecFullSize().size() == 0lu; |
122 |
✓ |
1 |
b &= strideA.getNbDimension() == 0lu; //Vector of dimension is not set |
123 |
|
|
|
124 |
|
2 |
PVecSize dimB; |
125 |
✓ |
1 |
dimB.push_back(3lu); |
126 |
✓ |
1 |
PStride strideB; |
127 |
✓ |
1 |
strideB.setVecDimension(dimB); |
128 |
✓ |
1 |
strideB.setVecPosition(dimB); |
129 |
✓ |
1 |
strideB.setNbVecNeighbour(1lu); |
130 |
✓ |
1 |
b &= strideB.getNbVecNeighbour() == 1lu; |
131 |
✓ |
1 |
b &= strideB.getVecDimension().size() == 1lu; |
132 |
|
|
|
133 |
✓✓ |
1 |
b &= checkAndPrintPStride("strideB = ", strideB, 3lu, 3lu); |
134 |
|
|
|
135 |
✓✓✓ |
1 |
std::cout << "testPStridePadding : b = " << b << std::endl; |
136 |
|
2 |
return b; |
137 |
|
|
} |
138 |
|
|
|
139 |
|
1 |
int main(int argc, char** argv){ |
140 |
|
1 |
bool b(testPStride()); |
141 |
|
1 |
b &= testPStridePadding(); |
142 |
|
1 |
return b - 1; |
143 |
|
|
} |
144 |
|
|
|
145 |
|
|
|