summaryrefslogtreecommitdiff
path: root/tests/auto/core/ivigenerator/projects/org-example-echo-qtro/server_qtro_test/tst_echoqtro.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/core/ivigenerator/projects/org-example-echo-qtro/server_qtro_test/tst_echoqtro.cpp')
-rw-r--r--tests/auto/core/ivigenerator/projects/org-example-echo-qtro/server_qtro_test/tst_echoqtro.cpp828
1 files changed, 701 insertions, 127 deletions
diff --git a/tests/auto/core/ivigenerator/projects/org-example-echo-qtro/server_qtro_test/tst_echoqtro.cpp b/tests/auto/core/ivigenerator/projects/org-example-echo-qtro/server_qtro_test/tst_echoqtro.cpp
index 9cb5ef6..7452a3e 100644
--- a/tests/auto/core/ivigenerator/projects/org-example-echo-qtro/server_qtro_test/tst_echoqtro.cpp
+++ b/tests/auto/core/ivigenerator/projects/org-example-echo-qtro/server_qtro_test/tst_echoqtro.cpp
@@ -31,6 +31,7 @@
#include "echoplugin.h"
#include "server.h"
#include "echo.h"
+#include "echozoned.h"
#define WAIT_AND_COMPARE(spy, value) \
if (spy.count() == !value) \
@@ -38,6 +39,8 @@ if (spy.count() == !value) \
QCOMPARE(spy.count(), value); \
+static QString frontLeftZone = QStringLiteral("FrontLeft");
+
EchoQtroTest::EchoQtroTest()
:QObject()
{
@@ -51,54 +54,58 @@ void EchoQtroTest::cleanup()
void EchoQtroTest::testInit()
{
Echo client;
- QVERIFY(client.startAutoDiscovery()==QIviAbstractFeature::ProductionBackendLoaded);
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
QCOMPARE(client.lastMessage(), QString());
QCOMPARE(client.intValue(), 0);
QCOMPARE(client.floatValue1(), qreal(0.0));
QCOMPARE(client.floatValue2(), qreal(0.0));
QCOMPARE(client.stringValue(), QString());
- QCOMPARE(client.contactList(), QVariantList());
+ QCOMPARE(client.comboList(), QVariantList());
QCOMPARE(client.contact(), Contact());
QCOMPARE(client.weekDay(), EchoModule::WeekDay());
+ QCOMPARE(client.testEnum(), EchoModule::FirstEnumValue);
Server server;
//test initial values
- QCOMPARE(server.m_service.lastMessage(), QString());
- QCOMPARE(server.m_service.intValue(), 0);
- QCOMPARE(server.m_service.floatValue1(), qreal(0.0));
- QCOMPARE(server.m_service.floatValue2(), qreal(0.0));
- QCOMPARE(server.m_service.stringValue(), QString());
- QCOMPARE(server.m_service.contactList(), QVariantList());
- QCOMPARE(server.m_service.contact(), Contact());
- QCOMPARE(server.m_service.weekDay(), EchoModule::WeekDay());
-
- QString lastMessageTestValue("this is the last message");
+ QCOMPARE(server.m_echoService.lastMessage(), QString());
+ QCOMPARE(server.m_echoService.intValue(), 0);
+ QCOMPARE(server.m_echoService.floatValue1(), qreal(0.0));
+ QCOMPARE(server.m_echoService.floatValue2(), qreal(0.0));
+ QCOMPARE(server.m_echoService.stringValue(), QString());
+ QCOMPARE(server.m_echoService.comboList(), QVariantList());
+ QCOMPARE(server.m_echoService.contact(), Contact());
+ QCOMPARE(server.m_echoService.weekDay(), EchoModule::WeekDay());
+ QCOMPARE(server.m_echoService.testEnum(), EchoModule::FirstEnumValue);
+
+ QLatin1String lastMessageTestValue("this is the last message");
int intValueTestValue(789);
- float floatValue1TestValue(3.14);
- float floatValue2TestValue(2.71);
- QString stringValueTestValue("test string");
- QVariantList contactListTestValue(
- { QVariant::fromValue<Contact>(Contact("Mr A.", 20, false)),
- QVariant::fromValue<Contact>(Contact("Mr B.", 40, true)) });
- Contact contactTestValue("Nemo", 47, true);
+ qreal floatValue1TestValue(3.14);
+ qreal floatValue2TestValue(2.71);
+ QLatin1String stringValueTestValue("test string");
+ QVariantList comboListTestValue(
+ { QVariant::fromValue<Combo>(Combo(Contact("Mr A.", 20, false, "foo"), EchoModule::Monday)),
+ QVariant::fromValue<Combo>(Combo(Contact("Mr B.", 40, true, "bar"), EchoModule::Wednesday)) });
+ Contact contactTestValue(QStringLiteral("Nemo"), 47, true, 1);
EchoModule::WeekDay weekDayTestValue = EchoModule::Wednesday;
-
-
- server.m_service.setLastMessage(lastMessageTestValue);
- server.m_service.setIntValue(intValueTestValue);
- server.m_service.setFloatValue1(floatValue1TestValue);
- server.m_service.setFloatValue2(floatValue2TestValue);
- server.m_service.setStringValue(stringValueTestValue);
- server.m_service.setContactList(contactListTestValue);
- server.m_service.setContact(contactTestValue);
- server.m_service.setWeekDay(weekDayTestValue);
+ EchoModule::TestEnum testEnumTestValue = EchoModule::SecondEnumValue;
+
+ server.m_echoService.setLastMessage(lastMessageTestValue);
+ server.m_echoService.setIntValue(intValueTestValue);
+ server.m_echoService.setFloatValue1(floatValue1TestValue);
+ server.m_echoService.setFloatValue2(floatValue2TestValue);
+ server.m_echoService.setStringValue(stringValueTestValue);
+ server.m_echoService.setComboList(comboListTestValue);
+ server.m_echoService.setContact(contactTestValue);
+ server.m_echoService.setWeekDay(weekDayTestValue);
+ server.m_echoService.setTestEnum(testEnumTestValue);
QVERIFY(!client.isInitialized());
QCOMPARE(client.error(), QIviAbstractFeature::NoError);
//wait until the client has connected and initial values are set
+ QSignalSpy lastMessageChangedSpy(&client, SIGNAL(lastMessageChanged(QString)));
QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
QVERIFY(server.start());
@@ -107,17 +114,150 @@ void EchoQtroTest::testInit()
WAIT_AND_COMPARE(initSpy, 1);
QVERIFY(client.isInitialized());
+ //make sure the change signal is only emitted once with the correct value
+ QCOMPARE(lastMessageChangedSpy.count(), 1);
+ QCOMPARE(lastMessageChangedSpy.at(0).at(0).toString(), lastMessageTestValue);
+
//test that client gets the same values that were set at the server before connection was established
- QCOMPARE(client.lastMessage(),lastMessageTestValue);
+ QCOMPARE(client.lastMessage(), lastMessageTestValue);
QCOMPARE(client.intValue(), intValueTestValue);
QCOMPARE(client.floatValue1(), floatValue1TestValue);
QCOMPARE(client.floatValue2(), floatValue2TestValue);
QCOMPARE(client.stringValue(), stringValueTestValue);
- QVariantList contactList = client.contactList();
- QCOMPARE(contactList[0].value<Contact>(), contactListTestValue[0].value<Contact>());
- QCOMPARE(contactList[1].value<Contact>(), contactListTestValue[1].value<Contact>());
+ QVariantList comboList = client.comboList();
+ QCOMPARE(comboList[0].value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(comboList[1].value<Combo>(), comboListTestValue[1].value<Combo>());
QCOMPARE(client.contact(), contactTestValue);
QCOMPARE(client.weekDay(), weekDayTestValue);
+ QCOMPARE(client.testEnum(), testEnumTestValue);
+
+
+ lastMessageChangedSpy.clear();
+ //test that a second instance is also initialized with the correct values
+ Echo client2;
+
+ QSignalSpy lastMessageChangedSpy2(&client2, SIGNAL(lastMessageChanged(QString)));
+ QSignalSpy initSpy2(&client2, SIGNAL(isInitializedChanged(bool)));
+
+ QVERIFY(client2.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ QVERIFY(initSpy2.isValid());
+ WAIT_AND_COMPARE(initSpy2, 1);
+ QVERIFY(client2.isInitialized());
+
+ //make sure the change signal is only emitted once with the correct value
+ QCOMPARE(lastMessageChangedSpy2.count(), 1);
+ QCOMPARE(lastMessageChangedSpy2.at(0).at(0).toString(), lastMessageTestValue);
+
+ //make sure the first instance doesn't emit the change signal again
+ QCOMPARE(lastMessageChangedSpy.count(), 0);
+}
+
+void EchoQtroTest::testZonedInit()
+{
+ EchoZoned client;
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //Just compare a few of them
+ QCOMPARE(client.intValue(), 0);
+ QCOMPARE(client.varValue(), QVariant());
+ QCOMPARE(client.stringValue(), QString());
+ QCOMPARE(client.airflowDirection(), EchoModule::AirflowDirections());
+ QCOMPARE(client.contact(), Contact());
+ QCOMPARE(client.comboList(), QVariantList());
+ QCOMPARE(client.UPPERCASEPROPERTY(), qreal(0.0));
+ QCOMPARE(client.testEnum(), EchoModule::FirstEnumValue);
+ QCOMPARE(client.availableZones(), QStringList());
+
+ Server server;
+
+ //test initial values
+ QCOMPARE(server.m_echoZonedService.intValue(QString()), 0);
+ QCOMPARE(server.m_echoZonedService.varValue(QString()), QVariant());
+ QCOMPARE(server.m_echoZonedService.stringValue(QString()), QString());
+ QCOMPARE(server.m_echoZonedService.airflowDirection(QString()), EchoModule::AirflowDirections());
+ QCOMPARE(server.m_echoZonedService.contact(QString()), Contact());
+ QCOMPARE(server.m_echoZonedService.comboList(QString()), QVariantList());
+ QCOMPARE(server.m_echoZonedService.UPPERCASEPROPERTY(QString()), qreal(0.0));
+ QCOMPARE(server.m_echoZonedService.testEnum(QString()), EchoModule::FirstEnumValue);
+
+ int intValueTestValue(789);
+ QVariant varValueTestValue(789);
+ qreal floatValueTestValue(3.14);
+ QLatin1String stringValueTestValue("test string");
+ QVariantList comboListTestValue(
+ { QVariant::fromValue<Combo>(Combo(Contact("Mr A.", 20, false, "foo"), EchoModule::Monday)),
+ QVariant::fromValue<Combo>(Combo(Contact("Mr B.", 40, true, "bar"), EchoModule::Wednesday)) });
+ Contact contactTestValue(QStringLiteral("Nemo"), 47, true, 1);
+ EchoModule::AirflowDirections airflowTestValue = EchoModule::Windshield;
+ EchoModule::TestEnum testEnumTestValue = EchoModule::SecondEnumValue;
+
+
+ server.m_echoZonedService.setIntValue(intValueTestValue, QString());
+ server.m_echoZonedService.setVarValue(varValueTestValue, QString());
+ server.m_echoZonedService.setStringValue(stringValueTestValue, QString());
+
+ server.m_echoZonedService.setAirflowDirection(airflowTestValue, frontLeftZone);
+ server.m_echoZonedService.setContact(contactTestValue, frontLeftZone);
+ server.m_echoZonedService.setComboList(comboListTestValue, frontLeftZone);
+ server.m_echoZonedService.setUPPERCASEPROPERTY(floatValueTestValue, frontLeftZone);
+ server.m_echoZonedService.setTestEnum(testEnumTestValue, frontLeftZone);
+
+
+ QVERIFY(!client.isInitialized());
+ QCOMPARE(client.error(), QIviAbstractFeature::NoError);
+
+ //wait until the client has connected and initial values are set
+ QSignalSpy stringValueChangedSpy(&client, SIGNAL(stringValueChanged(QString)));
+ QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
+ QSignalSpy availableZonesSpy(&client, SIGNAL(availableZonesChanged(QStringList)));
+
+ QVERIFY(server.start());
+
+ QVERIFY(initSpy.isValid());
+ WAIT_AND_COMPARE(initSpy, 1);
+ QVERIFY(client.isInitialized());
+ QVERIFY(availableZonesSpy.count());
+ QCOMPARE(client.availableZones(), QStringList({"FrontLeft"}));
+
+ //make sure the change signal is only emitted once with the correct value
+ QCOMPARE(stringValueChangedSpy.count(), 1);
+ QCOMPARE(stringValueChangedSpy.at(0).at(0).toString(), stringValueTestValue);
+
+ //test that client gets the same values that were set at the server before connection was established
+ QCOMPARE(client.intValue(), intValueTestValue);
+ QCOMPARE(client.varValue(), varValueTestValue);
+ QCOMPARE(client.stringValue(), stringValueTestValue);
+
+ EchoZoned *zone = qobject_cast<EchoZoned*>(client.zoneAt(frontLeftZone));
+ QVERIFY(zone);
+ QCOMPARE(zone->airflowDirection(), airflowTestValue);
+ QCOMPARE(zone->contact(), contactTestValue);
+ QVariantList comboList = zone->comboList();
+ QCOMPARE(comboList[0].value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(comboList[1].value<Combo>(), comboListTestValue[1].value<Combo>());
+ QCOMPARE(zone->UPPERCASEPROPERTY(), floatValueTestValue);
+ QCOMPARE(zone->testEnum(), testEnumTestValue);
+
+ stringValueChangedSpy.clear();
+ //test that a second instance is also initialized with the correct values
+ EchoZoned client2;
+
+ QSignalSpy stringValueChangedSpy2(&client2, SIGNAL(stringValueChanged(QString)));
+ QSignalSpy initSpy2(&client2, SIGNAL(isInitializedChanged(bool)));
+
+ QVERIFY(client2.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ QVERIFY(initSpy2.isValid());
+ WAIT_AND_COMPARE(initSpy2, 1);
+ QVERIFY(client2.isInitialized());
+
+ //make sure the change signal is only emitted once with the correct value
+ QCOMPARE(stringValueChangedSpy2.count(), 1);
+ QCOMPARE(stringValueChangedSpy2.at(0).at(0).toString(), stringValueTestValue);
+
+ //make sure the first instance doesn't emit the change signal again
+ QCOMPARE(stringValueChangedSpy.count(), 0);
}
void EchoQtroTest::testReconnect()
@@ -126,36 +266,57 @@ void EchoQtroTest::testReconnect()
QVERIFY(server.start());
Echo client;
- QVERIFY(client.startAutoDiscovery()==QIviAbstractFeature::ProductionBackendLoaded);
-
- //wait until the client has connected and initial values are set
QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
WAIT_AND_COMPARE(initSpy, 1);
QVERIFY(client.isInitialized());
+ EchoZoned zonedClient;
+ QSignalSpy zonedInitSpy(&zonedClient, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(zonedInitSpy.isValid());
+ QVERIFY(zonedClient.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
+ WAIT_AND_COMPARE(zonedInitSpy, 1);
+ QVERIFY(zonedClient.isInitialized());
+
//test disconnection
QCOMPARE(client.error(), QIviAbstractFeature::NoError);
- QSignalSpy disconnectSpy(&client, SIGNAL(errorChanged(QIviAbstractFeature::Error,QString)));
+ QCOMPARE(zonedClient.error(), QIviAbstractFeature::NoError);
+ QSignalSpy disconnectSpy(&client, SIGNAL(errorChanged(QIviAbstractFeature::Error, QString)));
+ QSignalSpy zonedDisconnectSpy(&zonedClient, SIGNAL(errorChanged(QIviAbstractFeature::Error, QString)));
QVERIFY(disconnectSpy.isValid());
+ QVERIFY(zonedDisconnectSpy.isValid());
server.stop();
WAIT_AND_COMPARE(disconnectSpy, 1);
QCOMPARE(client.error(), QIviAbstractFeature::Unknown);
+ WAIT_AND_COMPARE(zonedDisconnectSpy, 1);
+ QCOMPARE(zonedClient.error(), QIviAbstractFeature::Unknown);
//test that a remote call fails on a disconnected replica
QIviPendingReply<QString> idReply = client.id();
QVERIFY(idReply.isResultAvailable() && !idReply.watcher()->isSuccessful());
+ QIviPendingReply<QString> zonedIdReply = zonedClient.id();
+ QVERIFY(zonedIdReply.isResultAvailable() && !zonedIdReply.watcher()->isSuccessful());
+
//test reconnection
- QSignalSpy reconnectSpy(&client, SIGNAL(errorChanged(QIviAbstractFeature::Error,QString)));
+ QSignalSpy reconnectSpy(&client, SIGNAL(errorChanged(QIviAbstractFeature::Error, QString)));
QVERIFY(reconnectSpy.isValid());
+ QSignalSpy zonedReconnectSpy(&zonedClient, SIGNAL(errorChanged(QIviAbstractFeature::Error, QString)));
+ QVERIFY(zonedReconnectSpy.isValid());
server.start();
WAIT_AND_COMPARE(reconnectSpy, 1);
QCOMPARE(client.error(), QIviAbstractFeature::NoError);
+ WAIT_AND_COMPARE(zonedReconnectSpy, 1);
+ QCOMPARE(zonedClient.error(), QIviAbstractFeature::NoError);
}
void EchoQtroTest::testClient2Server()
@@ -164,77 +325,173 @@ void EchoQtroTest::testClient2Server()
QVERIFY(server.start());
Echo client;
- QVERIFY(client.startAutoDiscovery()==QIviAbstractFeature::ProductionBackendLoaded);
-
-
- //wait until the client has connected and initial values are set
QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
WAIT_AND_COMPARE(initSpy, 1);
QVERIFY(client.isInitialized());
//test properties
- QSignalSpy intValueSpy(&server.m_service, SIGNAL(intValueChanged(int)));
+ QSignalSpy intValueSpy(&server.m_echoService, SIGNAL(intValueChanged(int)));
QVERIFY(intValueSpy.isValid());
int intValueTestValue = 12345;
client.setIntValue(intValueTestValue);
WAIT_AND_COMPARE(intValueSpy, 1);
- QCOMPARE(server.m_service.intValue(), intValueTestValue);
+ QCOMPARE(server.m_echoService.intValue(), intValueTestValue);
QCOMPARE(intValueSpy[0][0].toInt(), intValueTestValue);
- QSignalSpy floatValue1Spy(&server.m_service, SIGNAL(floatValue1Changed(qreal)));
+ QSignalSpy floatValue1Spy(&server.m_echoService, SIGNAL(floatValue1Changed(qreal)));
QVERIFY(floatValue1Spy.isValid());
qreal floatValue1TestValue = 1234.5678;
client.setFloatValue1(floatValue1TestValue);
WAIT_AND_COMPARE(floatValue1Spy, 1);
- QCOMPARE(server.m_service.floatValue1(), floatValue1TestValue);
+ QCOMPARE(server.m_echoService.floatValue1(), floatValue1TestValue);
QCOMPARE(floatValue1Spy[0][0].toReal(), floatValue1TestValue);
- QSignalSpy floatValue2Spy(&server.m_service, SIGNAL(floatValue2Changed(qreal)));
+ QSignalSpy floatValue2Spy(&server.m_echoService, SIGNAL(floatValue2Changed(qreal)));
QVERIFY(floatValue2Spy.isValid());
qreal floatValue2TestValue = 3.1415;
client.setFloatValue2(floatValue2TestValue);
WAIT_AND_COMPARE(floatValue2Spy, 1);
- QCOMPARE(server.m_service.floatValue2(), floatValue2TestValue);
+ QCOMPARE(server.m_echoService.floatValue2(), floatValue2TestValue);
QCOMPARE(floatValue2Spy[0][0].toReal(), floatValue2TestValue);
- QSignalSpy stringValueSpy(&server.m_service, SIGNAL(stringValueChanged(QString)));
+ QSignalSpy stringValueSpy(&server.m_echoService, SIGNAL(stringValueChanged(QString)));
QVERIFY(stringValueSpy.isValid());
- QString stringValueTestValue = "hello test";
+ QString stringValueTestValue = QStringLiteral("hello test");
client.setStringValue(stringValueTestValue);
WAIT_AND_COMPARE(stringValueSpy, 1);
- QCOMPARE(server.m_service.stringValue(), stringValueTestValue);
+ QCOMPARE(server.m_echoService.stringValue(), stringValueTestValue);
QCOMPARE(stringValueSpy[0][0].toString(), stringValueTestValue);
- QSignalSpy contactListSpy(&server.m_service, SIGNAL(contactListChanged(QVariantList)));
- QVERIFY(contactListSpy.isValid());
- QVariantList contactListTestValue(
- { QVariant::fromValue<Contact>(Contact("Mr A.", 20, false)),
- QVariant::fromValue<Contact>(Contact("Mr B.", 40, true)) });
- client.setContactList(contactListTestValue);
- WAIT_AND_COMPARE(contactListSpy, 1);
- QCOMPARE(server.m_service.contactList().count(),contactListTestValue.count());
- QCOMPARE(server.m_service.contactList()[0].value<Contact>(), contactListTestValue[0].value<Contact>());
- QCOMPARE(server.m_service.contactList()[1].value<Contact>(), contactListTestValue[1].value<Contact>());
- QVariantList signalArgs = contactListSpy[0][0].toList();
- QCOMPARE(signalArgs[0].value<Contact>(), contactListTestValue[0].value<Contact>());
- QCOMPARE(signalArgs[1].value<Contact>(), contactListTestValue[1].value<Contact>());
-
- QSignalSpy contactSpy(&server.m_service, SIGNAL(contactChanged(Contact)));
+ QSignalSpy comboListSpy(&server.m_echoService, SIGNAL(comboListChanged(QVariantList)));
+ QVERIFY(comboListSpy.isValid());
+ QVariantList comboListTestValue(
+ { QVariant::fromValue<Combo>(Combo(Contact("Mr A.", 20, false, "foo"), EchoModule::Monday)),
+ QVariant::fromValue<Combo>(Combo(Contact("Mr B.", 40, true, "bar"), EchoModule::Wednesday)) });
+ client.setComboList(comboListTestValue);
+ WAIT_AND_COMPARE(comboListSpy, 1);
+ QCOMPARE(server.m_echoService.comboList().count(),comboListTestValue.count());
+ QCOMPARE(server.m_echoService.comboList().at(0).value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(server.m_echoService.comboList().at(1).value<Combo>(), comboListTestValue[1].value<Combo>());
+ QVariantList signalArgs = comboListSpy[0][0].toList();
+ QCOMPARE(signalArgs[0].value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(signalArgs[1].value<Combo>(), comboListTestValue[1].value<Combo>());
+
+ QSignalSpy contactSpy(&server.m_echoService, SIGNAL(contactChanged(Contact)));
QVERIFY(contactSpy.isValid());
- Contact contactTestValue("Nemo", 47, true);
+ Contact contactTestValue(QStringLiteral("Nemo"), 47, true, 1);
client.setContact(contactTestValue);
WAIT_AND_COMPARE(contactSpy, 1);
- QCOMPARE(server.m_service.contact(), contactTestValue);
+ QCOMPARE(server.m_echoService.contact(), contactTestValue);
QCOMPARE(contactSpy[0][0].value<Contact>(), contactTestValue);
- QSignalSpy weekDaySpy(&server.m_service, SIGNAL(weekDayChanged(EchoModule::WeekDay)));
+ QSignalSpy weekDaySpy(&server.m_echoService, SIGNAL(weekDayChanged(EchoModule::DaysOfTheWeek)));
QVERIFY(weekDaySpy.isValid());
- EchoModule::WeekDay weekDayTestValue = EchoModule::Thursday;
+ EchoModule::DaysOfTheWeek weekDayTestValue = EchoModule::Thursday;
client.setWeekDay(weekDayTestValue);
WAIT_AND_COMPARE(weekDaySpy, 1);
- QCOMPARE(server.m_service.weekDay(), weekDayTestValue);
- QCOMPARE(weekDaySpy[0][0].value<EchoModule::WeekDay>(), weekDayTestValue);
+ QCOMPARE(server.m_echoService.weekDay(), weekDayTestValue);
+ QCOMPARE(weekDaySpy[0][0].value<EchoModule::DaysOfTheWeek>(), weekDayTestValue);
+
+ QSignalSpy testEnumSpy(&server.m_echoService, SIGNAL(testEnumChanged(EchoModule::TestEnum)));
+ QVERIFY(testEnumSpy.isValid());
+ EchoModule::TestEnum testEnumTestValue = EchoModule::SecondEnumValue;
+ client.setTestEnum(testEnumTestValue);
+ WAIT_AND_COMPARE(testEnumSpy, 1);
+ QCOMPARE(server.m_echoService.testEnum(), testEnumTestValue);
+ QCOMPARE(testEnumSpy[0][0].value<EchoModule::TestEnum>(), testEnumTestValue);
+}
+
+void EchoQtroTest::testZonedClient2Server()
+{
+ Server server;
+ QVERIFY(server.start());
+
+ EchoZoned client;
+ QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
+ WAIT_AND_COMPARE(initSpy, 1);
+ QVERIFY(client.isInitialized());
+
+ //test properties
+ QSignalSpy intValueSpy(&server.m_echoZonedService, SIGNAL(intValueChanged(int, QString)));
+ QVERIFY(intValueSpy.isValid());
+ int intValueTestValue = 12345;
+ client.setIntValue(intValueTestValue);
+ WAIT_AND_COMPARE(intValueSpy, 1);
+ QCOMPARE(server.m_echoZonedService.intValue(QString()), intValueTestValue);
+ QCOMPARE(intValueSpy[0][0].toInt(), intValueTestValue);
+ QCOMPARE(intValueSpy[0][1].toString(), QString());
+
+ QSignalSpy UPPERCASEPROPERTYSpy(&server.m_echoZonedService, SIGNAL(UPPERCASEPROPERTYChanged(qreal, QString)));
+ QVERIFY(UPPERCASEPROPERTYSpy.isValid());
+ qreal floatValueTestValue = 1234.5678;
+ client.setUPPERCASEPROPERTY(floatValueTestValue);
+ WAIT_AND_COMPARE(UPPERCASEPROPERTYSpy, 1);
+ QCOMPARE(server.m_echoZonedService.UPPERCASEPROPERTY(QString()), floatValueTestValue);
+ QCOMPARE(UPPERCASEPROPERTYSpy[0][0].toReal(), floatValueTestValue);
+ QCOMPARE(UPPERCASEPROPERTYSpy[0][1].toString(), QString());
+
+ EchoZoned *zone = qobject_cast<EchoZoned*>(client.zoneAt(frontLeftZone));
+ QVERIFY(zone);
+
+ QSignalSpy stringValueSpy(&server.m_echoZonedService, SIGNAL(stringValueChanged(QString, QString)));
+ QVERIFY(stringValueSpy.isValid());
+ QString stringValueTestValue = QStringLiteral("hello test");
+ zone->setStringValue(stringValueTestValue);
+ WAIT_AND_COMPARE(stringValueSpy, 1);
+ QCOMPARE(server.m_echoZonedService.stringValue(frontLeftZone), stringValueTestValue);
+ QCOMPARE(stringValueSpy[0][0].toString(), stringValueTestValue);
+ QCOMPARE(stringValueSpy[0][1].toString(), frontLeftZone);
+
+ QSignalSpy comboListSpy(&server.m_echoZonedService, SIGNAL(comboListChanged(QVariantList, QString)));
+ QVERIFY(comboListSpy.isValid());
+ QVariantList comboListTestValue(
+ { QVariant::fromValue<Combo>(Combo(Contact("Mr A.", 20, false, "foo"), EchoModule::Monday)),
+ QVariant::fromValue<Combo>(Combo(Contact("Mr B.", 40, true, "bar"), EchoModule::Wednesday)) });
+ zone->setComboList(comboListTestValue);
+ WAIT_AND_COMPARE(comboListSpy, 1);
+ QVariantList comboList = server.m_echoZonedService.comboList(frontLeftZone);
+ QCOMPARE(comboList.count(),comboListTestValue.count());
+ QCOMPARE(comboList.at(0).value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(comboList.at(1).value<Combo>(), comboListTestValue[1].value<Combo>());
+ QVariantList signalArgs = comboListSpy[0][0].toList();
+ QCOMPARE(signalArgs[0].value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(signalArgs[1].value<Combo>(), comboListTestValue[1].value<Combo>());
+ QCOMPARE(comboListSpy[0][1].toString(), frontLeftZone);
+
+ QSignalSpy contactSpy(&server.m_echoZonedService, SIGNAL(contactChanged(Contact, QString)));
+ QVERIFY(contactSpy.isValid());
+ Contact contactTestValue(QStringLiteral("Nemo"), 47, true, 1);
+ zone->setContact(contactTestValue);
+ WAIT_AND_COMPARE(contactSpy, 1);
+ QCOMPARE(server.m_echoZonedService.contact(frontLeftZone), contactTestValue);
+ QCOMPARE(contactSpy[0][0].value<Contact>(), contactTestValue);
+ QCOMPARE(contactSpy[0][1].toString(), frontLeftZone);
+
+ QSignalSpy airflowSpy(&server.m_echoZonedService, SIGNAL(airflowDirectionChanged(EchoModule::AirflowDirections, QString)));
+ QVERIFY(airflowSpy.isValid());
+ EchoModule::AirflowDirections airflowTestValue = EchoModule::Windshield;
+ zone->setAirflowDirection(airflowTestValue);
+ WAIT_AND_COMPARE(airflowSpy, 1);
+ QCOMPARE(server.m_echoZonedService.airflowDirection(frontLeftZone), airflowTestValue);
+ QCOMPARE(airflowSpy[0][0].value<EchoModule::AirflowDirections>(), airflowTestValue);
+ QCOMPARE(airflowSpy[0][1].toString(), frontLeftZone);
+
+ QSignalSpy testEnumSpy(&server.m_echoZonedService, SIGNAL(testEnumChanged(EchoModule::TestEnum, QString)));
+ QVERIFY(testEnumSpy.isValid());
+ EchoModule::TestEnum testEnumTestValue = EchoModule::SecondEnumValue;
+ zone->setTestEnum(testEnumTestValue);
+ WAIT_AND_COMPARE(testEnumSpy, 1);
+ QCOMPARE(server.m_echoZonedService.testEnum(frontLeftZone), testEnumTestValue);
+ QCOMPARE(testEnumSpy[0][0].value<EchoModule::TestEnum>(), testEnumTestValue);
+ QCOMPARE(testEnumSpy[0][1].toString(), frontLeftZone);
}
void EchoQtroTest::testServer2Client()
@@ -243,12 +500,12 @@ void EchoQtroTest::testServer2Client()
QVERIFY(server.start());
Echo client;
- QVERIFY(client.startAutoDiscovery()==QIviAbstractFeature::ProductionBackendLoaded);
+ QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
//wait until the client has connected and initial values are set
- QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
- QVERIFY(initSpy.isValid());
WAIT_AND_COMPARE(initSpy, 1);
QVERIFY(client.isInitialized());
@@ -256,7 +513,7 @@ void EchoQtroTest::testServer2Client()
QSignalSpy intValueSpy(&client, SIGNAL(intValueChanged(int)));
QVERIFY(intValueSpy.isValid());
int intValueTestValue = 12345;
- server.m_service.setIntValue(intValueTestValue);
+ server.m_echoService.setIntValue(intValueTestValue);
WAIT_AND_COMPARE(intValueSpy, 1);
QCOMPARE(client.intValue(), intValueTestValue);
QCOMPARE(intValueSpy[0][0].toInt(), intValueTestValue);
@@ -264,7 +521,7 @@ void EchoQtroTest::testServer2Client()
QSignalSpy floatValue1Spy(&client, SIGNAL(floatValue1Changed(qreal)));
QVERIFY(floatValue1Spy.isValid());
qreal floatValue1TestValue = 1234.5678;
- server.m_service.setFloatValue1(floatValue1TestValue);
+ server.m_echoService.setFloatValue1(floatValue1TestValue);
WAIT_AND_COMPARE(floatValue1Spy, 1);
QCOMPARE(client.floatValue1(), floatValue1TestValue);
QCOMPARE(floatValue1Spy[0][0].toReal(), floatValue1TestValue);
@@ -272,48 +529,139 @@ void EchoQtroTest::testServer2Client()
QSignalSpy floatValue2Spy(&client, SIGNAL(floatValue2Changed(qreal)));
QVERIFY(floatValue2Spy.isValid());
qreal floatValue2TestValue = 234.678;
- server.m_service.setFloatValue2(floatValue2TestValue);
+ server.m_echoService.setFloatValue2(floatValue2TestValue);
WAIT_AND_COMPARE(floatValue2Spy, 1);
QCOMPARE(client.floatValue2(), floatValue2TestValue);
QCOMPARE(floatValue2Spy[0][0].toReal(), floatValue2TestValue);
QSignalSpy stringValueSpy(&client, SIGNAL(stringValueChanged(QString)));
QVERIFY(stringValueSpy.isValid());
- QString stringValueTestValue = QString("hello test");
- server.m_service.setStringValue(stringValueTestValue);
+ QLatin1String stringValueTestValue("hello test");
+ server.m_echoService.setStringValue(stringValueTestValue);
WAIT_AND_COMPARE(stringValueSpy, 1);
QCOMPARE(client.stringValue(), stringValueTestValue);
QCOMPARE(stringValueSpy[0][0].toString(), stringValueTestValue);
- QSignalSpy contactListSpy(&client, SIGNAL(contactListChanged(QVariantList)));
- QVERIFY(contactListSpy.isValid());
- QVariantList contactListTestValue(
- { QVariant::fromValue<Contact>(Contact("Mr A.", 20, false)),
- QVariant::fromValue<Contact>(Contact("Mr B.", 40, true)) });
- server.m_service.setContactList(contactListTestValue);
- WAIT_AND_COMPARE(contactListSpy, 1);
- QCOMPARE(client.contactList().count(),contactListTestValue.count());
- QCOMPARE(client.contactList()[0].value<Contact>(), contactListTestValue[0].value<Contact>());
- QCOMPARE(client.contactList()[1].value<Contact>(), contactListTestValue[1].value<Contact>());
- QVariantList signalArgs = contactListSpy[0][0].toList();
- QCOMPARE(signalArgs[0].value<Contact>(), contactListTestValue[0].value<Contact>());
- QCOMPARE(signalArgs[1].value<Contact>(), contactListTestValue[1].value<Contact>());
+ QSignalSpy comboListSpy(&client, SIGNAL(comboListChanged(QVariantList)));
+ QVERIFY(comboListSpy.isValid());
+ QVariantList comboListTestValue(
+ { QVariant::fromValue<Combo>(Combo(Contact("Mr A.", 20, false, "foo"), EchoModule::Monday)),
+ QVariant::fromValue<Combo>(Combo(Contact("Mr B.", 40, true, "bar"), EchoModule::Wednesday)) });
+ server.m_echoService.setComboList(comboListTestValue);
+ WAIT_AND_COMPARE(comboListSpy, 1);
+ QCOMPARE(client.comboList().count(),comboListTestValue.count());
+ QCOMPARE(client.comboList().at(0).value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(client.comboList().at(1).value<Combo>(), comboListTestValue[1].value<Combo>());
+ QVariantList signalArgs = comboListSpy[0][0].toList();
+ QCOMPARE(signalArgs[0].value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(signalArgs[1].value<Combo>(), comboListTestValue[1].value<Combo>());
QSignalSpy contactSpy(&client, SIGNAL(contactChanged(Contact)));
QVERIFY(contactSpy.isValid());
- Contact contactTestValue("Nemo", 47, true);
- server.m_service.setContact(contactTestValue);
+ Contact contactTestValue(QStringLiteral("Nemo"), 47, true, 1);
+ server.m_echoService.setContact(contactTestValue);
WAIT_AND_COMPARE(contactSpy, 1);
QCOMPARE(client.contact(), contactTestValue);
QCOMPARE(contactSpy[0][0].value<Contact>(), contactTestValue);
- QSignalSpy weekDaySpy(&client, SIGNAL(weekDayChanged(EchoModule::WeekDay)));
+ QSignalSpy weekDaySpy(&client, SIGNAL(weekDayChanged(EchoModule::DaysOfTheWeek)));
QVERIFY(weekDaySpy.isValid());
EchoModule::WeekDay weekDayTestValue = EchoModule::Friday;
- server.m_service.setWeekDay(weekDayTestValue);
+ server.m_echoService.setWeekDay(weekDayTestValue);
WAIT_AND_COMPARE(weekDaySpy, 1);
+
QCOMPARE(client.weekDay(), weekDayTestValue);
- QCOMPARE(weekDaySpy[0][0].value<EchoModule::WeekDay>(), weekDayTestValue);
+ QCOMPARE(weekDaySpy[0][0].value<EchoModule::DaysOfTheWeek>(), weekDayTestValue);
+
+ QSignalSpy testEnumSpy(&client, SIGNAL(testEnumChanged(EchoModule::TestEnum)));
+ QVERIFY(testEnumSpy.isValid());
+ EchoModule::TestEnum testEnumTestValue = EchoModule::SecondEnumValue;
+ server.m_echoService.setTestEnum(testEnumTestValue);
+ WAIT_AND_COMPARE(testEnumSpy, 1);
+ QCOMPARE(client.testEnum(), testEnumTestValue);
+ QCOMPARE(testEnumSpy[0][0].value<EchoModule::TestEnum>(), testEnumTestValue);
+}
+
+void EchoQtroTest::testZonedServer2Client()
+{
+ Server server;
+ QVERIFY(server.start());
+
+ EchoZoned client;
+ QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
+ WAIT_AND_COMPARE(initSpy, 1);
+ QVERIFY(client.isInitialized());
+
+ //test properties
+ QSignalSpy intValueSpy(&client, SIGNAL(intValueChanged(int)));
+ QVERIFY(intValueSpy.isValid());
+ int intValueTestValue = 12345;
+ server.m_echoZonedService.setIntValue(intValueTestValue, QString());
+ WAIT_AND_COMPARE(intValueSpy, 1);
+ QCOMPARE(client.intValue(), intValueTestValue);
+ QCOMPARE(intValueSpy[0][0].toInt(), intValueTestValue);
+
+ QSignalSpy UPPERCASEPROPERTYSpy(&client, SIGNAL(UPPERCASEPROPERTYChanged(qreal)));
+ QVERIFY(UPPERCASEPROPERTYSpy.isValid());
+ qreal floatValueTestValue = 1234.5678;
+ server.m_echoZonedService.setUPPERCASEPROPERTY(floatValueTestValue, QString());
+ WAIT_AND_COMPARE(UPPERCASEPROPERTYSpy, 1);
+ QCOMPARE(client.UPPERCASEPROPERTY(), floatValueTestValue);
+ QCOMPARE(UPPERCASEPROPERTYSpy[0][0].toReal(), floatValueTestValue);
+
+ EchoZoned *zone = qobject_cast<EchoZoned*>(client.zoneAt(frontLeftZone));
+ QVERIFY(zone);
+
+ QSignalSpy stringValueSpy(zone, SIGNAL(stringValueChanged(QString)));
+ QVERIFY(stringValueSpy.isValid());
+ QString stringValueTestValue = QStringLiteral("hello test");
+ server.m_echoZonedService.setStringValue(stringValueTestValue, frontLeftZone);
+ WAIT_AND_COMPARE(stringValueSpy, 1);
+ QCOMPARE(zone->stringValue(), stringValueTestValue);
+ QCOMPARE(stringValueSpy[0][0].toString(), stringValueTestValue);
+
+ QSignalSpy comboListSpy(zone, SIGNAL(comboListChanged(QVariantList)));
+ QVERIFY(comboListSpy.isValid());
+ QVariantList comboListTestValue(
+ { QVariant::fromValue<Combo>(Combo(Contact("Mr A.", 20, false, "foo"), EchoModule::Thursday)),
+ QVariant::fromValue<Combo>(Combo(Contact("Mr B.", 40, true, "bar"), EchoModule::Tuesday)) });
+ server.m_echoZonedService.setComboList(comboListTestValue, frontLeftZone);
+ WAIT_AND_COMPARE(comboListSpy, 1);
+ QVariantList comboList = zone->comboList();
+ QCOMPARE(comboList.count(), comboListTestValue.count());
+ QCOMPARE(comboList.at(0).value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(comboList.at(1).value<Combo>(), comboListTestValue[1].value<Combo>());
+ QVariantList signalArgs = comboListSpy[0][0].toList();
+ QCOMPARE(signalArgs[0].value<Combo>(), comboListTestValue[0].value<Combo>());
+ QCOMPARE(signalArgs[1].value<Combo>(), comboListTestValue[1].value<Combo>());
+
+ QSignalSpy contactSpy(zone, SIGNAL(contactChanged(Contact)));
+ QVERIFY(contactSpy.isValid());
+ Contact contactTestValue(QStringLiteral("Nemo"), 47, true, 1);
+ server.m_echoZonedService.setContact(contactTestValue, frontLeftZone);
+ WAIT_AND_COMPARE(contactSpy, 1);
+ QCOMPARE(zone->contact(), contactTestValue);
+ QCOMPARE(contactSpy[0][0].value<Contact>(), contactTestValue);
+
+ QSignalSpy airflowSpy(zone, SIGNAL(airflowDirectionChanged(EchoModule::AirflowDirections)));
+ QVERIFY(airflowSpy.isValid());
+ EchoModule::AirflowDirections airflowTestValue = EchoModule::Windshield;
+ server.m_echoZonedService.setAirflowDirection(airflowTestValue, frontLeftZone);
+ WAIT_AND_COMPARE(airflowSpy, 1);
+ QCOMPARE(zone->airflowDirection(), airflowTestValue);
+ QCOMPARE(airflowSpy[0][0].value<EchoModule::AirflowDirections>(), airflowTestValue);
+
+ QSignalSpy testEnumSpy(zone, SIGNAL(testEnumChanged(EchoModule::TestEnum)));
+ QVERIFY(testEnumSpy.isValid());
+ EchoModule::TestEnum testEnumTestValue = EchoModule::SecondEnumValue;
+ server.m_echoZonedService.setTestEnum(testEnumTestValue, frontLeftZone);
+ WAIT_AND_COMPARE(testEnumSpy, 1);
+ QCOMPARE(zone->testEnum(), testEnumTestValue);
+ QCOMPARE(testEnumSpy[0][0].value<EchoModule::TestEnum>(), testEnumTestValue);
}
void EchoQtroTest::testSlots()
@@ -322,78 +670,126 @@ void EchoQtroTest::testSlots()
server.start();
Echo client;
- client.startAutoDiscovery();
+ QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
//wait until the client has connected and initial values are set
- QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
- QVERIFY(initSpy.isValid());
WAIT_AND_COMPARE(initSpy, 1);
QVERIFY(client.isInitialized());
//test slots by calling them on the client
- QSignalSpy echoSpy(&server.m_service, SIGNAL(echoSlotCalled(const QString&)));
+ QSignalSpy echoSpy(&server.m_echoService, SIGNAL(echoSlotCalled(const QString&)));
QVERIFY(echoSpy.isValid());
- QString echoTestValue("this will be echoed");
+ QLatin1String echoTestValue("this will be echoed");
QIviPendingReply<QString> echoReply = client.echo(echoTestValue);
QSignalSpy echoReplySpy(echoReply.watcher(), SIGNAL(replySuccess()));
WAIT_AND_COMPARE(echoReplySpy, 1);
QCOMPARE(echoReply.reply(), echoTestValue);
- QCOMPARE(echoSpy.count(),1);
+ QCOMPARE(echoSpy.count(), 1);
QCOMPARE(echoSpy[0][0].toString(), echoTestValue);
- QSignalSpy idSpy(&server.m_service, SIGNAL(idSlotCalled()));
+ QSignalSpy idSpy(&server.m_echoService, SIGNAL(idSlotCalled()));
QVERIFY(idSpy.isValid());
QIviPendingReply<QString> idReply = client.id();
QSignalSpy idReplySpy(idReply.watcher(), SIGNAL(replySuccess()));
WAIT_AND_COMPARE(idReplySpy, 1);
- QCOMPARE(idReply.reply(), server.m_service.m_testId);
- QCOMPARE(idSpy.count(),1);
+ QCOMPARE(idReply.reply(), server.m_echoService.m_testId);
+ QCOMPARE(idSpy.count(), 1);
- QSignalSpy getComboSpy(&server.m_service, SIGNAL(getComboSlotCalled()));
+ QSignalSpy getComboSpy(&server.m_echoService, SIGNAL(getComboSlotCalled()));
QVERIFY(getComboSpy.isValid());
QIviPendingReply<Combo> comboReply = client.getCombo();
QSignalSpy comboReplySpy(comboReply.watcher(), SIGNAL(replySuccess()));
WAIT_AND_COMPARE(comboReplySpy, 1);
- QCOMPARE(comboReply.reply(), server.m_service.m_testCombo);
- QCOMPARE(getComboSpy.count(),1);
+ QCOMPARE(comboReply.reply(), server.m_echoService.m_testCombo);
+ QCOMPARE(getComboSpy.count(), 1);
- QSignalSpy voidSlotSpy(&server.m_service, SIGNAL(voidSlotCalled()));
+ QSignalSpy voidSlotSpy(&server.m_echoService, SIGNAL(voidSlotCalled()));
QVERIFY(voidSlotSpy.isValid());
client.voidSlot();
WAIT_AND_COMPARE(voidSlotSpy, 1);
- QSignalSpy voidSlot2Spy(&server.m_service, SIGNAL(voidSlot2Called(int)));
+ QSignalSpy voidSlot2Spy(&server.m_echoService, SIGNAL(voidSlot2Called(int)));
int voidSlot2TestValue = 776;
QVERIFY(voidSlot2Spy.isValid());
client.voidSlot2(voidSlot2TestValue);
voidSlot2Spy.wait(1000);
- QCOMPARE(voidSlot2Spy.count(),1);
+ QCOMPARE(voidSlot2Spy.count(), 1);
QCOMPARE(voidSlot2Spy[0][0].toInt(), voidSlot2TestValue);
}
-void EchoQtroTest::testMultipleSlotCalls()
+void EchoQtroTest::testZonedSlots()
{
Server server;
server.start();
- Echo client;
- client.startAutoDiscovery();
+ EchoZoned client;
+ QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
//wait until the client has connected and initial values are set
+ WAIT_AND_COMPARE(initSpy, 1);
+ QVERIFY(client.isInitialized());
+
+ //test slots by calling them on the client
+ QSignalSpy echoSpy(&server.m_echoZonedService, SIGNAL(echoSlotCalled(QString, QString)));
+ QVERIFY(echoSpy.isValid());
+ QLatin1String echoTestValue("this will be echoed");
+ QIviPendingReply<QString> echoReply = client.echo(echoTestValue);
+ QSignalSpy echoReplySpy(echoReply.watcher(), SIGNAL(replySuccess()));
+ WAIT_AND_COMPARE(echoReplySpy, 1);
+ QCOMPARE(echoReply.reply(), echoTestValue);
+ QCOMPARE(echoSpy.count(), 1);
+ QCOMPARE(echoSpy[0][0].toString(), echoTestValue);
+ QCOMPARE(echoSpy[0][1].toString(), QString());
+
+ QSignalSpy idSpy(&server.m_echoZonedService, SIGNAL(idSlotCalled(QString)));
+ QVERIFY(idSpy.isValid());
+ QIviPendingReply<QString> idReply = client.id();
+ QSignalSpy idReplySpy(idReply.watcher(), SIGNAL(replySuccess()));
+ WAIT_AND_COMPARE(idReplySpy, 1);
+ QCOMPARE(idReply.reply(), server.m_echoService.m_testId);
+ QCOMPARE(idSpy.count(), 1);
+ QCOMPARE(idSpy[0][0].toString(), QString());
+
+ EchoZoned *zone = qobject_cast<EchoZoned*>(client.zoneAt(frontLeftZone));
+ QVERIFY(zone);
+
+ QSignalSpy getComboSpy(&server.m_echoZonedService, SIGNAL(getComboSlotCalled(QString)));
+ QVERIFY(getComboSpy.isValid());
+ QIviPendingReply<Combo> comboReply = zone->getCombo();
+ QSignalSpy comboReplySpy(comboReply.watcher(), SIGNAL(replySuccess()));
+ WAIT_AND_COMPARE(comboReplySpy, 1);
+ QCOMPARE(comboReply.reply(), server.m_echoService.m_testCombo);
+ QCOMPARE(getComboSpy.count(), 1);
+}
+
+void EchoQtroTest::testMultipleSlotCalls()
+{
+ Server server;
+ server.start();
+
+ Echo client;
QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+
+ //wait until the client has connected and initial values are set
initSpy.wait(1000);
QCOMPARE(initSpy.count(), 1);
QVERIFY(client.isInitialized());
//test the pending replies by calling the same slot with 3 different values
- QSignalSpy echoSpy(&server.m_service, SIGNAL(echoSlotCalled(const QString&)));
+ QSignalSpy echoSpy(&server.m_echoService, SIGNAL(echoSlotCalled(const QString&)));
QVERIFY(echoSpy.isValid());
- QString echoTestValue("first");
- QString echoTestValue2("second");
- QString echoTestValue3("third");
+ QLatin1String echoTestValue("first");
+ QLatin1String echoTestValue2("second");
+ QLatin1String echoTestValue3("third");
QIviPendingReply<QString> echoReply = client.echo(echoTestValue);
QIviPendingReply<QString> echoReply2 = client.echo(echoTestValue2);
QIviPendingReply<QString> echoReply3 = client.echo(echoTestValue3);
@@ -407,24 +803,124 @@ void EchoQtroTest::testMultipleSlotCalls()
QCOMPARE(echoReply.reply(), echoTestValue);
QCOMPARE(echoReply2.reply(), echoTestValue2);
QCOMPARE(echoReply3.reply(), echoTestValue3);
- QCOMPARE(echoSpy.count(),3);
+ QCOMPARE(echoSpy.count(), 3);
QCOMPARE(echoSpy[0][0].toString(), echoTestValue);
QCOMPARE(echoSpy[1][0].toString(), echoTestValue2);
QCOMPARE(echoSpy[2][0].toString(), echoTestValue3);
+
+ EchoZoned zonedClient;
+ QSignalSpy zonedInitSpy(&zonedClient, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(zonedInitSpy.isValid());
+ QVERIFY(zonedClient.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
+ zonedInitSpy.wait(1000);
+ QCOMPARE(zonedInitSpy.count(), 1);
+ QVERIFY(zonedClient.isInitialized());
+
+ EchoZoned *zone = qobject_cast<EchoZoned*>(zonedClient.zoneAt(frontLeftZone));
+ QVERIFY(zone);
+
+ QSignalSpy echoZonedSpy(&server.m_echoZonedService, SIGNAL(echoSlotCalled(QString, QString)));
+ QVERIFY(echoSpy.isValid());
+ QIviPendingReply<QString> echoZonedReply = zone->echo(echoTestValue);
+ QIviPendingReply<QString> echoZonedReply2 = zone->echo(echoTestValue2);
+ QIviPendingReply<QString> echoZonedReply3 = zone->echo(echoTestValue3);
+ QSignalSpy echoZonedReplySpy(echoZonedReply.watcher(), SIGNAL(replySuccess()));
+ QSignalSpy echoZonedReplySpy2(echoZonedReply2.watcher(), SIGNAL(replySuccess()));
+ QSignalSpy echoZonedReplySpy3(echoZonedReply3.watcher(), SIGNAL(replySuccess()));
+ echoZonedReplySpy3.wait();
+ QCOMPARE(echoZonedReplySpy.count(), 1);
+ QCOMPARE(echoZonedReplySpy2.count(), 1);
+ QCOMPARE(echoZonedReplySpy3.count(), 1);
+ QCOMPARE(echoZonedReply.reply(), echoTestValue);
+ QCOMPARE(echoZonedReply2.reply(), echoTestValue2);
+ QCOMPARE(echoZonedReply3.reply(), echoTestValue3);
+ QCOMPARE(echoZonedSpy.count(),3);
+ QCOMPARE(echoZonedSpy[0][0].toString(), echoTestValue);
+ QCOMPARE(echoZonedSpy[0][1].toString(), frontLeftZone);
+ QCOMPARE(echoZonedSpy[1][0].toString(), echoTestValue2);
+ QCOMPARE(echoZonedSpy[0][1].toString(), frontLeftZone);
+ QCOMPARE(echoZonedSpy[2][0].toString(), echoTestValue3);
+ QCOMPARE(echoZonedSpy[0][1].toString(), frontLeftZone);
}
-void EchoQtroTest::testSignals()
+void EchoQtroTest::testAsyncSlotResults()
{
Server server;
server.start();
Echo client;
- client.startAutoDiscovery();
+ QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
+ initSpy.wait(1000);
+ QCOMPARE(initSpy.count(), 1);
+ QVERIFY(client.isInitialized());
+ // test the timer() function which uses a pendingReply on the server side to return the
+ // function when the timer is finished.
+ QIviPendingReply<void> reply = client.timer(1000);
+ QIviPendingReply<void> reply2 = client.timer(500);
+ QSignalSpy echoReplySpy(reply.watcher(), SIGNAL(replySuccess()));
+ QSignalSpy echoReplySpy2(reply2.watcher(), SIGNAL(replySuccess()));
+
+ //Wait for the second reply to return first. Verify the other reply is not yet ready.
+ echoReplySpy2.wait();
+ QCOMPARE(echoReplySpy2.count(), 1);
+ QCOMPARE(echoReplySpy.count(), 0);
+
+ //Wait for the first reply and verify both replies were sent.
+ echoReplySpy.wait();
+ QCOMPARE(echoReplySpy2.count(), 1);
+ QCOMPARE(echoReplySpy.count(), 1);
+
+ EchoZoned zonedClient;
+ QSignalSpy zonedInitSpy(&zonedClient, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(zonedInitSpy.isValid());
+ QVERIFY(zonedClient.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
//wait until the client has connected and initial values are set
+ zonedInitSpy.wait(1000);
+ QCOMPARE(zonedInitSpy.count(), 1);
+ QVERIFY(zonedClient.isInitialized());
+
+ EchoZoned *zone = qobject_cast<EchoZoned*>(zonedClient.zoneAt(frontLeftZone));
+ QVERIFY(zone);
+
+ // test the timer() function which uses a pendingReply on the server side to return the
+ // function when the timer is finished.
+ QIviPendingReply<QString> zonedReply = zonedClient.timer(1000);
+ QIviPendingReply<QString> zonedReply2 = zone->timer(500);
+ QSignalSpy zonedEchoReplySpy(zonedReply.watcher(), SIGNAL(replySuccess()));
+ QSignalSpy zonedEchoReplySpy2(zonedReply2.watcher(), SIGNAL(replySuccess()));
+
+ //Wait for the second reply to return first. Verify the other reply is not yet ready.
+ zonedEchoReplySpy2.wait();
+ QCOMPARE(zonedEchoReplySpy2.count(), 1);
+ QCOMPARE(zonedEchoReplySpy.count(), 0);
+ QCOMPARE(zonedReply2.value(), frontLeftZone);
+
+ //Wait for the first reply and verify both replies were sent.
+ zonedEchoReplySpy.wait();
+ QCOMPARE(zonedEchoReplySpy2.count(), 1);
+ QCOMPARE(zonedEchoReplySpy.count(), 1);
+ QCOMPARE(zonedReply.value(), QString());
+}
+
+void EchoQtroTest::testSignals()
+{
+ Server server;
+ server.start();
+
+ Echo client;
QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
WAIT_AND_COMPARE(initSpy, 1);
QVERIFY(client.isInitialized());
@@ -432,19 +928,97 @@ void EchoQtroTest::testSignals()
QSignalSpy anotherChangedSpy(&client, SIGNAL(anotherChanged(AnotherStruct)));
QVERIFY(anotherChangedSpy.isValid());
AnotherStruct anotherTestValue(7);
- server.m_service.anotherChanged(anotherTestValue);
+ server.m_echoService.anotherChanged(anotherTestValue);
WAIT_AND_COMPARE(anotherChangedSpy, 1);
QCOMPARE(anotherChangedSpy[0][0].value<AnotherStruct>(), anotherTestValue);
QSignalSpy foobarSpy(&client, SIGNAL(foobar(QString)));
QVERIFY(foobarSpy.isValid());
- QString foobarTestValue("foo and bar");
- server.m_service.foobar(foobarTestValue);
+ QLatin1String foobarTestValue("foo and bar");
+ server.m_echoService.foobar(foobarTestValue);
WAIT_AND_COMPARE(foobarSpy, 1);
QCOMPARE(foobarSpy[0][0].toString(), foobarTestValue);
QSignalSpy somethingSpy(&client, SIGNAL(somethingHappened()));
QVERIFY(somethingSpy.isValid());;
- server.m_service.somethingHappened();
+ server.m_echoService.somethingHappened();
WAIT_AND_COMPARE(somethingSpy, 1);
+
+
+ EchoZoned zonedClient;
+ QSignalSpy zonedInitSpy(&zonedClient, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(zonedInitSpy.isValid());
+ QVERIFY(zonedClient.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
+ zonedInitSpy.wait(1000);
+ QCOMPARE(zonedInitSpy.count(), 1);
+ QVERIFY(zonedClient.isInitialized());
+
+ //test custom signals (other than property notifiers) from server to client
+ QSignalSpy zonedAnotherChangedSpy(&zonedClient, SIGNAL(anotherChanged(AnotherStruct)));
+ QVERIFY(zonedAnotherChangedSpy.isValid());
+ server.m_echoZonedService.anotherChanged(anotherTestValue, QString());
+ WAIT_AND_COMPARE(zonedAnotherChangedSpy, 1);
+ QCOMPARE(zonedAnotherChangedSpy[0][0].value<AnotherStruct>(), anotherTestValue);
+
+ EchoZoned *zone = qobject_cast<EchoZoned*>(zonedClient.zoneAt(frontLeftZone));
+ QVERIFY(zone);
+
+ QSignalSpy zonedFoobarSpy(zone, SIGNAL(foobar(QString)));
+ QVERIFY(zonedFoobarSpy.isValid());
+ server.m_echoZonedService.foobar(foobarTestValue, frontLeftZone);
+ WAIT_AND_COMPARE(zonedFoobarSpy, 1);
+ QCOMPARE(zonedFoobarSpy[0][0].toString(), foobarTestValue);
+
+ QSignalSpy zonedSomethingSpy(zone, SIGNAL(somethingHappened()));
+ QVERIFY(zonedSomethingSpy.isValid());;
+ server.m_echoZonedService.somethingHappened(frontLeftZone);
+ WAIT_AND_COMPARE(zonedSomethingSpy, 1);
+}
+
+void EchoQtroTest::testModel()
+{
+ Server server;
+ server.start();
+
+ Echo client;
+ QSignalSpy initSpy(&client, SIGNAL(isInitializedChanged(bool)));
+ QVERIFY(initSpy.isValid());
+ QVERIFY(client.startAutoDiscovery() == QIviAbstractFeature::ProductionBackendLoaded);
+
+ //wait until the client has connected and initial values are set
+ WAIT_AND_COMPARE(initSpy, 1);
+ QVERIFY(client.isInitialized());
+
+ //Give QtRO time to actually call our server side
+ QTest::qWait(200);
+
+ QIviPagingModel* model = client.contactList();
+ QVERIFY(model->isInitialized());
+ QCOMPARE(model->rowCount(), 0);
+
+ //Test inserting a row
+ Contact testContact(QStringLiteral("Mr A."), 20, false, "foo");
+ QSignalSpy countSpy(model, SIGNAL(countChanged()));
+ server.m_contactsModelService.insert(0, testContact);
+
+ WAIT_AND_COMPARE(countSpy, 1);
+ QCOMPARE(model->rowCount(), 1);
+ QCOMPARE(model->at<Contact>(0), testContact);
+ countSpy.clear();
+
+ //test updating a row
+ QSignalSpy changedSpy(model, SIGNAL(dataChanged( QModelIndex, QModelIndex, QVector<int>)));
+ Contact updatedContact(QStringLiteral("Mr B."), 30, true, QVariant());
+ server.m_contactsModelService.update(0, updatedContact);
+
+ WAIT_AND_COMPARE(changedSpy, 1);
+ QCOMPARE(model->rowCount(), 1);
+ QCOMPARE(model->at<Contact>(0), updatedContact);
+
+ //Test removing a row
+ server.m_contactsModelService.remove(0);
+ WAIT_AND_COMPARE(countSpy, 1);
+ QCOMPARE(model->rowCount(), 0);
}