diff --git a/cpp/src/arrow/util/decimal_test.cc b/cpp/src/arrow/util/decimal_test.cc index 6376a9545a0f8..0a8b7a09730bf 100644 --- a/cpp/src/arrow/util/decimal_test.cc +++ b/cpp/src/arrow/util/decimal_test.cc @@ -1046,42 +1046,51 @@ using ToDoubleTestParam = ToRealTestParam; template void CheckDecimalToReal(const std::string& decimal_value, int32_t scale, Real expected) { Decimal dec(decimal_value); - ASSERT_EQ(dec.template ToReal(scale), expected) - << "Decimal value: " << decimal_value << " Scale: " << scale; + Real actual = dec.template ToReal(scale); + ASSERT_EQ(actual, expected) << "Decimal value: " << decimal_value + << ", scale: " << scale << ", expected: " << expected + << ", actual: " << actual; } template void CheckDecimalToRealWithinOneULP(const std::string& decimal_value, int32_t scale, Real expected) { Decimal dec(decimal_value); - auto result = dec.template ToReal(scale); - ASSERT_TRUE(result == expected || result == std::nextafter(expected, expected + 1) || - result == std::nextafter(expected, expected - 1)) - << "Decimal value: " << decimal_value << " Scale: " << scale; + Real actual = dec.template ToReal(scale); + ASSERT_TRUE(actual == expected || actual == std::nextafter(expected, expected + 1) || + actual == std::nextafter(expected, expected - 1)) + << "Decimal value: " << decimal_value << ", scale: " << scale + << ", expected: " << expected << ", actual: " << actual; } template void CheckDecimalToRealWithinEpsilon(const std::string& decimal_value, int32_t scale, Real epsilon, Real expected) { Decimal dec(decimal_value); - ASSERT_TRUE(std::abs(dec.template ToReal(scale) - expected) <= epsilon) - << "Decimal value: " << decimal_value << " Scale: " << scale; + Real actual = dec.template ToReal(scale); + ASSERT_LE(std::abs(actual - expected), epsilon) + << "Decimal value: " << decimal_value << ", scale: " << scale + << ", expected: " << expected << ", actual: " << actual; } template void CheckDecimalToRealApprox(const std::string& decimal_value, int32_t scale, float expected) { Decimal dec(decimal_value); - ASSERT_FLOAT_EQ(dec.template ToReal(scale), expected) - << "Decimal value: " << decimal_value << " Scale: " << scale; + float actual = dec.template ToReal(scale); + ASSERT_FLOAT_EQ(actual, expected) + << "Decimal value: " << decimal_value << ", scale: " << scale + << ", expected: " << expected << ", actual: " << actual; } template void CheckDecimalToRealApprox(const std::string& decimal_value, int32_t scale, double expected) { Decimal dec(decimal_value); - ASSERT_DOUBLE_EQ(dec.template ToReal(scale), expected) - << "Decimal value: " << decimal_value << " Scale: " << scale; + double actual = dec.template ToReal(scale); + ASSERT_DOUBLE_EQ(actual, expected) + << "Decimal value: " << decimal_value << ", scale: " << scale + << ", expected: " << expected << ", actual: " << actual; } // Common tests for Decimal128::ToReal and Decimal256::ToReal