Index: base/numerics/safe_numerics_unittest.cc |
diff --git a/base/numerics/safe_numerics_unittest.cc b/base/numerics/safe_numerics_unittest.cc |
index c7098527f8a9b694a234ab323460efe4c4c5f352..3652ac54252aa70c1bfc6557184f2051dd8853ff 100644 |
--- a/base/numerics/safe_numerics_unittest.cc |
+++ b/base/numerics/safe_numerics_unittest.cc |
@@ -66,7 +66,7 @@ Dst GetMaxConvertibleToFloat() { |
#define TEST_EXPECTED_VALIDITY(expected, actual) \ |
EXPECT_EQ(expected, CheckedNumeric<Dst>(actual).IsValid()) \ |
<< "Result test: Value " << +(actual).ValueUnsafe() << " as " << dst \ |
- << " on line " << line; |
+ << " on line " << line |
#define TEST_EXPECTED_SUCCESS(actual) TEST_EXPECTED_VALIDITY(true, actual) |
#define TEST_EXPECTED_FAILURE(actual) TEST_EXPECTED_VALIDITY(false, actual) |
@@ -75,7 +75,7 @@ Dst GetMaxConvertibleToFloat() { |
EXPECT_EQ(static_cast<Dst>(expected), \ |
CheckedNumeric<Dst>(actual).ValueOrDie()) \ |
<< "Result test: Value " << +((actual).ValueUnsafe()) << " as " << dst \ |
- << " on line " << line; |
+ << " on line " << line |
// Signed integer arithmetic. |
template <typename Dst> |
@@ -106,6 +106,7 @@ static void TestSpecializedArithmetic( |
TEST_EXPECTED_FAILURE(CheckedNumeric<Dst>(DstLimits::min()) / -1); |
TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(-1) / 2); |
+ TEST_EXPECTED_FAILURE(CheckedNumeric<Dst>(DstLimits::min()) * -1); |
// Modulus is legal only for integers. |
TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>() % 1); |
@@ -256,6 +257,8 @@ static void TestArithmetic(const char* dst, int line) { |
if (numeric_limits<Dst>::is_signed) { |
TEST_EXPECTED_VALUE(-1, (CheckedNumeric<Dst>() - 1)); |
TEST_EXPECTED_VALUE(-2, (CheckedNumeric<Dst>(-1) - 1)); |
+ } else { |
+ TEST_EXPECTED_FAILURE(CheckedNumeric<Dst>(DstLimits::max()) - -1); |
} |
// Generic multiplication. |
@@ -266,6 +269,10 @@ static void TestArithmetic(const char* dst, int line) { |
TEST_EXPECTED_VALUE(0, (CheckedNumeric<Dst>(-1) * 0)); |
TEST_EXPECTED_VALUE(0, (CheckedNumeric<Dst>(0) * -1)); |
TEST_EXPECTED_VALUE(-2, (CheckedNumeric<Dst>(-1) * 2)); |
+ } else { |
+ TEST_EXPECTED_FAILURE(CheckedNumeric<Dst>(DstLimits::max()) * -2); |
+ TEST_EXPECTED_FAILURE(CheckedNumeric<Dst>(DstLimits::max()) * |
+ CheckedNumeric<uintmax_t>(-2)); |
} |
TEST_EXPECTED_FAILURE(CheckedNumeric<Dst>(DstLimits::max()) * |
DstLimits::max()); |
@@ -320,7 +327,7 @@ struct TestNumericConversion {}; |
#define TEST_EXPECTED_RANGE(expected, actual) \ |
EXPECT_EQ(expected, base::internal::DstRangeRelationToSrcRange<Dst>(actual)) \ |
<< "Conversion test: " << src << " value " << actual << " to " << dst \ |
- << " on line " << line; |
+ << " on line " << line |
template <typename Dst, typename Src> |
struct TestNumericConversion<Dst, Src, SIGN_PRESERVING_VALUE_PRESERVING> { |