From e35346cf70598c47a456946327927643910aa277 Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Thu, 16 Jun 2016 12:46:42 +0200 Subject: Add test to verify that bools get properly converted. This test passes and seems to indicate that the signal-delivery has an issue, or that the issue lies on the JavaScript side. Change-Id: Ic2436147b3af49d35dc556da57aed3e54408f1f9 Task-number: QTBUG-54074 Reviewed-by: Frederik Gladhorn --- tests/auto/webchannel/tst_webchannel.cpp | 28 ++++++++++++++++++++++++++++ tests/auto/webchannel/tst_webchannel.h | 5 +++++ 2 files changed, 33 insertions(+) diff --git a/tests/auto/webchannel/tst_webchannel.cpp b/tests/auto/webchannel/tst_webchannel.cpp index 7ae6f78..71779b9 100644 --- a/tests/auto/webchannel/tst_webchannel.cpp +++ b/tests/auto/webchannel/tst_webchannel.cpp @@ -192,6 +192,7 @@ TestWebChannel::TestWebChannel(QObject *parent) : QObject(parent) , m_dummyTransport(new DummyTransport(this)) , m_lastInt(0) + , m_lastBool(false) , m_lastDouble(0) { } @@ -200,6 +201,7 @@ TestWebChannel::~TestWebChannel() { } + int TestWebChannel::readInt() const { return m_lastInt; @@ -211,6 +213,17 @@ void TestWebChannel::setInt(int i) emit lastIntChanged(); } +bool TestWebChannel::readBool() const +{ + return m_lastBool; +} + +void TestWebChannel::setBool(bool b) +{ + m_lastBool = b; + emit lastBoolChanged(); +} + double TestWebChannel::readDouble() const { return m_lastDouble; @@ -483,6 +496,14 @@ void TestWebChannel::testInvokeMethodConversion() channel.d_func()->publisher->invokeMethod(this, method, args); QCOMPARE(m_lastInt, args.at(0).toInt()); } + { + int method = metaObject()->indexOfMethod("setBool(bool)"); + QVERIFY(method != -1); + QJsonArray args; + args.append(QJsonValue(!m_lastBool)); + channel.d_func()->publisher->invokeMethod(this, method, args); + QCOMPARE(m_lastBool, args.at(0).toBool()); + } { int method = metaObject()->indexOfMethod("setDouble(double)"); QVERIFY(method != -1); @@ -534,6 +555,13 @@ void TestWebChannel::testSetPropertyConversion() channel.d_func()->publisher->setProperty(this, property, QJsonValue(42)); QCOMPARE(m_lastInt, 42); } + { + int property = metaObject()->indexOfProperty("lastBool"); + QVERIFY(property != -1); + bool newValue = !m_lastBool; + channel.d_func()->publisher->setProperty(this, property, QJsonValue(newValue)); + QCOMPARE(m_lastBool, newValue); + } { int property = metaObject()->indexOfProperty("lastDouble"); QVERIFY(property != -1); diff --git a/tests/auto/webchannel/tst_webchannel.h b/tests/auto/webchannel/tst_webchannel.h index 5a9fa11..3469d41 100644 --- a/tests/auto/webchannel/tst_webchannel.h +++ b/tests/auto/webchannel/tst_webchannel.h @@ -241,6 +241,7 @@ class TestWebChannel : public QObject Q_OBJECT Q_PROPERTY(int lastInt READ readInt WRITE setInt NOTIFY lastIntChanged); + Q_PROPERTY(bool lastBool READ readBool WRITE setBool NOTIFY lastBoolChanged); Q_PROPERTY(double lastDouble READ readDouble WRITE setDouble NOTIFY lastDoubleChanged); Q_PROPERTY(QVariant lastVariant READ readVariant WRITE setVariant NOTIFY lastVariantChanged); Q_PROPERTY(QJsonValue lastJsonValue READ readJsonValue WRITE setJsonValue NOTIFY lastJsonValueChanged); @@ -252,6 +253,8 @@ public: int readInt() const; Q_INVOKABLE void setInt(int i); + bool readBool() const; + Q_INVOKABLE void setBool(bool b); double readDouble() const; Q_INVOKABLE void setDouble(double d); QVariant readVariant() const; @@ -265,6 +268,7 @@ public: signals: void lastIntChanged(); + void lastBoolChanged(); void lastDoubleChanged(); void lastVariantChanged(); void lastJsonValueChanged(); @@ -293,6 +297,7 @@ private: DummyTransport *m_dummyTransport; int m_lastInt; + bool m_lastBool; double m_lastDouble; QVariant m_lastVariant; QJsonValue m_lastJsonValue; -- cgit v1.2.1