|
14 | 14 |
|
15 | 15 | #include "test_macros.h"
|
16 | 16 |
|
17 |
| -template<class T> |
18 |
| -struct correct_size_int |
19 |
| -{ |
20 |
| - typedef typename std::conditional<sizeof(T) < sizeof(int), int, T>::type type; |
| 17 | +template <class T> |
| 18 | +struct correct_size_int { |
| 19 | + typedef typename std::conditional<sizeof(T) < sizeof(int), int, T>::type type; |
21 | 20 | };
|
22 | 21 |
|
23 | 22 | template <class Source, class Result>
|
24 |
| -void test_abs() |
25 |
| -{ |
26 |
| - Source neg_val = -5; |
27 |
| - Source pos_val = 5; |
28 |
| - Result res = 5; |
| 23 | +void test_abs() { |
| 24 | + Source neg_val = -5; |
| 25 | + Source pos_val = 5; |
| 26 | + Result res = 5; |
29 | 27 |
|
30 |
| - ASSERT_SAME_TYPE(decltype(std::abs(neg_val)), Result); |
| 28 | + ASSERT_SAME_TYPE(decltype(std::abs(neg_val)), Result); |
31 | 29 |
|
32 |
| - assert(std::abs(neg_val) == res); |
33 |
| - assert(std::abs(pos_val) == res); |
| 30 | + assert(std::abs(neg_val) == res); |
| 31 | + assert(std::abs(pos_val) == res); |
34 | 32 | }
|
35 | 33 |
|
36 |
| -void test_big() |
37 |
| -{ |
38 |
| - long long int big_value = std::numeric_limits<long long int>::max(); // a value too big for ints to store |
39 |
| - long long int negative_big_value = -big_value; |
40 |
| - assert(std::abs(negative_big_value) == big_value); // make sure it doesn't get casted to a smaller type |
| 34 | +void test_big() { |
| 35 | + long long int big_value = std::numeric_limits<long long int>::max(); // a value too big for ints to store |
| 36 | + long long int negative_big_value = -big_value; |
| 37 | + assert(std::abs(negative_big_value) == big_value); // make sure it doesn't get casted to a smaller type |
41 | 38 | }
|
42 | 39 |
|
43 | 40 | // The following is helpful to keep in mind:
|
44 | 41 | // 1byte == char <= short <= int <= long <= long long
|
45 | 42 |
|
46 |
| -int main(int, char**) |
47 |
| -{ |
48 |
| - // On some systems char is unsigned. |
49 |
| - // If that is the case, we should just test signed char twice. |
50 |
| - typedef std::conditional< |
51 |
| - std::is_signed<char>::value, char, signed char |
52 |
| - >::type SignedChar; |
| 43 | +int main(int, char**) { |
| 44 | + // On some systems char is unsigned. |
| 45 | + // If that is the case, we should just test signed char twice. |
| 46 | + typedef std::conditional< std::is_signed<char>::value, char, signed char >::type SignedChar; |
53 | 47 |
|
54 |
| - // All types less than or equal to and not greater than int are promoted to int. |
55 |
| - test_abs<short int, int>(); |
56 |
| - test_abs<SignedChar, int>(); |
57 |
| - test_abs<signed char, int>(); |
| 48 | + // All types less than or equal to and not greater than int are promoted to int. |
| 49 | + test_abs<short int, int>(); |
| 50 | + test_abs<SignedChar, int>(); |
| 51 | + test_abs<signed char, int>(); |
58 | 52 |
|
59 |
| - // These three calls have specific overloads: |
60 |
| - test_abs<int, int>(); |
61 |
| - test_abs<long int, long int>(); |
62 |
| - test_abs<long long int, long long int>(); |
| 53 | + // These three calls have specific overloads: |
| 54 | + test_abs<int, int>(); |
| 55 | + test_abs<long int, long int>(); |
| 56 | + test_abs<long long int, long long int>(); |
63 | 57 |
|
64 |
| - // Here there is no guarantee that int is larger than int8_t so we |
65 |
| - // use a helper type trait to conditional test against int. |
66 |
| - test_abs<std::int8_t, correct_size_int<std::int8_t>::type>(); |
67 |
| - test_abs<std::int16_t, correct_size_int<std::int16_t>::type>(); |
68 |
| - test_abs<std::int32_t, correct_size_int<std::int32_t>::type>(); |
69 |
| - test_abs<std::int64_t, correct_size_int<std::int64_t>::type>(); |
| 58 | + // Here there is no guarantee that int is larger than int8_t so we |
| 59 | + // use a helper type trait to conditional test against int. |
| 60 | + test_abs<std::int8_t, correct_size_int<std::int8_t>::type>(); |
| 61 | + test_abs<std::int16_t, correct_size_int<std::int16_t>::type>(); |
| 62 | + test_abs<std::int32_t, correct_size_int<std::int32_t>::type>(); |
| 63 | + test_abs<std::int64_t, correct_size_int<std::int64_t>::type>(); |
70 | 64 |
|
71 |
| - test_abs<long double, long double>(); |
72 |
| - test_abs<double, double>(); |
73 |
| - test_abs<float, float>(); |
| 65 | + test_abs<long double, long double>(); |
| 66 | + test_abs<double, double>(); |
| 67 | + test_abs<float, float>(); |
74 | 68 |
|
75 |
| - test_big(); |
| 69 | + test_big(); |
76 | 70 |
|
77 |
| - return 0; |
| 71 | + return 0; |
78 | 72 | }
|
0 commit comments