@@ -22,36 +22,20 @@ std::vector<uint64_t> getValidAlignments() {
22
22
return Out;
23
23
}
24
24
25
- // We use a subset of valid alignments for DEATH_TESTs as they are particularly
26
- // slow.
27
- std::vector<uint64_t > getValidAlignmentsForDeathTest () {
28
- return {1 , 1ULL << 31 , 1ULL << 63 };
29
- }
30
-
31
- std::vector<uint64_t > getNonPowerOfTwo () { return {3 , 10 , 15 }; }
25
+ TEST (AlignmentTest, AlignDefaultCTor) { EXPECT_EQ (Align ().value (), 1ULL ); }
32
26
33
- TEST (Alignment, AlignDefaultCTor) { EXPECT_EQ (Align ().value (), 1ULL ); }
34
-
35
- TEST (Alignment, MaybeAlignDefaultCTor) {
27
+ TEST (AlignmentTest, MaybeAlignDefaultCTor) {
36
28
EXPECT_FALSE (MaybeAlign ().hasValue ());
37
29
}
38
30
39
- TEST (Alignment , ValidCTors) {
31
+ TEST (AlignmentTest , ValidCTors) {
40
32
for (size_t Value : getValidAlignments ()) {
41
33
EXPECT_EQ (Align (Value).value (), Value);
42
34
EXPECT_EQ ((*MaybeAlign (Value)).value (), Value);
43
35
}
44
36
}
45
37
46
- TEST (Alignment, InvalidCTors) {
47
- EXPECT_DEATH ((Align (0 )), " Value must not be 0" );
48
- for (size_t Value : getNonPowerOfTwo ()) {
49
- EXPECT_DEATH ((Align (Value)), " Alignment is not a power of 2" );
50
- EXPECT_DEATH ((MaybeAlign (Value)), " Alignment is not 0 or a power of 2" );
51
- }
52
- }
53
-
54
- TEST (Alignment, CheckMaybeAlignHasValue) {
38
+ TEST (AlignmentTest, CheckMaybeAlignHasValue) {
55
39
EXPECT_TRUE (MaybeAlign (1 ));
56
40
EXPECT_TRUE (MaybeAlign (1 ).hasValue ());
57
41
EXPECT_FALSE (MaybeAlign (0 ));
@@ -60,27 +44,17 @@ TEST(Alignment, CheckMaybeAlignHasValue) {
60
44
EXPECT_FALSE (MaybeAlign ().hasValue ());
61
45
}
62
46
63
- TEST (Alignment, CantConvertUnsetMaybe) {
64
- EXPECT_DEATH ((MaybeAlign (0 ).getValue ()), " .*" );
65
- }
66
-
67
- TEST (Alignment, Division) {
47
+ TEST (AlignmentTest, Division) {
68
48
for (size_t Value : getValidAlignments ()) {
69
- if (Value == 1 ) {
70
- EXPECT_DEATH (Align (Value) / 2 , " Can't halve byte alignment" );
71
- EXPECT_DEATH (MaybeAlign (Value) / 2 , " Can't halve byte alignment" );
72
- } else {
49
+ if (Value > 1 ) {
73
50
EXPECT_EQ (Align (Value) / 2 , Value / 2 );
74
51
EXPECT_EQ (MaybeAlign (Value) / 2 , Value / 2 );
75
52
}
76
53
}
77
54
EXPECT_EQ (MaybeAlign (0 ) / 2 , MaybeAlign (0 ));
78
-
79
- EXPECT_DEATH (Align (8 ) / 0 , " Divisor must be positive and a power of 2" );
80
- EXPECT_DEATH (Align (8 ) / 3 , " Divisor must be positive and a power of 2" );
81
55
}
82
56
83
- TEST (Alignment , AlignTo) {
57
+ TEST (AlignmentTest , AlignTo) {
84
58
struct {
85
59
uint64_t alignment;
86
60
uint64_t offset;
@@ -114,15 +88,14 @@ TEST(Alignment, AlignTo) {
114
88
}
115
89
}
116
90
117
- TEST (Alignment , Log2) {
91
+ TEST (AlignmentTest , Log2) {
118
92
for (size_t Value : getValidAlignments ()) {
119
93
EXPECT_EQ (Log2 (Align (Value)), Log2_64 (Value));
120
94
EXPECT_EQ (Log2 (MaybeAlign (Value)), Log2_64 (Value));
121
95
}
122
- EXPECT_DEATH (Log2 (MaybeAlign (0 )), " .* should be defined" );
123
96
}
124
97
125
- TEST (Alignment , MinAlign) {
98
+ TEST (AlignmentTest , MinAlign) {
126
99
struct {
127
100
uint64_t A;
128
101
uint64_t B;
@@ -148,7 +121,7 @@ TEST(Alignment, MinAlign) {
148
121
}
149
122
}
150
123
151
- TEST (Alignment , Encode_Decode) {
124
+ TEST (AlignmentTest , Encode_Decode) {
152
125
for (size_t Value : getValidAlignments ()) {
153
126
{
154
127
Align Actual (Value);
@@ -166,7 +139,7 @@ TEST(Alignment, Encode_Decode) {
166
139
EXPECT_EQ (Expected, Actual);
167
140
}
168
141
169
- TEST (Alignment , isAligned) {
142
+ TEST (AlignmentTest , isAligned) {
170
143
struct {
171
144
uint64_t alignment;
172
145
uint64_t offset;
@@ -187,7 +160,7 @@ TEST(Alignment, isAligned) {
187
160
}
188
161
}
189
162
190
- TEST (Alignment , AlignComparisons) {
163
+ TEST (AlignmentTest , AlignComparisons) {
191
164
std::vector<uint64_t > ValidAlignments = getValidAlignments ();
192
165
std::sort (ValidAlignments.begin (), ValidAlignments.end ());
193
166
for (size_t I = 1 ; I < ValidAlignments.size (); ++I) {
@@ -240,14 +213,49 @@ TEST(Alignment, AlignComparisons) {
240
213
}
241
214
}
242
215
243
- TEST (Alignment , AssumeAligned) {
216
+ TEST (AlignmentTest , AssumeAligned) {
244
217
EXPECT_EQ (assumeAligned (0 ), Align (1 ));
245
218
EXPECT_EQ (assumeAligned (0 ), Align ());
246
219
EXPECT_EQ (assumeAligned (1 ), Align (1 ));
247
220
EXPECT_EQ (assumeAligned (1 ), Align ());
248
221
}
249
222
250
- TEST (Alignment, ComparisonsWithZero) {
223
+ // Death tests reply on assert which is disabled in release mode.
224
+ #ifndef NDEBUG
225
+
226
+ // We use a subset of valid alignments for DEATH_TESTs as they are particularly
227
+ // slow.
228
+ std::vector<uint64_t > getValidAlignmentsForDeathTest () {
229
+ return {1 , 1ULL << 31 , 1ULL << 63 };
230
+ }
231
+
232
+ std::vector<uint64_t > getNonPowerOfTwo () { return {3 , 10 , 15 }; }
233
+
234
+ TEST (AlignmentDeathTest, Log2) {
235
+ EXPECT_DEATH (Log2 (MaybeAlign (0 )), " .* should be defined" );
236
+ }
237
+
238
+ TEST (AlignmentDeathTest, CantConvertUnsetMaybe) {
239
+ EXPECT_DEATH ((MaybeAlign (0 ).getValue ()), " .*" );
240
+ }
241
+
242
+ TEST (AlignmentDeathTest, Division) {
243
+ EXPECT_DEATH (Align (1 ) / 2 , " Can't halve byte alignment" );
244
+ EXPECT_DEATH (MaybeAlign (1 ) / 2 , " Can't halve byte alignment" );
245
+
246
+ EXPECT_DEATH (Align (8 ) / 0 , " Divisor must be positive and a power of 2" );
247
+ EXPECT_DEATH (Align (8 ) / 3 , " Divisor must be positive and a power of 2" );
248
+ }
249
+
250
+ TEST (AlignmentDeathTest, InvalidCTors) {
251
+ EXPECT_DEATH ((Align (0 )), " Value must not be 0" );
252
+ for (size_t Value : getNonPowerOfTwo ()) {
253
+ EXPECT_DEATH ((Align (Value)), " Alignment is not a power of 2" );
254
+ EXPECT_DEATH ((MaybeAlign (Value)), " Alignment is not 0 or a power of 2" );
255
+ }
256
+ }
257
+
258
+ TEST (AlignmentDeathTest, ComparisonsWithZero) {
251
259
for (size_t Value : getValidAlignmentsForDeathTest ()) {
252
260
EXPECT_DEATH ((void )(Align (Value) == 0 ), " .* should be defined" );
253
261
EXPECT_DEATH ((void )(Align (Value) != 0 ), " .* should be defined" );
@@ -258,7 +266,7 @@ TEST(Alignment, ComparisonsWithZero) {
258
266
}
259
267
}
260
268
261
- TEST (Alignment , CompareMaybeAlignToZero) {
269
+ TEST (AlignmentDeathTest , CompareMaybeAlignToZero) {
262
270
for (size_t Value : getValidAlignmentsForDeathTest ()) {
263
271
// MaybeAlign is allowed to be == or != 0
264
272
(void )(MaybeAlign (Value) == 0 );
@@ -270,7 +278,7 @@ TEST(Alignment, CompareMaybeAlignToZero) {
270
278
}
271
279
}
272
280
273
- TEST (Alignment , CompareAlignToUndefMaybeAlign) {
281
+ TEST (AlignmentDeathTest , CompareAlignToUndefMaybeAlign) {
274
282
for (size_t Value : getValidAlignmentsForDeathTest ()) {
275
283
EXPECT_DEATH ((void )(Align (Value) == MaybeAlign (0 )), " .* should be defined" );
276
284
EXPECT_DEATH ((void )(Align (Value) != MaybeAlign (0 )), " .* should be defined" );
@@ -281,4 +289,6 @@ TEST(Alignment, CompareAlignToUndefMaybeAlign) {
281
289
}
282
290
}
283
291
292
+ #endif // NDEBUG
293
+
284
294
} // end anonymous namespace
0 commit comments