Changeset 4909 in CLRX


Ignore:
Timestamp:
Aug 20, 2019, 1:57:10 PM (4 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCm: Add testcases for skipping MsgPack? values.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/tests/amdbin/ROCmMsgPack.cpp

    r4908 r4909  
    868868}
    869869
     870static void testMsgPackSkip()
     871{
     872    const cxbyte tc0[3] = { 0x81, 0xc0, 0xc0 };
     873    const cxbyte* dataPtr;
     874    dataPtr = tc0;
     875    {
     876        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc0));
     877        mapParser.parseKeyNil();
     878        mapParser.skipValue();
     879        assertValue("MsgPackSkip", "tc0.DataPtr", dataPtr, tc0 + sizeof(tc0));
     880    }
     881   
     882    // skip boolean
     883    const cxbyte tc1[3] = { 0x81, 0xc0, 0xc2 };
     884    dataPtr = tc1;
     885    {
     886        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc1));
     887        mapParser.parseKeyNil();
     888        mapParser.skipValue();
     889        assertValue("MsgPackSkip", "tc1.DataPtr", dataPtr, tc1 + sizeof(tc1));
     890    }
     891    const cxbyte tc1_1[3] = { 0x81, 0xc0, 0xc3 };
     892    dataPtr = tc1_1;
     893    {
     894        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc1_1));
     895        mapParser.parseKeyNil();
     896        mapParser.skipValue();
     897        assertValue("MsgPackSkip", "tc1_1.DataPtr", dataPtr, tc1_1 + sizeof(tc1_1));
     898    }
     899    // skip integers
     900    const cxbyte tc2[3] = { 0x81, 0xc0, 0x17 };
     901    dataPtr = tc2;
     902    {
     903        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc2));
     904        mapParser.parseKeyNil();
     905        mapParser.skipValue();
     906        assertValue("MsgPackSkip", "tc2.DataPtr", dataPtr, tc2 + sizeof(tc2));
     907    }
     908    const cxbyte tc2_1[3] = { 0x81, 0xc0, 0xec };
     909    dataPtr = tc2_1;
     910    {
     911        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc2_1));
     912        mapParser.parseKeyNil();
     913        mapParser.skipValue();
     914        assertValue("MsgPackSkip", "tc2_1.DataPtr", dataPtr, tc2_1 + sizeof(tc2_1));
     915    }
     916    const cxbyte tc3[4] = { 0x81, 0xc0, 0xcc, 0xda };
     917    dataPtr = tc3;
     918    {
     919        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc3));
     920        mapParser.parseKeyNil();
     921        mapParser.skipValue();
     922        assertValue("MsgPackSkip", "tc3.DataPtr", dataPtr, tc3 + sizeof(tc3));
     923    }
     924    dataPtr = tc3;
     925    {
     926        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc3)-1);
     927        mapParser.parseKeyNil();
     928        assertCLRXException("MsgPackSkip", "tc3_1.DataPtr", "MsgPack: Can't skip object",
     929                    [&mapParser]() { mapParser.skipValue(); });
     930    }
     931    const cxbyte tc4[5] = { 0x81, 0xc0, 0xcd, 0xda, 0x99 };
     932    dataPtr = tc4;
     933    {
     934        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc4));
     935        mapParser.parseKeyNil();
     936        mapParser.skipValue();
     937        assertValue("MsgPackSkip", "tc4.DataPtr", dataPtr, tc4 + sizeof(tc4));
     938    }
     939    dataPtr = tc4;
     940    {
     941        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc4)-1);
     942        mapParser.parseKeyNil();
     943        assertCLRXException("MsgPackSkip", "tc4_1.DataPtr", "MsgPack: Can't skip object",
     944                    [&mapParser]() { mapParser.skipValue(); });
     945    }
     946    dataPtr = tc4;
     947    {
     948        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc4)-2);
     949        mapParser.parseKeyNil();
     950        assertCLRXException("MsgPackSkip", "tc4_2.DataPtr", "MsgPack: Can't skip object",
     951                    [&mapParser]() { mapParser.skipValue(); });
     952    }
     953    const cxbyte tc5[7] = { 0x81, 0xc0, 0xce, 0x11, 0xbb, 0xd1, 0xe6 };
     954    dataPtr = tc5;
     955    {
     956        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc5));
     957        mapParser.parseKeyNil();
     958        mapParser.skipValue();
     959        assertValue("MsgPackSkip", "tc5.DataPtr", dataPtr, tc5 + sizeof(tc5));
     960    }
     961    for (cxuint i = 1; i <= 3; i++)
     962    {
     963        dataPtr = tc5;
     964        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc5)-i);
     965        mapParser.parseKeyNil();
     966        assertCLRXException("MsgPackSkip", "tc5_1.DataPtr", "MsgPack: Can't skip object",
     967                    [&mapParser]() { mapParser.skipValue(); });
     968    }
     969    const cxbyte tc6[11] = { 0x81, 0xc0, 0xcf, 0x11, 0x77, 0xab, 0x3c,
     970                    0x1a, 0x88, 0x83, 0xde };
     971    dataPtr = tc6;
     972    {
     973        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc6));
     974        mapParser.parseKeyNil();
     975        mapParser.skipValue();
     976        assertValue("MsgPackSkip", "tc6.DataPtr", dataPtr, tc6 + sizeof(tc6));
     977    }
     978    for (cxuint i = 1; i <= 7; i++)
     979    {
     980        dataPtr = tc6;
     981        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc6)-i);
     982        mapParser.parseKeyNil();
     983        assertCLRXException("MsgPackSkip", "tc6_1.DataPtr", "MsgPack: Can't skip object",
     984                    [&mapParser]() { mapParser.skipValue(); });
     985    }
     986}
     987
    870988int main(int argc, const char** argv)
    871989{
    872990    int retVal = 0;
    873991    retVal |= callTest(testMsgPackBytes);
     992    retVal |= callTest(testMsgPackSkip);
    874993    return retVal;
    875994}
Note: See TracChangeset for help on using the changeset viewer.