Added tests for upper and lower case scintific format.

This commit is contained in:
John Wellbelove 2026-06-06 19:43:06 +01:00
parent c34197ab2b
commit eba38690cd
5 changed files with 139 additions and 0 deletions

View File

@ -677,6 +677,9 @@ namespace
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true)); etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true));
CHECK(etl::string<64>(STR(" 1.00000e+3")) == s0); CHECK(etl::string<64>(STR(" 1.00000e+3")) == s0);
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::string<64>(STR(" 1.00000E+3")) == s0);
// Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision. // Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision.
etl::string<64> s1; etl::string<64> s1;
etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right()); etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right());

View File

@ -590,6 +590,9 @@ namespace
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true)); etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true));
CHECK(etl::u16string<64>(STR(" 1.00000e+3")) == s0); CHECK(etl::u16string<64>(STR(" 1.00000e+3")) == s0);
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u16string<64>(STR(" 1.00000E+3")) == s0);
// Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision. // Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision.
etl::u16string<64> s1; etl::u16string<64> s1;
etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right()); etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right());
@ -627,5 +630,36 @@ namespace
CHECK(etl::u16string<64>(STR(" 0")) == s6); CHECK(etl::u16string<64>(STR(" 0")) == s6);
#endif #endif
} }
//*************************************************************************
TEST(test_issue_1436_case_support_for_nan_inf_in_to_string)
{
if (std::numeric_limits<double>::is_iec559)
{
etl::u16string<64> s1;
etl::to_string(std::numeric_limits<double>::quiet_NaN(), s1, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u16string<64>(STR(" nan")) == s1);
etl::u16string<64> s2;
etl::to_string(std::numeric_limits<double>::infinity(), s2, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u16string<64>(STR(" inf")) == s2);
etl::u16string<64> s3;
etl::to_string(-std::numeric_limits<double>::infinity(), s3, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u16string<64>(STR(" -inf")) == s3);
etl::u16string<64> s4;
etl::to_string(std::numeric_limits<double>::quiet_NaN(), s4, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u16string<64>(STR(" NAN")) == s4);
etl::u16string<64> s5;
etl::to_string(std::numeric_limits<double>::infinity(), s5, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u16string<64>(STR(" INF")) == s5);
etl::u16string<64> s6;
etl::to_string(-std::numeric_limits<double>::infinity(), s6, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u16string<64>(STR(" -INF")) == s6);
}
}
} }
} // namespace } // namespace

View File

@ -593,6 +593,9 @@ namespace
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true)); etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true));
CHECK(etl::u32string<64>(STR(" 1.00000e+3")) == s0); CHECK(etl::u32string<64>(STR(" 1.00000e+3")) == s0);
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u32string<64>(STR(" 1.00000E+3")) == s0);
// Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision. // Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision.
etl::u32string<64> s1; etl::u32string<64> s1;
etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right()); etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right());
@ -630,5 +633,36 @@ namespace
CHECK(etl::u32string<64>(STR(" 0")) == s6); CHECK(etl::u32string<64>(STR(" 0")) == s6);
#endif #endif
} }
//*************************************************************************
TEST(test_issue_1436_case_support_for_nan_inf_in_to_string)
{
if (std::numeric_limits<double>::is_iec559)
{
etl::u32string<64> s1;
etl::to_string(std::numeric_limits<double>::quiet_NaN(), s1, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u32string<64>(STR(" nan")) == s1);
etl::u32string<64> s2;
etl::to_string(std::numeric_limits<double>::infinity(), s2, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u32string<64>(STR(" inf")) == s2);
etl::u32string<64> s3;
etl::to_string(-std::numeric_limits<double>::infinity(), s3, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u32string<64>(STR(" -inf")) == s3);
etl::u32string<64> s4;
etl::to_string(std::numeric_limits<double>::quiet_NaN(), s4, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u32string<64>(STR(" NAN")) == s4);
etl::u32string<64> s5;
etl::to_string(std::numeric_limits<double>::infinity(), s5, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u32string<64>(STR(" INF")) == s5);
etl::u32string<64> s6;
etl::to_string(-std::numeric_limits<double>::infinity(), s6, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u32string<64>(STR(" -INF")) == s6);
}
}
} }
} // namespace } // namespace

