From 5382196b365585732b8093b8b72f420ef4ecc8f7 Mon Sep 17 00:00:00 2001 From: Kurt Pattyn Date: Sat, 12 Oct 2013 20:59:40 +0200 Subject: Added remaining tests Change-Id: I006e84a06eb0315e81cdb389612f0be7ae494bd8 Reviewed-by: Steven Ceuppens --- tests/auto/dataprocessor/tst_dataprocessor.cpp | 37 ++++++++------------------ 1 file changed, 11 insertions(+), 26 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/dataprocessor/tst_dataprocessor.cpp b/tests/auto/dataprocessor/tst_dataprocessor.cpp index 297bd42..fb9313b 100644 --- a/tests/auto/dataprocessor/tst_dataprocessor.cpp +++ b/tests/auto/dataprocessor/tst_dataprocessor.cpp @@ -50,23 +50,6 @@ Q_DECLARE_METATYPE(QWebSocketProtocol::CloseCode) Q_DECLARE_METATYPE(QWebSocketProtocol::OpCode) -//happy flow -//TODO: test valid UTF8 sequences (see UC 6.2) -//TODO: test on masking correctness -//TODO: test for valid fields -//TODO: test if opcode is correct after processing of a continuation frame (text and binary frames) - -//TODO: test valid frame sequences - -//rainy-day flow -//TODO: test invalid masks -//TODO: test for AutoBahn testcase 5 -//TODO: test for AutoBahn testcase 6.1 -//TODO: test for AutoBahn testcase 6.3 (fragmentation test) -//TODO: test for AutoBahn testcase 6.4 (fragmentation test) - -//TODO: test invalid frame sequences - const quint8 FIN = 0x80; const quint8 RSV1 = 0x40; const quint8 RSV2 = 0x30; @@ -307,17 +290,21 @@ void tst_DataProcessor::goodBinaryFrame() void tst_DataProcessor::goodTextFrame_data() { QTest::addColumn("payload"); + QTest::addColumn("size"); //test frames with small (< 126), large ( < 65536) and big ( > 65535) payloads for (int i = 0; i < (65536 + 256); i += 128) { - QTest::newRow(QString("Text frame with %1 ASCII characters").arg(i).toStdString().data()) << QByteArray(i, 'a'); + QTest::newRow(QString("Text frame with %1 ASCII characters").arg(i).toStdString().data()) << QByteArray(i, 'a') << i; } //test all valid ASCII characters for (int i = 0; i < 128; ++i) { - QTest::newRow(QString("Text frame with containing ASCII character '0x%1'").arg(QByteArray(1, char(i)).toHex().constData()).toStdString().data()) << QByteArray(1, char(i)); + QTest::newRow(QString("Text frame with containing ASCII character '0x%1'").arg(QByteArray(1, char(i)).toHex().constData()).toStdString().data()) << QByteArray(1, char(i)) << 1; } + + //UC 6.2 + QTest::newRow(QStringLiteral("Text frame containing Hello-µ@ßöäüàá-UTF-8!!").toStdString().data()) << QByteArray::fromHex("48656c6c6f2dc2b540c39fc3b6c3a4c3bcc3a0c3a12d5554462d382121") << QStringLiteral("Hello-µ@ßöäüàá-UTF-8!!").size(); } void tst_DataProcessor::goodTextFrame() @@ -326,6 +313,7 @@ void tst_DataProcessor::goodTextFrame() QBuffer buffer; QWebSocketDataProcessor dataProcessor; QFETCH(QByteArray, payload); + QFETCH(int, size); data.append((char)(FIN | QWebSocketProtocol::OC_TEXT)); @@ -370,9 +358,9 @@ void tst_DataProcessor::goodTextFrame() QCOMPARE(binaryFrameReceivedSpy.count(), 0); QCOMPARE(binaryMessageReceivedSpy.count(), 0); QList arguments = textFrameReceivedSpy.takeFirst(); - QCOMPARE(arguments.at(0).toString().length(), payload.length()); + QCOMPARE(arguments.at(0).toString().length(), size); arguments = textMessageReceivedSpy.takeFirst(); - QCOMPARE(arguments.at(0).toString().length(), payload.length()); + QCOMPARE(arguments.at(0).toString().length(), size); buffer.close(); } @@ -1589,17 +1577,14 @@ void tst_DataProcessor::incompleteFrame(quint8 controlCode, quint64 indicatedSiz void tst_DataProcessor::nonCharacterSequence(const char *sequence) { QByteArray utf8Sequence = QByteArray::fromHex(sequence); - //TODO: qstrdup - memory leak! qstrdup is necessary because once QString goes out of scope we have garbage - const char *tagName = qstrdup(qPrintable(QString("Text frame with payload containing the non-control character sequence 0x%1").arg(QString(sequence)))); - const char *tagName2 = qstrdup(qPrintable(QString("Continuation frame with payload containing the non-control character sequence 0x%1").arg(QString(sequence)))); - QTest::newRow(tagName) + QTest::newRow(QString("Text frame with payload containing the non-control character sequence 0x%1").arg(QString(sequence)).toLatin1().constData()) << quint8(FIN | QWebSocketProtocol::OC_TEXT) << quint8(utf8Sequence.size()) << utf8Sequence << false; - QTest::newRow(tagName2) + QTest::newRow(QString("Continuation frame with payload containing the non-control character sequence 0x%1").arg(QString(sequence)).toLatin1().constData()) << quint8(FIN | QWebSocketProtocol::OC_CONTINUE) << quint8(utf8Sequence.size()) << utf8Sequence -- cgit v1.2.1