Changeset 4910 in CLRX


Ignore:
Timestamp:
Aug 20, 2019, 2:42:16 PM (4 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCm: Add next testcases for skipping MsgPack? values. Fixed skipMsgPackObject routine.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdbin/ROCmMetadata.cpp

    r4908 r4910  
    15801580            throw ParseException("MsgPack: Can't skip object");
    15811581        const size_t size = *dataPtr++;
    1582         if (dataPtr+size>=dataEnd)
     1582        if (dataPtr+size>dataEnd)
    15831583            throw ParseException("MsgPack: Can't skip object");
    15841584        dataPtr += size;
     
    15911591        size_t size = *dataPtr++;
    15921592        size |= (*dataPtr++)<<8;
    1593         if (dataPtr+size>=dataEnd)
     1593        if (dataPtr+size>dataEnd)
    15941594            throw ParseException("MsgPack: Can't skip object");
    15951595        dataPtr += size;
     
    16031603        for (cxuint i = 0; i < 32; i+=8)
    16041604            size |= (*dataPtr++)<<i;
    1605         if (dataPtr+size>=dataEnd)
     1605        if (dataPtr+size>dataEnd)
    16061606            throw ParseException("MsgPack: Can't skip object");
    16071607        dataPtr += size;
  • CLRadeonExtender/trunk/tests/amdbin/ROCmMsgPack.cpp

    r4909 r4910  
    984984                    [&mapParser]() { mapParser.skipValue(); });
    985985    }
     986    // skip floats
     987    const cxbyte tc7[7] = { 0x81, 0xc0, 0xca, 0x11, 0xbb, 0xd1, 0xe6 };
     988    dataPtr = tc7;
     989    {
     990        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc7));
     991        mapParser.parseKeyNil();
     992        mapParser.skipValue();
     993        assertValue("MsgPackSkip", "tc7.DataPtr", dataPtr, tc7 + sizeof(tc7));
     994    }
     995    for (cxuint i = 1; i <= 3; i++)
     996    {
     997        dataPtr = tc7;
     998        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc7)-i);
     999        mapParser.parseKeyNil();
     1000        assertCLRXException("MsgPackSkip", "tc7_1.DataPtr", "MsgPack: Can't skip object",
     1001                    [&mapParser]() { mapParser.skipValue(); });
     1002    }
     1003    const cxbyte tc8[11] = { 0x81, 0xc0, 0xcf, 0x11, 0x77, 0xab, 0x3c,
     1004                    0x1a, 0x88, 0x83, 0xde };
     1005    dataPtr = tc8;
     1006    {
     1007        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc8));
     1008        mapParser.parseKeyNil();
     1009        mapParser.skipValue();
     1010        assertValue("MsgPackSkip", "tc8.DataPtr", dataPtr, tc8 + sizeof(tc8));
     1011    }
     1012    for (cxuint i = 1; i <= 7; i++)
     1013    {
     1014        dataPtr = tc8;
     1015        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc8)-i);
     1016        mapParser.parseKeyNil();
     1017        assertCLRXException("MsgPackSkip", "tc8_1.DataPtr", "MsgPack: Can't skip object",
     1018                    [&mapParser]() { mapParser.skipValue(); });
     1019    }
     1020    /* skip string */
     1021    const cxbyte tc9[8] = { 0x81, 0xc0, 0xa5, 0x41, 0x42, 0x53, 0x43, 0x47 };
     1022    dataPtr = tc9;
     1023    {
     1024        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc9));
     1025        mapParser.parseKeyNil();
     1026        mapParser.skipValue();
     1027        assertValue("MsgPackSkip", "tc9.DataPtr", dataPtr, tc9 + sizeof(tc9));
     1028    }
     1029    dataPtr = tc9;
     1030    {
     1031        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc9)-1);
     1032        mapParser.parseKeyNil();
     1033        assertCLRXException("MsgPackSkip", "tc9_1.DataPtr", "MsgPack: Can't skip object",
     1034                    [&mapParser]() { mapParser.skipValue(); });
     1035    }
     1036    const cxbyte tc10[38] = { 0x81, 0xc0, 0xd9, 0x22,
     1037        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
     1038        0x01, 0x02, 0x03, 0x54, 0x05, 0x06, 0x07, 0x08,
     1039        0x01, 0x04, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
     1040        0x01, 0x02, 0x03, 0x04, 0xf5, 0x06, 0x07, 0x08,
     1041        0x33, 0x66 };
     1042    dataPtr = tc10;
     1043    {
     1044        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc10));
     1045        mapParser.parseKeyNil();
     1046        mapParser.skipValue();
     1047        assertValue("MsgPackSkip", "tc9.DataPtr", dataPtr, tc10 + sizeof(tc10));
     1048    }
     1049    dataPtr = tc10;
     1050    {
     1051        MsgPackMapParser mapParser(dataPtr, dataPtr + sizeof(tc10)-1);
     1052        mapParser.parseKeyNil();
     1053        assertCLRXException("MsgPackSkip", "tc10_1.DataPtr", "MsgPack: Can't skip object",
     1054                    [&mapParser]() { mapParser.skipValue(); });
     1055    }
     1056    dataPtr = tc10;
     1057    {
     1058        MsgPackMapParser mapParser(dataPtr, dataPtr + 3);
     1059        mapParser.parseKeyNil();
     1060        assertCLRXException("MsgPackSkip", "tc10_2.DataPtr", "MsgPack: Can't skip object",
     1061                    [&mapParser]() { mapParser.skipValue(); });
     1062    }
    9861063}
    9871064
Note: See TracChangeset for help on using the changeset viewer.