View File

@ -592,6 +592,9 @@ namespace
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true)); etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true));
CHECK(etl::u8string<64>(STR(" 1.00000e+3")) == s0); CHECK(etl::u8string<64>(STR(" 1.00000e+3")) == s0);
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u8string<64>(STR(" 1.00000E+3")) == s0);
// Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision. // Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision.
etl::u8string<64> s1; etl::u8string<64> s1;
etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right()); etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right());
@ -629,6 +632,37 @@ namespace
CHECK(etl::u8string<64>(STR(" 0")) == s6); CHECK(etl::u8string<64>(STR(" 0")) == s6);
#endif #endif
} }
//*************************************************************************
TEST(test_issue_1436_case_support_for_nan_inf_in_to_string)
{
if (std::numeric_limits<double>::is_iec559)
{
etl::u8string<64> s1;
etl::to_string(std::numeric_limits<double>::quiet_NaN(), s1, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u8string<64>(STR(" nan")) == s1);
etl::u8string<64> s2;
etl::to_string(std::numeric_limits<double>::infinity(), s2, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u8string<64>(STR(" inf")) == s2);
etl::u8string<64> s3;
etl::to_string(-std::numeric_limits<double>::infinity(), s3, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::u8string<64>(STR(" -inf")) == s3);
etl::u8string<64> s4;
etl::to_string(std::numeric_limits<double>::quiet_NaN(), s4, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u8string<64>(STR(" NAN")) == s4);
etl::u8string<64> s5;
etl::to_string(std::numeric_limits<double>::infinity(), s5, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u8string<64>(STR(" INF")) == s5);
etl::u8string<64> s6;
etl::to_string(-std::numeric_limits<double>::infinity(), s6, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::u8string<64>(STR(" -INF")) == s6);
}
}
} }
} // namespace } // namespace

View File

@ -656,6 +656,9 @@ namespace
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true)); etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true));
CHECK(etl::wstring<64>(STR(" 1.00000e+3")) == s0); CHECK(etl::wstring<64>(STR(" 1.00000e+3")) == s0);
etl::to_string(1000.0, s0, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::wstring<64>(STR(" 1.00000E+3")) == s0);
// Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision. // Maximum double value is 1.7976931348623157e+308, which rounds to 1.79769e+308 with 5 digits of precision.
etl::wstring<64> s1; etl::wstring<64> s1;
etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right()); etl::to_string(std::numeric_limits<double>::max(), s1, Format().precision(5).width(15).right());
@ -693,5 +696,36 @@ namespace
CHECK(etl::wstring<64>(STR(" 0")) == s6); CHECK(etl::wstring<64>(STR(" 0")) == s6);
#endif #endif
} }
//*************************************************************************
TEST(test_issue_1436_case_support_for_nan_inf_in_to_string)
{
if (std::numeric_limits<double>::is_iec559)
{
etl::wstring<64> s1;
etl::to_string(std::numeric_limits<double>::quiet_NaN(), s1, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::wstring<64>(STR(" nan")) == s1);
etl::wstring<64> s2;
etl::to_string(std::numeric_limits<double>::infinity(), s2, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::wstring<64>(STR(" inf")) == s2);
etl::wstring<64> s3;
etl::to_string(-std::numeric_limits<double>::infinity(), s3, Format().precision(5).width(15).right().scientific(true).upper_case(false));
CHECK(etl::wstring<64>(STR(" -inf")) == s3);
etl::wstring<64> s4;
etl::to_string(std::numeric_limits<double>::quiet_NaN(), s4, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::wstring<64>(STR(" NAN")) == s4);
etl::wstring<64> s5;
etl::to_string(std::numeric_limits<double>::infinity(), s5, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::wstring<64>(STR(" INF")) == s5);
etl::wstring<64> s6;
etl::to_string(-std::numeric_limits<double>::infinity(), s6, Format().precision(5).width(15).right().scientific(true).upper_case(true));
CHECK(etl::wstring<64>(STR(" -INF")) == s6);
}
}
} }
} // namespace } // namespace