VirtualBox

Changeset 75037 in vbox


Ignore:
Timestamp:
Oct 24, 2018 12:55:27 PM (6 years ago)
Author:
vboxsync
Message:

tstRTCRest-1: More flexible double handling. The strtod impl we depend on can differ depending on the glibc/whatever version on the system. bugref:9167

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/testcase/tstRTCRest-1.cpp

    r75034 r75037  
    594594{
    595595    RTTestSub(g_hTest, "RTCRestDouble");
    596 #if defined(RT_OS_WINDOWS)
    597 # define TST_DBL_MAX_STRING     "1.7976931348623157e+308"
    598 # define TST_DBL_MIN_STRING     "2.2250738585072014e-308"
    599 # define TST_DBL_MAX            (1.7976931348623157e+308)
    600 # define TST_DBL_MIN            (2.2250738585072014e-308)
    601 #else
    602 # define TST_DBL_MAX_STRING     "1.79769313486231571e+308"
    603 # define TST_DBL_MIN_STRING     "2.22507385850720138e-308"
    604 # define TST_DBL_MAX            (1.79769313486231571e+308)
    605 # define TST_DBL_MIN            (2.22507385850720138e-308)
    606 #endif
     596#define TST_DBL_MAX                 (1.79769313486231571e+308)
     597#define TST_DBL_MIN                 (2.22507385850720138e-308)
     598#define TST_DBL_MAX_STRING1         "1.79769313486231571e+308"
     599#define TST_DBL_MAX_STRING2         "1.7976931348623157e+308"
     600#define TST_DBL_MAX_EQUAL(a_psz)    ( strcmp(a_psz, TST_DBL_MAX_STRING1) == 0 || strcmp(a_psz, TST_DBL_MAX_STRING2) == 0 )
     601#define TST_DBL_MIN_STRING1         "2.22507385850720138e-308"
     602#define TST_DBL_MIN_STRING2         "2.2250738585072014e-308"
     603#define TST_DBL_MIN_EQUAL(a_psz)    ( strcmp(a_psz, TST_DBL_MIN_STRING1) == 0 || strcmp(a_psz, TST_DBL_MIN_STRING2) == 0 )
    607604
    608605    {
     
    729726        /* Serialization to json: */
    730727        const char *pszJson = toJson(&obj3Max);
    731         RTTESTI_CHECK_MSG(strcmp(pszJson, TST_DBL_MAX_STRING) == 0, ("pszJson=%s\n", pszJson));
     728        RTTESTI_CHECK_MSG(TST_DBL_MAX_EQUAL(pszJson), ("pszJson=%s\n", pszJson));
    732729        pszJson = toJson(&obj3Min);
    733         RTTESTI_CHECK_MSG(strcmp(pszJson, TST_DBL_MIN_STRING) == 0, ("pszJson=%s\n", pszJson));
     730        RTTESTI_CHECK_MSG(TST_DBL_MIN_EQUAL(pszJson), ("pszJson=%s\n", pszJson));
    734731        pszJson = toJson(&obj3Null);
    735732        RTTESTI_CHECK_MSG(strcmp(pszJson, "null") == 0, ("pszJson=%s\n", pszJson));
     
    737734        /* Serialization to string. */
    738735        RTCString str;
    739         RTCString strExpect;
     736        RTCString strExpect1;
     737        RTCString strExpect2;
    740738        str = "lead-in:";
    741739        RTTESTI_CHECK_RC(obj3Max.toString(&str, RTCRestObjectBase::kToString_Append), VINF_SUCCESS);
    742         strExpect.printf("lead-in:%s", TST_DBL_MAX_STRING);
    743         RTTESTI_CHECK_MSG(str.equals(strExpect), ("str=%s strExpect=%s\n", str.c_str(), strExpect.c_str()));
     740        strExpect1.printf("lead-in:%s", TST_DBL_MAX_STRING1);
     741        strExpect2.printf("lead-in:%s", TST_DBL_MAX_STRING2);
     742        RTTESTI_CHECK_MSG(str.equals(strExpect1) || str.equals(strExpect2),
     743                          ("str=%s strExpect1=%s strExpect2=%s\n", str.c_str(), strExpect1.c_str(), strExpect2.c_str()));
    744744        RTTESTI_CHECK_RC(obj3Max.toString(&str), VINF_SUCCESS);
    745         RTTESTI_CHECK_MSG(str.equals(TST_DBL_MAX_STRING), ("str=%s\n", str.c_str()));
     745        RTTESTI_CHECK_MSG(TST_DBL_MAX_EQUAL(str.c_str()), ("str=%s\n", str.c_str()));
    746746
    747747        str = "lead-in:";
    748748        RTTESTI_CHECK_RC(obj3Min.toString(&str, RTCRestObjectBase::kToString_Append), VINF_SUCCESS);
    749         strExpect.printf("lead-in:%s", TST_DBL_MIN_STRING);
    750         RTTESTI_CHECK_MSG(str.equals(strExpect), ("str=%s strExpect=%s\n", str.c_str(), strExpect.c_str()));
     749        strExpect1.printf("lead-in:%s", TST_DBL_MIN_STRING1);
     750        strExpect2.printf("lead-in:%s", TST_DBL_MIN_STRING2);
     751        RTTESTI_CHECK_MSG(str.equals(strExpect1) || str.equals(strExpect2),
     752                          ("str=%s strExpect1=%s strExpect2=%s\n", str.c_str(), strExpect1.c_str(), strExpect2.c_str()));
    751753        RTTESTI_CHECK_RC(obj3Min.toString(&str), VINF_SUCCESS);
    752         RTTESTI_CHECK_MSG(str.equals(TST_DBL_MIN_STRING), ("str=%s\n", str.c_str()));
     754        RTTESTI_CHECK_MSG(TST_DBL_MIN_EQUAL(str.c_str()), ("str=%s\n", str.c_str()));
    753755
    754756        str = "lead-in:";
     
    775777
    776778        obj4.setNull();
    777         RTTESTI_CHECK_RC(deserializeFromJson(&obj4, TST_DBL_MAX_STRING, &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
     779        RTTESTI_CHECK_RC(deserializeFromJson(&obj4, TST_DBL_MAX_STRING1, &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
    778780        RTTESTI_CHECK(obj4.m_rdValue == TST_DBL_MAX);
    779781        RTTESTI_CHECK(obj4.isNull() == false);
    780782
    781783        obj4.setNull();
    782         RTTESTI_CHECK_RC(deserializeFromJson(&obj4, TST_DBL_MIN_STRING, &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
     784        RTTESTI_CHECK_RC(deserializeFromJson(&obj4, TST_DBL_MIN_STRING1, &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
    783785        RTTESTI_CHECK(obj4.m_rdValue == TST_DBL_MIN);
    784786        RTTESTI_CHECK(obj4.isNull() == false);
     
    826828        RTTESTI_CHECK(obj4.isNull() == false);
    827829
    828         RTTESTI_CHECK_RC(fromString(&obj4, TST_DBL_MAX_STRING, &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
     830        RTTESTI_CHECK_RC(fromString(&obj4, TST_DBL_MAX_STRING1, &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
    829831        RTTESTI_CHECK(obj4.m_rdValue == TST_DBL_MAX);
    830832        RTTESTI_CHECK(obj4.isNull() == false);
    831833
    832         RTTESTI_CHECK_RC(fromString(&obj4, TST_DBL_MIN_STRING, &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
     834        RTTESTI_CHECK_RC(fromString(&obj4, TST_DBL_MIN_STRING1, &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
    833835        RTTESTI_CHECK(obj4.m_rdValue == TST_DBL_MIN);
    834836        RTTESTI_CHECK(obj4.isNull() == false);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette