aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2014-02-11 20:27:19 -0600
committerTed Gould <ted@gould.cx>2014-02-11 20:27:19 -0600
commit7da8553896b1967d44292e211e9573e2d2d18e74 (patch)
treecf28dc89dd7ee7560a227f1daef544d8cccd22d2 /tests
parenteca0a6a44fce6efe86905940c3ce2562e18d3502 (diff)
downloadayatana-indicator-sound-7da8553896b1967d44292e211e9573e2d2d18e74.tar.gz
ayatana-indicator-sound-7da8553896b1967d44292e211e9573e2d2d18e74.tar.bz2
ayatana-indicator-sound-7da8553896b1967d44292e211e9573e2d2d18e74.zip
Adding in an accounts service base test
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt9
-rw-r--r--tests/accounts-service-user.cc85
2 files changed, 94 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 8e79fd0..e6a5f34 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -20,3 +20,12 @@ add_executable (name-watch-test name-watch-test.cc ${CMAKE_SOURCE_DIR}/src/bus-w
target_link_libraries (name-watch-test gtest ${SOUNDSERVICE_LIBRARIES})
add_test(name-watch-test name-watch-test)
+###########################
+# Accounts Service User
+###########################
+
+include_directories(${CMAKE_SOURCE_DIR}/src)
+add_executable (accounts-service-user-test accounts-service-user.cc)
+target_link_libraries (accounts-service-user-test gtest ${SOUNDSERVICE_LIBRARIES} ${TEST_LIBRARIES})
+add_test(accounts-service-user-test accounts-service-user-test)
+
diff --git a/tests/accounts-service-user.cc b/tests/accounts-service-user.cc
new file mode 100644
index 0000000..db79d14
--- /dev/null
+++ b/tests/accounts-service-user.cc
@@ -0,0 +1,85 @@
+/*
+ * 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 AccountsServiceUserTest : public ::testing::Test
+{
+
+ protected:
+ DbusTestService * service = NULL;
+
+ GDBusConnection * session = NULL;
+ GDBusConnection * system = NULL;
+
+ virtual void SetUp() {
+ service = dbus_test_service_new(NULL);
+ dbus_test_service_start_tasks(service);
+
+ g_setenv("DBUS_SYSTEM_BUS_ADDRESS", g_getenv("DBUS_SESSION_BUS_ADDRESS"), TRUE);
+
+ session = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, NULL);
+ g_dbus_connection_set_exit_on_close(session, FALSE);
+ g_object_add_weak_pointer(G_OBJECT(session), (gpointer *)&session);
+
+ system = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL);
+ g_dbus_connection_set_exit_on_close(system, FALSE);
+ g_object_add_weak_pointer(G_OBJECT(system), (gpointer *)&system);
+ }
+
+ virtual void TearDown() {
+ g_clear_object(&service);
+
+ g_object_unref(session);
+ g_object_unref(system);
+
+ unsigned int cleartry = 0;
+ while (session != NULL && system != NULL && cleartry < 100) {
+ loop(100);
+ cleartry++;
+ }
+
+ ASSERT_EQ(nullptr, session);
+ ASSERT_EQ(nullptr, system);
+ }
+
+ 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(AccountsServiceUserTest, BasicObject) {
+
+
+}