aboutsummaryrefslogtreecommitdiff
path: root/tests/volume-control-test.cc
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2015-01-27 11:42:26 -0600
committerTed Gould <ted@gould.cx>2015-01-27 11:42:26 -0600
commit26c4b845af442fd7968863929f4f62c8721fb687 (patch)
tree5b3ae042ea86f6d5e9d0fbd1e72ace0a7324b4b9 /tests/volume-control-test.cc
parentd788cd8f6910a8ff17454cc54175815a122f0c63 (diff)
downloadayatana-indicator-sound-26c4b845af442fd7968863929f4f62c8721fb687.tar.gz
ayatana-indicator-sound-26c4b845af442fd7968863929f4f62c8721fb687.tar.bz2
ayatana-indicator-sound-26c4b845af442fd7968863929f4f62c8721fb687.zip
Linking and starting and failing!
Diffstat (limited to 'tests/volume-control-test.cc')
-rw-r--r--tests/volume-control-test.cc83
1 files changed, 83 insertions, 0 deletions
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);
+}