summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKurt Pattyn <pattyn.kurt@gmail.com>2013-10-12 20:59:40 +0200
committerKurt Pattyn <pattyn.kurt@gmail.com>2013-10-13 16:58:59 +0200
commit5382196b365585732b8093b8b72f420ef4ecc8f7 (patch)
tree190fbdf1368af2153bb61a959b8ce842233190ea /tests
parent4f884ef7b5588ee4f639a61a0a812d3efac90e81 (diff)
downloadqtwebsockets-5382196b365585732b8093b8b72f420ef4ecc8f7.tar.gz
Added remaining tests
Change-Id: I006e84a06eb0315e81cdb389612f0be7ae494bd8 Reviewed-by: Steven Ceuppens <steven.ceuppens@icloud.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/dataprocessor/tst_dataprocessor.cpp37
1 files changed, 11 insertions, 26 deletions
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<QByteArray>("payload");
+ QTest::addColumn<int>("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<QVariant> 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