void tst_QUdpSocket::writeDatagram() { QUdpSocket server; QVERIFY2(server.bind(), server.errorString().toLatin1().constData()); QHostAddress serverAddress = QHostAddress::LocalHost; if (!(server.localAddress() == QHostAddress::Any)) serverAddress = server.localAddress(); QUdpSocket client; qRegisterMetaType<qint64>("qint64"); qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError"); for(int i=0;; i++) { QSignalSpy errorspy(&client, SIGNAL(error(QAbstractSocket::SocketError))); QSignalSpy bytesspy(&client, SIGNAL(bytesWritten(qint64))); qint64 written = client.writeDatagram(QByteArray(i * 1024, 'w'), serverAddress, server.localPort()); if (written != i * 1024) { #if defined (Q_OS_HPUX) QSKIP("HP-UX 11.11 on hai (PA-RISC 64) truncates too long datagrams.", SkipSingle); #endif QCOMPARE(bytesspy.count(), 0); QCOMPARE(errorspy.count(), 1); QCOMPARE(*static_cast<const int *>(errorspy.at(0).at(0).constData()), int(QUdpSocket::DatagramTooLargeError)); QCOMPARE(client.error(), QUdpSocket::DatagramTooLargeError); break; } QVERIFY(bytesspy.count() == 1); QCOMPARE(*static_cast<const qint64 *>(bytesspy.at(0).at(0).constData()), qint64(i * 1024)); QCOMPARE(errorspy.count(), 0); if (!server.waitForReadyRead(5000)) QSKIP(QString("UDP packet lost at size %1, unable to complete the test.").arg(i * 1024).toLatin1().data(), SkipSingle); QCOMPARE(server.pendingDatagramSize(), qint64(i * 1024)); QCOMPARE(server.readDatagram(0, 0), qint64(0)); } }
void tst_QFeedbackHapticsEffect::startStop() { qRegisterMetaType<QFeedbackEffect::ErrorType>("QFeedbackEffect::ErrorType"); if (QFeedbackActuator::actuators().isEmpty()) QSKIP("this test requires to have actuators"); QList<QFeedbackActuator*> actuators = QFeedbackActuator::actuators(); QFETCH(int, duration); QFETCH(qreal, intensity); QFETCH(int, attackTime); QFETCH(qreal, attackIntensity); QFETCH(int, fadeTime); QFETCH(qreal, fadeIntensity); QFETCH(int, period); QFeedbackHapticsEffect effect; QSignalSpy errorspy(&effect, SIGNAL(error(QFeedbackEffect::ErrorType))); QSignalSpy stateSpy(&effect, SIGNAL(stateChanged())); effect.setDuration(duration); effect.setIntensity(intensity); effect.setAttackTime(attackTime); effect.setAttackIntensity(attackIntensity); effect.setFadeTime(fadeTime); effect.setFadeIntensity(fadeIntensity); effect.setPeriod(period); QCOMPARE(effect.state(), QFeedbackHapticsEffect::Stopped); QCOMPARE(effect.actuator(), actuators.at(0)); // Double set a few properties (shouldn't call the backend) effect.setAttackTime(attackTime); QVERIFY(effect.attackTime() == attackTime); effect.setFadeTime(fadeTime); QVERIFY(effect.fadeTime() == fadeTime); // Test setting to a non default actuator and then back again if (actuators.count() > 1) { effect.setActuator(actuators.at(1)); QCOMPARE(effect.actuator(), actuators.at(1)); effect.setActuator(0); QCOMPARE(effect.actuator(), actuators.at(0)); // noop effect.setActuator(actuators.at(0)); QCOMPARE(effect.actuator(), actuators.at(0)); } // Now start QVERIFY(stateSpy.isEmpty()); effect.start(); QVERIFY(errorspy.isEmpty()); // This seems a little risky QTRY_COMPARE(effect.state(), QFeedbackHapticsEffect::Running); QVERIFY(errorspy.isEmpty()); QCOMPARE(stateSpy.count(), 1); // stopped to start effect.pause(); QCOMPARE(effect.state(), QFeedbackHapticsEffect::Paused); QCOMPARE(stateSpy.count(), 2); // Now try to change a few properties (should be refused because of !Stopped) effect.setPeriod(period + 100); QVERIFY(effect.period() == period); QFeedbackActuator* actuator = effect.actuator(); effect.setActuator(0); QVERIFY(effect.actuator() == actuator); effect.start(); QCOMPARE(effect.state(), QFeedbackHapticsEffect::Running); QCOMPARE(stateSpy.count(), 3); QTRY_COMPARE(effect.state(), QFeedbackHapticsEffect::Stopped); QVERIFY(errorspy.isEmpty()); QCOMPARE(stateSpy.count(), 4); }