Changeset 4905 in CLRX


Ignore:
Timestamp:
Aug 18, 2019, 5:56:00 PM (4 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCm: Add next testcases for ROCm MsgPack? parser - string and data size fail testcases.

File:
1 edited

Legend:

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

    r4904 r4905  
    419419        assertValue("MsgPack0", "tc17_1.DataPtr", dataPtr, tc17 + 3);
    420420    }
     421    dataPtr = tc17;
     422    {
     423        MsgPackArrayParser arrParser(dataPtr, dataPtr + 2);
     424        assertCLRXException("MsgPack0", "tc17_2.Ex", "MsgPack: Can't parse byte-array size",
     425                    [&arrParser]() { arrParser.parseData(); });
     426        assertValue("MsgPack0", "tc17_2.DataPtr", dataPtr, tc17 + 2);
     427    }
    421428    // longer data (16-bit size)
    422429    {
     
    442449                        [&arrParser]() { arrParser.parseData(); });
    443450            assertValue("MsgPack0", "tc18_1.DataPtr", dataPtr, dataEnd);
     451        }
     452        dataPtr = tc18.data();
     453        {
     454            MsgPackArrayParser arrParser(dataPtr, dataPtr + 2);
     455            assertCLRXException("MsgPack0", "tc18_2.Ex",
     456                        "MsgPack: Can't parse byte-array size",
     457                        [&arrParser]() { arrParser.parseData(); });
     458            dataEnd = tc18.begin()+2;
     459            assertValue("MsgPack0", "tc18_2.DataPtr", dataPtr, dataEnd);
     460        }
     461        dataPtr = tc18.data();
     462        {
     463            MsgPackArrayParser arrParser(dataPtr, dataPtr + 3);
     464            assertCLRXException("MsgPack0", "tc18_3.Ex",
     465                        "MsgPack: Can't parse byte-array size",
     466                        [&arrParser]() { arrParser.parseData(); });
     467            dataEnd = tc18.begin()+2;
     468            assertValue("MsgPack0", "tc18_3.DataPtr", dataPtr, dataEnd);
    444469        }
    445470    }
     
    470495            assertValue("MsgPack0", "tc19_1.DataPtr", dataPtr, dataEnd);
    471496        }
     497        for (cxuint i = 1; i <= 3; i++)
     498        {
     499            dataPtr = tc19.data();
     500            MsgPackArrayParser arrParser(dataPtr, dataPtr + 2 + i);
     501            assertCLRXException("MsgPack0", "tc19_2.Ex",
     502                        "MsgPack: Can't parse byte-array size",
     503                        [&arrParser]() { arrParser.parseData(); });
     504            dataEnd = tc19.begin()+2;
     505            assertValue("MsgPack0", "tc19_2.DataPtr", dataPtr, dataEnd);
     506        }
    472507    }
    473508    // parseString
     
    510545                    [&arrParser]() { arrParser.parseString(); });
    511546        assertValue("MsgPack0", "tc21_1.DataPtr", dataPtr, tc21 + 3);
     547    }
     548    dataPtr = tc21;
     549    {
     550        MsgPackArrayParser arrParser(dataPtr, dataPtr + 2);
     551        assertCLRXException("MsgPack0", "tc21_2.Ex", "MsgPack: Can't parse string size",
     552                    [&arrParser]() { arrParser.parseString(); });
     553        assertValue("MsgPack0", "tc21_2.DataPtr", dataPtr, tc21 + 2);
    512554    }
    513555    // longer data (16-bit size)
     
    535577                        [&arrParser]() { arrParser.parseString(); });
    536578            assertValue("MsgPack0", "tc22_1.DataPtr", dataPtr, dataEnd);
     579        }
     580        dataPtr = tc22.data();
     581        {
     582            MsgPackArrayParser arrParser(dataPtr, dataPtr + 2);
     583            assertCLRXException("MsgPack0", "tc18_2.Ex",
     584                        "MsgPack: Can't parse string size",
     585                        [&arrParser]() { arrParser.parseString(); });
     586            dataEnd = tc22.begin()+2;
     587            assertValue("MsgPack0", "tc22_2.DataPtr", dataPtr, dataEnd);
     588        }
     589        dataPtr = tc22.data();
     590        {
     591            MsgPackArrayParser arrParser(dataPtr, dataPtr + 3);
     592            assertCLRXException("MsgPack0", "tc18_3.Ex",
     593                        "MsgPack: Can't parse string size",
     594                        [&arrParser]() { arrParser.parseString(); });
     595            dataEnd = tc22.begin()+2;
     596            assertValue("MsgPack0", "tc22_3.DataPtr", dataPtr, dataEnd);
    537597        }
    538598    }
     
    564624            assertValue("MsgPack0", "tc23_1.DataPtr", dataPtr, dataEnd);
    565625        }
     626        for (cxuint i = 1; i <= 3; i++)
     627        {
     628            dataPtr = tc23.data();
     629            MsgPackArrayParser arrParser(dataPtr, dataPtr + 2 + i);
     630            assertCLRXException("MsgPack0", "tc23_2.Ex",
     631                        "MsgPack: Can't parse string size",
     632                        [&arrParser]() { arrParser.parseString(); });
     633            dataEnd = tc23.begin()+2;
     634            assertValue("MsgPack0", "tc23_2.DataPtr", dataPtr, dataEnd);
     635        }
     636    }
     637   
     638    // parseArray
     639    const cxbyte tc24[10] = { 0x91, 0x96, 0x11, 0x33, 0xcc, 0xb4, 0x74, 0xcc, 0x99, 0x21 };
     640    {
     641        dataPtr = tc24;
     642        MsgPackArrayParser arrParser(dataPtr, dataPtr + sizeof(tc24));
     643        MsgPackArrayParser childParser = arrParser.parseArray();
     644        std::vector<cxuint> res;
     645        while (childParser.haveElements())
     646            res.push_back(childParser.parseInteger(MSGPACK_WS_BOTH));
     647        const cxuint expected[6] = { 0x11, 0x33, 0xb4, 0x74, 0x99, 0x21 };
     648        assertArray("MsgPack0", "tc24.value", Array<cxuint>(expected, expected + 6),
     649                        Array<cxuint>(res.begin(), res.end()));
     650        assertValue("MsgPack0", "tc24.DataPtr", dataPtr, tc24 + sizeof(tc24));
     651        assertTrue("MsgPack0", "No elements", !childParser.haveElements());
    566652    }
    567653}
Note: See TracChangeset for help on using the changeset viewer.