Format floats like doubles when printing - but add ‘f’ suffix (a lá #291)
diff --git a/include/internal/catch_tostring.h b/include/internal/catch_tostring.h
index 7268d15..4b46883 100644
--- a/include/internal/catch_tostring.h
+++ b/include/internal/catch_tostring.h
@@ -158,6 +158,7 @@
std::string toString( unsigned long value );
std::string toString( unsigned int value );
std::string toString( const double value );
+std::string toString( const float value );
std::string toString( bool value );
std::string toString( char value );
std::string toString( signed char value );
diff --git a/include/internal/catch_tostring.hpp b/include/internal/catch_tostring.hpp
index b957dd5..825ceb5 100644
--- a/include/internal/catch_tostring.hpp
+++ b/include/internal/catch_tostring.hpp
@@ -103,9 +103,10 @@
return toString( static_cast<unsigned long>( value ) );
}
-std::string toString( const double value ) {
+template<typename T>
+std::string fpToString( T value, int precision ) {
std::ostringstream oss;
- oss << std::setprecision( 10 )
+ oss << std::setprecision( precision )
<< std::fixed
<< value;
std::string d = oss.str();
@@ -118,6 +119,13 @@
return d;
}
+std::string toString( const double value ) {
+ return fpToString( value, 10 );
+}
+std::string toString( const float value ) {
+ return fpToString( value, 5 ) + "f";
+}
+
std::string toString( bool value ) {
return value ? "true" : "false";
}
diff --git a/projects/SelfTest/Baselines/console.std.approved.txt b/projects/SelfTest/Baselines/console.std.approved.txt
index f47ee3d..58a4c7e 100644
--- a/projects/SelfTest/Baselines/console.std.approved.txt
+++ b/projects/SelfTest/Baselines/console.std.approved.txt
@@ -49,22 +49,22 @@
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one == Approx( 9.11f ) )
with expansion:
- 9.1 == Approx( 9.1099996567 )
+ 9.1f == Approx( 9.1099996567 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one == Approx( 9.0f ) )
with expansion:
- 9.1 == Approx( 9.0 )
+ 9.1f == Approx( 9.0 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one == Approx( 1 ) )
with expansion:
- 9.1 == Approx( 1.0 )
+ 9.1f == Approx( 1.0 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one == Approx( 0 ) )
with expansion:
- 9.1 == Approx( 0.0 )
+ 9.1f == Approx( 0.0 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.double_pi == Approx( 3.1415 ) )
@@ -110,7 +110,7 @@
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one != Approx( 9.1f ) )
with expansion:
- 9.1 != Approx( 9.1000003815 )
+ 9.1f != Approx( 9.1000003815 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.double_pi != Approx( 3.1415926535 ) )
@@ -176,17 +176,17 @@
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one < 9 )
with expansion:
- 9.1 < 9
+ 9.1f < 9
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one > 10 )
with expansion:
- 9.1 > 10
+ 9.1f > 10
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one > 9.2 )
with expansion:
- 9.1 > 9.2
+ 9.1f > 9.2
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.str_hello > "hello" )
diff --git a/projects/SelfTest/Baselines/console.sw.approved.txt b/projects/SelfTest/Baselines/console.sw.approved.txt
index 1b38d3d..ae011b0 100644
--- a/projects/SelfTest/Baselines/console.sw.approved.txt
+++ b/projects/SelfTest/Baselines/console.sw.approved.txt
@@ -73,13 +73,13 @@
PASSED:
REQUIRE( 1.23f == Approx( 1.23f ) )
with expansion:
- 1.23 == Approx( 1.2300000191 )
+ 1.23f == Approx( 1.2300000191 )
ApproxTests.cpp:<line number>:
PASSED:
REQUIRE( 0.0f == Approx( 0.0f ) )
with expansion:
- 0 == Approx( 0.0 )
+ 0.0f == Approx( 0.0 )
-------------------------------------------------------------------------------
Approximate comparisons with ints
@@ -109,7 +109,7 @@
PASSED:
REQUIRE( 1.0f == Approx( 1 ) )
with expansion:
- 1 == Approx( 1.0 )
+ 1.0f == Approx( 1.0 )
ApproxTests.cpp:<line number>:
PASSED:
@@ -127,7 +127,7 @@
PASSED:
REQUIRE( 1.234f == Approx( dMedium ) )
with expansion:
- 1.234 == Approx( 1.234 )
+ 1.234f == Approx( 1.234 )
ApproxTests.cpp:<line number>:
PASSED:
@@ -269,7 +269,7 @@
PASSED:
REQUIRE( data.float_nine_point_one == Approx( 9.1f ) )
with expansion:
- 9.1 == Approx( 9.1000003815 )
+ 9.1f == Approx( 9.1000003815 )
ConditionTests.cpp:<line number>:
PASSED:
@@ -325,22 +325,22 @@
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one == Approx( 9.11f ) )
with expansion:
- 9.1 == Approx( 9.1099996567 )
+ 9.1f == Approx( 9.1099996567 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one == Approx( 9.0f ) )
with expansion:
- 9.1 == Approx( 9.0 )
+ 9.1f == Approx( 9.0 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one == Approx( 1 ) )
with expansion:
- 9.1 == Approx( 1.0 )
+ 9.1f == Approx( 1.0 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one == Approx( 0 ) )
with expansion:
- 9.1 == Approx( 0.0 )
+ 9.1f == Approx( 0.0 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.double_pi == Approx( 3.1415 ) )
@@ -394,25 +394,25 @@
PASSED:
REQUIRE( data.float_nine_point_one != Approx( 9.11f ) )
with expansion:
- 9.1 != Approx( 9.1099996567 )
+ 9.1f != Approx( 9.1099996567 )
ConditionTests.cpp:<line number>:
PASSED:
REQUIRE( data.float_nine_point_one != Approx( 9.0f ) )
with expansion:
- 9.1 != Approx( 9.0 )
+ 9.1f != Approx( 9.0 )
ConditionTests.cpp:<line number>:
PASSED:
REQUIRE( data.float_nine_point_one != Approx( 1 ) )
with expansion:
- 9.1 != Approx( 1.0 )
+ 9.1f != Approx( 1.0 )
ConditionTests.cpp:<line number>:
PASSED:
REQUIRE( data.float_nine_point_one != Approx( 0 ) )
with expansion:
- 9.1 != Approx( 0.0 )
+ 9.1f != Approx( 0.0 )
ConditionTests.cpp:<line number>:
PASSED:
@@ -458,7 +458,7 @@
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one != Approx( 9.1f ) )
with expansion:
- 9.1 != Approx( 9.1000003815 )
+ 9.1f != Approx( 9.1000003815 )
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.double_pi != Approx( 3.1415926535 ) )
@@ -533,19 +533,19 @@
PASSED:
REQUIRE( data.float_nine_point_one > 9 )
with expansion:
- 9.1 > 9
+ 9.1f > 9
ConditionTests.cpp:<line number>:
PASSED:
REQUIRE( data.float_nine_point_one < 10 )
with expansion:
- 9.1 < 10
+ 9.1f < 10
ConditionTests.cpp:<line number>:
PASSED:
REQUIRE( data.float_nine_point_one < 9.2 )
with expansion:
- 9.1 < 9.2
+ 9.1f < 9.2
ConditionTests.cpp:<line number>:
PASSED:
@@ -632,17 +632,17 @@
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one < 9 )
with expansion:
- 9.1 < 9
+ 9.1f < 9
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one > 10 )
with expansion:
- 9.1 > 10
+ 9.1f > 10
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one > 9.2 )
with expansion:
- 9.1 > 9.2
+ 9.1f > 9.2
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.str_hello > "hello" )
diff --git a/projects/SelfTest/Baselines/console.swa4.approved.txt b/projects/SelfTest/Baselines/console.swa4.approved.txt
index 418af3e..3432b80 100644
--- a/projects/SelfTest/Baselines/console.swa4.approved.txt
+++ b/projects/SelfTest/Baselines/console.swa4.approved.txt
@@ -73,13 +73,13 @@
PASSED:
REQUIRE( 1.23f == Approx( 1.23f ) )
with expansion:
- 1.23 == Approx( 1.2300000191 )
+ 1.23f == Approx( 1.2300000191 )
ApproxTests.cpp:<line number>:
PASSED:
REQUIRE( 0.0f == Approx( 0.0f ) )
with expansion:
- 0 == Approx( 0.0 )
+ 0.0f == Approx( 0.0 )
-------------------------------------------------------------------------------
Approximate comparisons with ints
@@ -109,7 +109,7 @@
PASSED:
REQUIRE( 1.0f == Approx( 1 ) )
with expansion:
- 1 == Approx( 1.0 )
+ 1.0f == Approx( 1.0 )
ApproxTests.cpp:<line number>:
PASSED:
@@ -127,7 +127,7 @@
PASSED:
REQUIRE( 1.234f == Approx( dMedium ) )
with expansion:
- 1.234 == Approx( 1.234 )
+ 1.234f == Approx( 1.234 )
ApproxTests.cpp:<line number>:
PASSED:
@@ -269,7 +269,7 @@
PASSED:
REQUIRE( data.float_nine_point_one == Approx( 9.1f ) )
with expansion:
- 9.1 == Approx( 9.1000003815 )
+ 9.1f == Approx( 9.1000003815 )
ConditionTests.cpp:<line number>:
PASSED:
@@ -339,25 +339,25 @@
PASSED:
REQUIRE( data.float_nine_point_one != Approx( 9.11f ) )
with expansion:
- 9.1 != Approx( 9.1099996567 )
+ 9.1f != Approx( 9.1099996567 )
ConditionTests.cpp:<line number>:
PASSED:
REQUIRE( data.float_nine_point_one != Approx( 9.0f ) )
with expansion:
- 9.1 != Approx( 9.0 )
+ 9.1f != Approx( 9.0 )
ConditionTests.cpp:<line number>:
PASSED:
REQUIRE( data.float_nine_point_one != Approx( 1 ) )
with expansion:
- 9.1 != Approx( 1.0 )
+ 9.1f != Approx( 1.0 )
ConditionTests.cpp:<line number>:
PASSED:
REQUIRE( data.float_nine_point_one != Approx( 0 ) )
with expansion:
- 9.1 != Approx( 0.0 )
+ 9.1f != Approx( 0.0 )
ConditionTests.cpp:<line number>:
PASSED:
@@ -403,7 +403,7 @@
ConditionTests.cpp:<line number>: FAILED:
CHECK( data.float_nine_point_one != Approx( 9.1f ) )
with expansion:
- 9.1 != Approx( 9.1000003815 )
+ 9.1f != Approx( 9.1000003815 )
===============================================================================
test cases: 11 passed | 3 failed | 1 failed as expected | total: 15
diff --git a/projects/SelfTest/Baselines/junit.sw.approved.txt b/projects/SelfTest/Baselines/junit.sw.approved.txt
index 5ccdb50..b6271d0 100644
--- a/projects/SelfTest/Baselines/junit.sw.approved.txt
+++ b/projects/SelfTest/Baselines/junit.sw.approved.txt
@@ -30,16 +30,16 @@
<failure message="7 == 0" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
- <failure message="9.1 == Approx( 9.1099996567 )" type="CHECK">
+ <failure message="9.1f == Approx( 9.1099996567 )" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
- <failure message="9.1 == Approx( 9.0 )" type="CHECK">
+ <failure message="9.1f == Approx( 9.0 )" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
- <failure message="9.1 == Approx( 1.0 )" type="CHECK">
+ <failure message="9.1f == Approx( 1.0 )" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
- <failure message="9.1 == Approx( 0.0 )" type="CHECK">
+ <failure message="9.1f == Approx( 0.0 )" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
<failure message="3.1415926535 == Approx( 3.1415 )" type="CHECK">
@@ -66,7 +66,7 @@
<failure message="7 != 7" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
- <failure message="9.1 != Approx( 9.1000003815 )" type="CHECK">
+ <failure message="9.1f != Approx( 9.1000003815 )" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
<failure message="3.1415926535 != Approx( 3.1415926535 )" type="CHECK">
@@ -105,13 +105,13 @@
<failure message="7 <= 6" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
- <failure message="9.1 < 9" type="CHECK">
+ <failure message="9.1f < 9" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
- <failure message="9.1 > 10" type="CHECK">
+ <failure message="9.1f > 10" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
- <failure message="9.1 > 9.2" type="CHECK">
+ <failure message="9.1f > 9.2" type="CHECK">
ConditionTests.cpp:<line number>
</failure>
<failure message=""hello" > "hello"" type="CHECK">
diff --git a/projects/SelfTest/Baselines/xml.sw.approved.txt b/projects/SelfTest/Baselines/xml.sw.approved.txt
index 8c84d91..7de2eab 100644
--- a/projects/SelfTest/Baselines/xml.sw.approved.txt
+++ b/projects/SelfTest/Baselines/xml.sw.approved.txt
@@ -76,7 +76,7 @@
1.23f == Approx( 1.23f )
</Original>
<Expanded>
- 1.23 == Approx( 1.2300000191 )
+ 1.23f == Approx( 1.2300000191 )
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
@@ -84,7 +84,7 @@
0.0f == Approx( 0.0f )
</Original>
<Expanded>
- 0 == Approx( 0.0 )
+ 0.0f == Approx( 0.0 )
</Expanded>
</Expression>
<OverallResult success="true"/>
@@ -114,7 +114,7 @@
1.0f == Approx( 1 )
</Original>
<Expanded>
- 1 == Approx( 1.0 )
+ 1.0f == Approx( 1.0 )
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
@@ -138,7 +138,7 @@
1.234f == Approx( dMedium )
</Original>
<Expanded>
- 1.234 == Approx( 1.234 )
+ 1.234f == Approx( 1.234 )
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ApproxTests.cpp" >
@@ -295,7 +295,7 @@
data.float_nine_point_one == Approx( 9.1f )
</Original>
<Expanded>
- 9.1 == Approx( 9.1000003815 )
+ 9.1f == Approx( 9.1000003815 )
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -370,7 +370,7 @@
data.float_nine_point_one == Approx( 9.11f )
</Original>
<Expanded>
- 9.1 == Approx( 9.1099996567 )
+ 9.1f == Approx( 9.1099996567 )
</Expanded>
</Expression>
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -378,7 +378,7 @@
data.float_nine_point_one == Approx( 9.0f )
</Original>
<Expanded>
- 9.1 == Approx( 9.0 )
+ 9.1f == Approx( 9.0 )
</Expanded>
</Expression>
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -386,7 +386,7 @@
data.float_nine_point_one == Approx( 1 )
</Original>
<Expanded>
- 9.1 == Approx( 1.0 )
+ 9.1f == Approx( 1.0 )
</Expanded>
</Expression>
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -394,7 +394,7 @@
data.float_nine_point_one == Approx( 0 )
</Original>
<Expanded>
- 9.1 == Approx( 0.0 )
+ 9.1f == Approx( 0.0 )
</Expanded>
</Expression>
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -469,7 +469,7 @@
data.float_nine_point_one != Approx( 9.11f )
</Original>
<Expanded>
- 9.1 != Approx( 9.1099996567 )
+ 9.1f != Approx( 9.1099996567 )
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -477,7 +477,7 @@
data.float_nine_point_one != Approx( 9.0f )
</Original>
<Expanded>
- 9.1 != Approx( 9.0 )
+ 9.1f != Approx( 9.0 )
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -485,7 +485,7 @@
data.float_nine_point_one != Approx( 1 )
</Original>
<Expanded>
- 9.1 != Approx( 1.0 )
+ 9.1f != Approx( 1.0 )
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -493,7 +493,7 @@
data.float_nine_point_one != Approx( 0 )
</Original>
<Expanded>
- 9.1 != Approx( 0.0 )
+ 9.1f != Approx( 0.0 )
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -552,7 +552,7 @@
data.float_nine_point_one != Approx( 9.1f )
</Original>
<Expanded>
- 9.1 != Approx( 9.1000003815 )
+ 9.1f != Approx( 9.1000003815 )
</Expanded>
</Expression>
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -651,7 +651,7 @@
data.float_nine_point_one > 9
</Original>
<Expanded>
- 9.1 > 9
+ 9.1f > 9
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -659,7 +659,7 @@
data.float_nine_point_one < 10
</Original>
<Expanded>
- 9.1 < 10
+ 9.1f < 10
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -667,7 +667,7 @@
data.float_nine_point_one < 9.2
</Original>
<Expanded>
- 9.1 < 9.2
+ 9.1f < 9.2
</Expanded>
</Expression>
<Expression success="true" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -790,7 +790,7 @@
data.float_nine_point_one < 9
</Original>
<Expanded>
- 9.1 < 9
+ 9.1f < 9
</Expanded>
</Expression>
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -798,7 +798,7 @@
data.float_nine_point_one > 10
</Original>
<Expanded>
- 9.1 > 10
+ 9.1f > 10
</Expanded>
</Expression>
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >
@@ -806,7 +806,7 @@
data.float_nine_point_one > 9.2
</Original>
<Expanded>
- 9.1 > 9.2
+ 9.1f > 9.2
</Expanded>
</Expression>
<Expression success="false" filename="/Users/philnash/Dev/OSS/Catch/projects/SelfTest/ConditionTests.cpp" >