VirtualBox

Changeset 74188 in vbox


Ignore:
Timestamp:
Sep 11, 2018 9:03:01 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
124963
Message:

IPRT/rest: Started on testing the array class. bugref:9167

File:
1 edited

Legend:

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

    r74182 r74188  
    3030*********************************************************************************************************************************/
    3131#include <iprt/cpp/restbase.h>
     32#include <iprt/cpp/restarray.h>
     33#include <iprt/cpp/reststringmap.h>
    3234
    3335#include <iprt/err.h>
     
    14611463        RTTESTI_CHECK_RC(fromString(&obj4, "10 Sep 118 11:58:07", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS);
    14621464        CHECK_DATE_FMT(obj4, false, true, iRecentSec, "10 Sep 118 11:58:07", false, RTCRestDate::kFormat_Rfc2822);
    1463 
     1465    }
     1466}
     1467
     1468static void testArray()
     1469{
     1470    RTTestSub(g_hTest, "RTCRestArray");
     1471
     1472    {
     1473        RTCRestArray<RTCRestBool> obj1;
     1474        RTTESTI_CHECK(obj1.size() == 0);
     1475        RTTESTI_CHECK(obj1.isNull() == false);
     1476        RTTESTI_CHECK(strcmp(obj1.typeName(), "RTCRestArray<ElementType>") == 0);
     1477        RTTESTI_CHECK(obj1.typeClass() == RTCRestObjectBase::kTypeClass_Array);
     1478    }
     1479
     1480    {
     1481        /* Insert a range of numbers into a int64 array. */
     1482        RTCRestArray<RTCRestInt64> Arr2;
     1483        for (int64_t i = 0; i < _64K; i++)
     1484        {
     1485            if (i & 1)
     1486            {
     1487                RTCRestInt64 toCopy(i);
     1488                if (i & 2)
     1489                    RTTESTI_CHECK_RC(Arr2.insertCopy(i, toCopy), VINF_SUCCESS);
     1490                else
     1491                    RTTESTI_CHECK_RC(Arr2.appendCopy(toCopy), VINF_SUCCESS);
     1492            }
     1493            else
     1494            {
     1495                RTCRestInt64 *pDirect = new RTCRestInt64(i);
     1496                if (i & 2)
     1497                    RTTESTI_CHECK_RC(Arr2.insert(i, pDirect), VINF_SUCCESS);
     1498                else
     1499                    RTTESTI_CHECK_RC(Arr2.append(pDirect), VINF_SUCCESS);
     1500            }
     1501        }
     1502
     1503        /* verify: */
     1504        RTCRestArray<RTCRestInt64> const *pConstArr2 = &Arr2;
     1505        for (int64_t i = 0; i < _64K; i++)
     1506        {
     1507            RTCRestInt64 *pCur = Arr2.at(i);
     1508            RTTESTI_CHECK(pCur->m_iValue == i);
     1509
     1510            RTCRestInt64 const *pCur2 = pConstArr2->at(i);
     1511            RTTESTI_CHECK(pCur2->m_iValue == i);
     1512        }
     1513        RTTESTI_CHECK(Arr2.first()->m_iValue == 0);
     1514        RTTESTI_CHECK(Arr2.last()->m_iValue == _64K - 1);
     1515        RTTESTI_CHECK(pConstArr2->first()->m_iValue == 0);
     1516        RTTESTI_CHECK(pConstArr2->last()->m_iValue == _64K - 1);
     1517
     1518        /* Remove every 3rd element. */
     1519        for (int64_t i = _64K - 1; i > 0; i -= 3)
     1520            RTTESTI_CHECK_RC(Arr2.removeAt(i), VINF_SUCCESS);
     1521#if 0
     1522        for (int64_t i = 0, iValue = 0; i < (ssize_t)Arr2.size(); i++, iValue++)
     1523        {
     1524            if ((iValue % 3) == 0)
     1525                iValue++;
     1526            RTTESTI_CHECK_MSG(Arr2.at(i)->m_iValue == iValue, ("%RI64: %RI64 vs %RI64", i, Arr2.at(i)->m_iValue, iValue));
     1527        }
     1528#endif
    14641529    }
    14651530}
     
    14781543        testString("dummy", 1, 2);
    14791544        testDate();
     1545        testArray();
    14801546
    14811547        rcExit = RTTestSummaryAndDestroy(g_hTest);
Note: See TracChangeset for help on using the changeset viewer.

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