66 * INCLUDE
77 **************************************************************************************/
88
9+ #include < float.h>
10+
911#include < catch.hpp>
1012
1113#include < String.h>
@@ -80,16 +82,40 @@ TEST_CASE ("Testing String(unsigned long, unsigned char base = 10) constructor()
8082
8183TEST_CASE (" Testing String(float, unsigned char decimalPlaces = 2) constructor()" ," [String-Ctor-10]" )
8284{
83- float const val =1 .234f ;
84- arduino::Stringstr (val);
85- REQUIRE (strcmp (str.c_str ()," 1.23" ) ==0 );
85+ WHEN (" String::String (some float value)" )
86+ {
87+ arduino::Stringstr (1 .234f );
88+ REQUIRE (strcmp (str.c_str ()," 1.23" ) ==0 );
89+ }
90+ WHEN (" String::String (FLT_MAX)" )
91+ {
92+ arduino::Stringstr (FLT_MAX);
93+ REQUIRE (strcmp (str.c_str ()," 340282346638528859811704183484516925440.00" ) ==0 );
94+ }
95+ WHEN (" String::String (-FLT_MAX)" )
96+ {
97+ arduino::Stringstr (-FLT_MAX);
98+ REQUIRE (strcmp (str.c_str ()," -340282346638528859811704183484516925440.00" ) ==0 );
99+ }
86100}
87101
88102TEST_CASE (" Testing String(double, unsigned char decimalPlaces = 2) constructor()" ," [String-Ctor-11]" )
89103{
90- double const val =5.678 ;
91- arduino::Stringstr (val);
92- REQUIRE (strcmp (str.c_str ()," 5.68" ) ==0 );
104+ WHEN (" String::String (some double value)" )
105+ {
106+ arduino::Stringstr (5.678 );
107+ REQUIRE (strcmp (str.c_str ()," 5.68" ) ==0 );
108+ }
109+ WHEN (" String::String (DBL_MAX)" )
110+ {
111+ arduino::Stringstr (DBL_MAX);
112+ REQUIRE (strcmp (str.c_str ()," 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.00" ) ==0 );
113+ }
114+ WHEN (" String::String (-DBL_MAX)" )
115+ {
116+ arduino::Stringstr (-DBL_MAX);
117+ REQUIRE (strcmp (str.c_str ()," -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.00" ) ==0 );
118+ }
93119}
94120
95121TEST_CASE (" Testing String(const __FlashStringHelper) constructor() with invalid buffer" ," [String-Ctor-12]" )
@@ -131,4 +157,4 @@ TEST_CASE ("Testing String(String &&) with move(String &rhs) from larger to smal
131157 arduino::Stringstr1 (" Arduino" );
132158 str =static_cast <arduino::String&&>(str1);
133159REQUIRE (str1.compareTo (" Arduino" ) ==0 );
134- }
160+ }