diff options
-rw-r--r-- | src/snap.cpp | 5 | ||||
-rw-r--r-- | tests/test-snap.cpp | 49 |
2 files changed, 46 insertions, 8 deletions
diff --git a/src/snap.cpp b/src/snap.cpp index beefa94..0b2322a 100644 --- a/src/snap.cpp +++ b/src/snap.cpp @@ -78,7 +78,10 @@ public: auto sound = std::make_shared<uin::Sound>(uri, volume, loop); // create the haptic feedback... - auto haptic = std::make_shared<uin::Haptic>(); + const auto haptic_mode = m_settings->alarm_haptic.get(); + std::shared_ptr<uin::Haptic> haptic; + if (haptic_mode == "pulse") + haptic = std::make_shared<uin::Haptic>(uin::Haptic::MODE_PULSE); // show a notification... const auto minutes = std::chrono::minutes(m_settings->alarm_duration.get()); diff --git a/tests/test-snap.cpp b/tests/test-snap.cpp index 06e0a80..5afaab1 100644 --- a/tests/test-snap.cpp +++ b/tests/test-snap.cpp @@ -416,13 +416,6 @@ TEST_F(SnapFixture, InhibitSleep) nullptr, &error)); - // confirm that haptic feedback got called - EXPECT_TRUE (dbus_test_dbus_mock_object_check_method_call (haptic_mock, - haptic_obj, - HAPTIC_METHOD_VIBRATE_PATTERN, - nullptr, - &error)); - // force-close the snap wait_msec(100); delete snap; @@ -485,3 +478,45 @@ TEST_F(SnapFixture, ForceScreen) &error)); g_assert_no_error(error); } + +/*** +**** +***/ + +TEST_F(SnapFixture, HapticModes) +{ + auto settings = std::make_shared<Settings>(); + auto ne = std::make_shared<unity::indicator::notifications::Engine>(APP_NAME); + auto func = [this](const Appointment&){g_idle_add(quit_idle, loop);}; + GError * error = nullptr; + + // invoke a snap decision while haptic feedback is set to "pulse", + // confirm that VibratePattern got called + settings->alarm_haptic.set("pulse"); + auto snap = new Snap (ne, settings); + (*snap)(appt, func, func); + wait_msec(100); + EXPECT_TRUE (dbus_test_dbus_mock_object_check_method_call (haptic_mock, + haptic_obj, + HAPTIC_METHOD_VIBRATE_PATTERN, + nullptr, + &error)); + delete snap; + + // invoke a snap decision while haptic feedback is set to "none", + // confirm that VibratePattern =didn't= get called + wait_msec(100); + dbus_test_dbus_mock_object_clear_method_calls (haptic_mock, haptic_obj, &error); + settings->alarm_haptic.set("none"); + snap = new Snap (ne, settings); + (*snap)(appt, func, func); + wait_msec(100); + EXPECT_FALSE (dbus_test_dbus_mock_object_check_method_call (haptic_mock, + haptic_obj, + HAPTIC_METHOD_VIBRATE_PATTERN, + nullptr, + &error)); + delete snap; + + g_assert_no_error (error); +} |