aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt21
-rw-r--r--tests/volume-control-test.cc83
2 files changed, 99 insertions, 5 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 5c37ea3..a9ec204 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -92,11 +92,6 @@ add_library(
pa-mock.c
)
-target_link_libraries(
- pulse-mock
- ${SOUNDSERVICE_LIBRARIES}
-)
-
###########################
# Name Watch Test
###########################
@@ -131,6 +126,22 @@ add_test(accounts-service-user-test-player
)
###########################
+# Volume Control
+###########################
+
+include_directories(${CMAKE_SOURCE_DIR}/src)
+add_executable (volume-control-test volume-control-test.cc)
+target_link_libraries (
+ volume-control-test
+ indicator-sound-service-lib
+ pulse-mock
+ gtest
+ ${TEST_LIBRARIES}
+)
+
+add_test(volume-control-test volume-control-test)
+
+###########################
# Sound Menu
###########################
diff --git a/tests/volume-control-test.cc b/tests/volume-control-test.cc
new file mode 100644
index 0000000..9970241
--- /dev/null
+++ b/tests/volume-control-test.cc
@@ -0,0 +1,83 @@
+/*
+ * Copyright © 2014 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ * Ted Gould <ted@canonical.com>
+ */
+
+#include <gtest/gtest.h>
+#include <gio/gio.h>
+#include <libdbustest/dbus-test.h>
+
+extern "C" {
+#include "indicator-sound-service.h"
+}
+
+class VolumeControlTest : public ::testing::Test
+{
+
+ protected:
+ DbusTestService * service = NULL;
+ GDBusConnection * session = NULL;
+
+ virtual void SetUp() {
+ service = dbus_test_service_new(NULL);
+ dbus_test_service_start_tasks(service);
+
+ session = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, NULL);
+ ASSERT_NE(nullptr, session);
+ g_dbus_connection_set_exit_on_close(session, FALSE);
+ g_object_add_weak_pointer(G_OBJECT(session), (gpointer *)&session);
+ }
+
+ virtual void TearDown() {
+ g_clear_object(&service);
+
+ g_object_unref(session);
+
+ unsigned int cleartry = 0;
+ while (session != NULL && cleartry < 100) {
+ loop(100);
+ cleartry++;
+ }
+
+ ASSERT_EQ(nullptr, session);
+ }
+
+ static gboolean timeout_cb (gpointer user_data) {
+ GMainLoop * loop = static_cast<GMainLoop *>(user_data);
+ g_main_loop_quit(loop);
+ return G_SOURCE_REMOVE;
+ }
+
+ void loop (unsigned int ms) {
+ GMainLoop * loop = g_main_loop_new(NULL, FALSE);
+ g_timeout_add(ms, timeout_cb, loop);
+ g_main_loop_run(loop);
+ g_main_loop_unref(loop);
+ }
+};
+
+TEST_F(VolumeControlTest, BasicObject) {
+ VolumeControl * control = volume_control_new();
+
+ /* Setup the PA backend */
+ loop(100);
+
+ /* Ready */
+ EXPECT_TRUE(volume_control_get_ready(control));
+
+ g_clear_object(&control);
+}