From 4eab58f95441acad7fb90bb698052e798a5a1430 Mon Sep 17 00:00:00 2001 From: Andrew O'Doherty Date: Wed, 10 Oct 2018 17:04:24 +0200 Subject: Extend autotest tst_QKnxNetIpDescriptionRequest Change-Id: Ia40e8afee1edfc1d5a240e6f7352475ddc9a0453 Reviewed-by: Karsten Heimrich --- .../tst_qknxnetipdescriptionrequest.cpp | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/tests/auto/qknxnetipdescriptionrequest/tst_qknxnetipdescriptionrequest.cpp b/tests/auto/qknxnetipdescriptionrequest/tst_qknxnetipdescriptionrequest.cpp index 7afdf6f..6eafc12 100644 --- a/tests/auto/qknxnetipdescriptionrequest/tst_qknxnetipdescriptionrequest.cpp +++ b/tests/auto/qknxnetipdescriptionrequest/tst_qknxnetipdescriptionrequest.cpp @@ -43,6 +43,7 @@ class tst_QKnxNetIpDescriptionRequest: public QObject private slots: void testDefaultConstructor(); void testConstructor(); + void testValidationDescriptionRequest(); void testDebugStream(); }; @@ -53,6 +54,10 @@ void tst_QKnxNetIpDescriptionRequest::testDefaultConstructor() QCOMPARE(descriptionRequest.isValid(), false); QCOMPARE(descriptionRequest.controlEndpoint().isValid(), false); + + frame = QKnxNetIpDescriptionRequestProxy::builder().create(); + const QKnxNetIpDescriptionRequestProxy view(frame); + QCOMPARE(view.isValid(), false); } void tst_QKnxNetIpDescriptionRequest::testConstructor() @@ -75,6 +80,52 @@ void tst_QKnxNetIpDescriptionRequest::testConstructor() QKnxByteArray::fromHex("08017f0000010e57")); } +void tst_QKnxNetIpDescriptionRequest::testValidationDescriptionRequest() +{ + { + auto frame = QKnxNetIpDescriptionRequestProxy::builder() + .setControlEndpoint(QKnxNetIpHpaiProxy::builder() + .setHostAddress(QHostAddress::LocalHost) + .setPort(3671).create()) + .create(); + QCOMPARE(frame.isValid(), true); + const QKnxNetIpDescriptionRequestProxy view(frame); + QCOMPARE(view.isValid(), true); + // setting an invalid service type that should invalidate the proxy + frame.setServiceType(QKnxNetIp::ServiceType::TunnelingFeatureSet); + QCOMPARE(view.controlEndpoint().isValid(), true); + QCOMPARE(view.isValid(), false); + } + { + auto ctrlEndpoint = QKnxNetIpHpaiProxy::builder().create(); + QCOMPARE(ctrlEndpoint.isValid(), true); + QKnxNetIpFrame frame = { QKnxNetIp::ServiceType::DescriptionRequest, + ctrlEndpoint.bytes() }; + const QKnxNetIpDescriptionRequestProxy view(frame); + QCOMPARE(view.controlEndpoint().isValid(), true); + QCOMPARE(view.isValid(), true); + } + { + auto ctrlEndpoint = QKnxNetIpHpaiProxy::builder() + // setting invalid host protocol + .setHostProtocol(QKnxNetIp::HostProtocol(0x12)) + .setHostAddress(QHostAddress::LocalHost) + .setPort(3671) + .create(); + QCOMPARE(ctrlEndpoint.isValid(), false); + QKnxNetIpFrame frame = { QKnxNetIp::ServiceType::DescriptionRequest, + ctrlEndpoint.bytes() }; + const QKnxNetIpDescriptionRequestProxy view(frame); + QCOMPARE(view.controlEndpoint().isValid(), false); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QCOMPARE(view.isValid(), false); +#else + // TODO: request proxy validation should not accept an invalid HPAI + QCOMPARE(view.isValid(), true); +#endif + } +} + void tst_QKnxNetIpDescriptionRequest::testDebugStream() { struct DebugHandler -- cgit v1.2.3