void tst_WebSocketFrame::tst_copyConstructorAndAssignment() { FrameHelper frameHelper; frameHelper.setRsv1(0); frameHelper.setRsv2(0); frameHelper.setRsv3(0); frameHelper.setFinalFrame(true); frameHelper.setMask(1234u); frameHelper.setOpCode(QWebSocketProtocol::OpCodeBinary); frameHelper.setPayload(QByteArrayLiteral("12345")); QByteArray payload = frameHelper.wireRepresentation(); QBuffer buffer(&payload); buffer.open(QIODevice::ReadOnly); QWebSocketFrame frame = QWebSocketFrame::readFrame(&buffer); buffer.close(); { QWebSocketFrame other(frame); QCOMPARE(other.closeCode(), frame.closeCode()); QCOMPARE(other.closeReason(), frame.closeReason()); QCOMPARE(other.hasMask(), frame.hasMask()); QCOMPARE(other.isContinuationFrame(), frame.isContinuationFrame()); QCOMPARE(other.isControlFrame(), frame.isControlFrame()); QCOMPARE(other.isDataFrame(), frame.isDataFrame()); QCOMPARE(other.isFinalFrame(), frame.isFinalFrame()); QCOMPARE(other.isValid(), frame.isValid()); QCOMPARE(other.mask(), frame.mask()); QCOMPARE(other.opCode(), frame.opCode()); QCOMPARE(other.payload(), frame.payload()); QCOMPARE(other.rsv1(), frame.rsv1()); QCOMPARE(other.rsv2(), frame.rsv2()); QCOMPARE(other.rsv3(), frame.rsv3()); } { QWebSocketFrame other; other = frame; QCOMPARE(other.closeCode(), frame.closeCode()); QCOMPARE(other.closeReason(), frame.closeReason()); QCOMPARE(other.hasMask(), frame.hasMask()); QCOMPARE(other.isContinuationFrame(), frame.isContinuationFrame()); QCOMPARE(other.isControlFrame(), frame.isControlFrame()); QCOMPARE(other.isDataFrame(), frame.isDataFrame()); QCOMPARE(other.isFinalFrame(), frame.isFinalFrame()); QCOMPARE(other.isValid(), frame.isValid()); QCOMPARE(other.mask(), frame.mask()); QCOMPARE(other.opCode(), frame.opCode()); QCOMPARE(other.payload(), frame.payload()); QCOMPARE(other.rsv1(), frame.rsv1()); QCOMPARE(other.rsv2(), frame.rsv2()); QCOMPARE(other.rsv3(), frame.rsv3()); } }
void tst_WebSocketFrame::tst_goodFrames() { QFETCH(int, rsv1); QFETCH(int, rsv2); QFETCH(int, rsv3); QFETCH(quint32, mask); QFETCH(QWebSocketProtocol::OpCode, opCode); QFETCH(bool, isFinal); QFETCH(QByteArray, payload); QFETCH(bool, isControlFrame); QFETCH(bool, isDataFrame); QFETCH(bool, isContinuationFrame); FrameHelper helper; helper.setRsv1(rsv1); helper.setRsv2(rsv2); helper.setRsv3(rsv3); helper.setMask(mask); helper.setOpCode(opCode); helper.setFinalFrame(isFinal); helper.setPayload(payload); QByteArray wireRepresentation = helper.wireRepresentation(); QBuffer buffer; buffer.setData(wireRepresentation); buffer.open(QIODevice::ReadOnly); QWebSocketFrame frame = QWebSocketFrame::readFrame(&buffer); buffer.close(); QVERIFY(frame.isValid()); QCOMPARE(frame.rsv1(), rsv1); QCOMPARE(frame.rsv2(), rsv2); QCOMPARE(frame.rsv3(), rsv3); QCOMPARE(frame.hasMask(), (mask != 0)); QCOMPARE(frame.opCode(), opCode); QCOMPARE(frame.isFinalFrame(), isFinal); QCOMPARE(frame.isControlFrame(), isControlFrame); QCOMPARE(frame.isDataFrame(), isDataFrame); QCOMPARE(frame.isContinuationFrame(), isContinuationFrame); QCOMPARE(frame.payload().length(), payload.length()); QCOMPARE(frame.payload(), payload); }