void tst_QFeedbackHapticsEffect::startStop() { qRegisterMetaType<QFeedbackEffect::ErrorType>("QFeedbackEffect::ErrorType"); if (QFeedbackActuator::actuators().isEmpty()) QSKIP("this test requires to have actuators", SkipAll); 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); 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); effect.start(); QCOMPARE(effect.state(), QFeedbackHapticsEffect::Running); QCOMPARE(stateSpy.count(), 3); QTRY_COMPARE(effect.state(), QFeedbackHapticsEffect::Stopped); QVERIFY(errorspy.isEmpty()); QEXPECT_FAIL("", "No plugin API to report state changed to stopped :/", Continue); QCOMPARE(stateSpy.count(), 4); }
void tst_QFeedbackHapticsEffect::envelope() { QFETCH(int, duration); QFETCH(qreal, intensity); QFETCH(int, attackTime); QFETCH(qreal, attackIntensity); QFETCH(int, fadeTime); QFETCH(qreal, fadeIntensity); QFETCH(int, period); QFeedbackHapticsEffect effect; // actuators from other plugins need to be verified. effect.setDuration(duration); QCOMPARE(effect.duration(), duration); effect.setIntensity(intensity); QCOMPARE(effect.intensity(), intensity); effect.setAttackTime(attackTime); QCOMPARE(effect.attackTime(), attackTime); effect.setAttackIntensity(attackIntensity); QCOMPARE(effect.attackIntensity(), attackIntensity); effect.setFadeTime(fadeTime); QCOMPARE(effect.fadeTime(), fadeTime); effect.setFadeIntensity(fadeIntensity); QCOMPARE(effect.fadeIntensity(), fadeIntensity); effect.setPeriod(period); QCOMPARE(effect.period(), period); //test all the values at once QCOMPARE(effect.duration(), duration); QCOMPARE(effect.intensity(), intensity); QCOMPARE(effect.attackTime(), attackTime); QCOMPARE(effect.attackIntensity(), attackIntensity); QCOMPARE(effect.fadeTime(), fadeTime); QCOMPARE(effect.fadeIntensity(), fadeIntensity); QCOMPARE(effect.period(), period); }
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); }