diff options
author | Andrew O'Doherty <andrew.odoherty@qt.io> | 2018-10-10 17:04:24 +0200 |
---|---|---|
committer | Andrew O'Doherty <andrew.odoherty@qt.io> | 2018-10-25 11:41:52 +0000 |
commit | 4eab58f95441acad7fb90bb698052e798a5a1430 (patch) | |
tree | 3e29db610dc0e02fc2819be909edf686d8e63500 | |
parent | 38c2d240cdc638970a69f10fe329f5e70d6576d7 (diff) |
Extend autotest tst_QKnxNetIpDescriptionRequest
Change-Id: Ia40e8afee1edfc1d5a240e6f7352475ddc9a0453
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
-rw-r--r-- | tests/auto/qknxnetipdescriptionrequest/tst_qknxnetipdescriptionrequest.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
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 |