From 123800bbbd1c64ba0e0954618b752698b0d52267 Mon Sep 17 00:00:00 2001 From: Redstone1024 <2824517378@qq.com> Date: Wed, 4 Dec 2024 11:50:46 +0800 Subject: [PATCH] test(string): using self numeric instead of standard library functions --- .../Source/Private/Testing/StringTesting.cpp | 50 +++++++++---------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/Redcraft.Utility/Source/Private/Testing/StringTesting.cpp b/Redcraft.Utility/Source/Private/Testing/StringTesting.cpp index f450bd3..b3fca1f 100644 --- a/Redcraft.Utility/Source/Private/Testing/StringTesting.cpp +++ b/Redcraft.Utility/Source/Private/Testing/StringTesting.cpp @@ -3,11 +3,10 @@ #include "String/Char.h" #include "Memory/Memory.h" #include "String/String.h" +#include "Numeric/Numeric.h" #include "String/StringView.h" #include "Miscellaneous/AssertionMacros.h" -#include - NAMESPACE_REDCRAFT_BEGIN NAMESPACE_MODULE_BEGIN(Redcraft) NAMESPACE_MODULE_BEGIN(Utility) @@ -474,10 +473,10 @@ void TestStringConversion() always_check(TString::Format(LITERAL(T, "#{}#"), 3.14) == LITERAL(T, "#3.140000#")); - always_check(TString::Format(LITERAL(T, "#{}#"), +NAMESPACE_STD::numeric_limits::infinity()) == LITERAL(T, "#Infinity#")); - always_check(TString::Format(LITERAL(T, "#{}#"), -NAMESPACE_STD::numeric_limits::infinity()) == LITERAL(T, "#-Infinity#")); - always_check(TString::Format(LITERAL(T, "#{}#"), +NAMESPACE_STD::numeric_limits::quiet_NaN()) == LITERAL(T, "#NaN#")); - always_check(TString::Format(LITERAL(T, "#{}#"), -NAMESPACE_STD::numeric_limits::quiet_NaN()) == LITERAL(T, "#-NaN#")); + always_check(TString::Format(LITERAL(T, "#{}#"), +TNumericLimits::Infinity()) == LITERAL(T, "#Infinity#")); + always_check(TString::Format(LITERAL(T, "#{}#"), -TNumericLimits::Infinity()) == LITERAL(T, "#-Infinity#")); + always_check(TString::Format(LITERAL(T, "#{}#"), +TNumericLimits::QuietNaN()) == LITERAL(T, "#NaN#")); + always_check(TString::Format(LITERAL(T, "#{}#"), -TNumericLimits::QuietNaN()) == LITERAL(T, "#-NaN#")); auto CheckParseArithmetic = [](TStringView View, U Result) { @@ -489,16 +488,14 @@ void TestStringConversion() if constexpr (CFloatingPoint) { - always_check(NAMESPACE_STD::isinf(Result) == NAMESPACE_STD::isinf(Object)); - always_check(NAMESPACE_STD::isnan(Result) == NAMESPACE_STD::isnan(Object)); + always_check(Math::IsInfinity(Result) == Math::IsInfinity(Object)); + always_check(Math::IsNaN(Result) == Math::IsNaN(Object)); - always_check(NAMESPACE_STD::signbit(Result) == NAMESPACE_STD::signbit(Object)); + always_check(Math::IsNegative(Result) == Math::IsNegative(Object)); - if (NAMESPACE_STD::isinf(Result) || NAMESPACE_STD::isnan(Result)) return; + if (Math::IsInfinity(Result) || Math::IsNaN(Result)) return; - constexpr auto Epsilon = 1e-3; - - always_check(NAMESPACE_STD::abs(Object - Result) < Epsilon); + always_check(Math::IsNearlyEqual(Object, Result, 1e-4)); } else always_check(Object == Result); }; @@ -550,18 +547,17 @@ void TestStringConversion() CheckParseArithmetic(LITERAL(T, "-3.14e-2"), static_cast( -3.14e-2)); CheckParseArithmetic(LITERAL(T, "-0x1.91eb86p1"), static_cast(-0x1.91eb86p1)); - CheckParseArithmetic(LITERAL(T, "+Infinity"), +NAMESPACE_STD::numeric_limits::infinity()); - CheckParseArithmetic(LITERAL(T, " Infinity"), +NAMESPACE_STD::numeric_limits::infinity()); - CheckParseArithmetic(LITERAL(T, "-Infinity"), -NAMESPACE_STD::numeric_limits::infinity()); + CheckParseArithmetic(LITERAL(T, "+Infinity"), +TNumericLimits::Infinity()); + CheckParseArithmetic(LITERAL(T, " Infinity"), +TNumericLimits::Infinity()); + CheckParseArithmetic(LITERAL(T, "-Infinity"), -TNumericLimits::Infinity()); - CheckParseArithmetic(LITERAL(T, "+NaN"), +NAMESPACE_STD::numeric_limits::quiet_NaN()); - CheckParseArithmetic(LITERAL(T, " NaN"), +NAMESPACE_STD::numeric_limits::quiet_NaN()); - CheckParseArithmetic(LITERAL(T, "-NaN"), -NAMESPACE_STD::numeric_limits::quiet_NaN()); + CheckParseArithmetic(LITERAL(T, "+NaN"), +TNumericLimits::QuietNaN()); + CheckParseArithmetic(LITERAL(T, " NaN"), +TNumericLimits::QuietNaN()); + CheckParseArithmetic(LITERAL(T, "-NaN"), -TNumericLimits::QuietNaN()); }; CheckParseFloat(InPlaceType); CheckParseFloat(InPlaceType); - CheckParseFloat(InPlaceType); { always_check(TString::FromBool(true ) == LITERAL(T, "True" )); @@ -609,15 +605,15 @@ void TestStringConversion() } { - always_check(LITERAL_VIEW(T, "3.14" ).ToFloat() == 3.14f ); - always_check(LITERAL_VIEW(T, "3.14e+00").ToFloat() == 3.14f ); + always_check(LITERAL_VIEW(T, "3.14" ).ToFloat() == 3.14f); + always_check(LITERAL_VIEW(T, "3.14e+00").ToFloat() == 3.14f); always_check(LITERAL_VIEW(T, "-3.14" ).ToFloat() == -3.14f); - always_check(LITERAL_VIEW(T, "0.0" ).ToFloat() == 0.0f ); + always_check(LITERAL_VIEW(T, "0.0" ).ToFloat() == 0.0f); - always_check(NAMESPACE_STD::isnan(LITERAL_VIEW(T, "1e+308").ToFloat())); - always_check(NAMESPACE_STD::isnan(LITERAL_VIEW(T, "-1e+308").ToFloat())); - always_check(NAMESPACE_STD::isnan(LITERAL_VIEW(T, "1e-308").ToFloat())); - always_check(NAMESPACE_STD::isnan(LITERAL_VIEW(T, "-1e-308").ToFloat())); + always_check(Math::IsNaN(LITERAL_VIEW(T, "1e+308").ToFloat())); + always_check(Math::IsNaN(LITERAL_VIEW(T, "-1e+308").ToFloat())); + always_check(Math::IsNaN(LITERAL_VIEW(T, "1e-308").ToFloat())); + always_check(Math::IsNaN(LITERAL_VIEW(T, "-1e-308").ToFloat())); } };