diff options
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | tests/Makefile.am | 150 | ||||
-rw-r--r-- | tests/mockpulse.c | 105 | ||||
-rw-r--r-- | tests/mockpulse.h | 26 | ||||
-rw-r--r-- | tests/run-xvfb.sh | 8 | ||||
-rw-r--r-- | tests/test-defines.h | 25 | ||||
-rw-r--r-- | tests/test-indicator-sound-dbus-client.c | 110 | ||||
-rw-r--r-- | tests/test-indicator-sound-dbus-server.c | 63 | ||||
-rw-r--r-- | tests/test-indicator-sound.c | 96 | ||||
-rw-r--r-- | tests/test-pulse-manager.c | 139 |
11 files changed, 3 insertions, 723 deletions
diff --git a/Makefile.am b/Makefile.am index 1f64b51..4753003 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,8 @@ SUBDIRS = \ src \ data \ - po + po \ + tests EXTRA_DIST = \ autogen.sh \ diff --git a/configure.ac b/configure.ac index 20c4331..119a4f4 100644 --- a/configure.ac +++ b/configure.ac @@ -130,6 +130,7 @@ data/icons/16x16/status/Makefile data/icons/scalable/Makefile data/icons/scalable/status/Makefile po/Makefile.in +tests/Makefile ]) ########################### diff --git a/tests/Makefile.am b/tests/Makefile.am index 574279f..8b13789 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,151 +1 @@ -check_PROGRAMS = \ - test-indicator-sound \ - test-pulse-manager \ - test-indicator-sound-dbus-client \ - test-indicator-sound-dbus-server - -TESTS = \ - test-indicator-sound \ - test-pulse-manager -XTESTS_FAIL = $(TESTS) - -DISTCLEANFILES = $(TESTS) - -noinst_LTLIBRARIES = libmockpulse.la -libmockpulse_la_SOURCES = mockpulse.c mockpulse.h -libmockpulse_la_CFLAGS = $(PULSEAUDIO_CFLAGS) - - -######################################### -## test-indicator-sound -######################################### -test_indicator_sound_SOURCES = \ - test-indicator-sound.c \ - $(top_builddir)/src/indicator-sound.c - -test_indicator_sound_CFLAGS = \ - $(PULSEAUDIO_CFLAGS) \ - $(APPLET_CFLAGS) \ - -Wall -Werror \ - -I$(srcdir) \ - -DTOP_BUILD_DIR="\"${abs_top_builddir}\"" - -test_indicator_sound_LDADD = \ - libmockpulse.la \ - $(PULSEAUDIO_LIBS) \ - $(APPLET_LIBS) \ - ../src/libsoundmenu.la - - -######################################### -## test-pulse-manager -######################################### - -check_PROGRAMS += test-pulse-manager - -test_pulse_manager_SOURCES = \ - test-pulse-manager.c \ - $(top_builddir)/src/dbus-menu-manager.c \ - $(top_builddir)/src/sound-service-dbus.c \ - $(top_builddir)/src/gen-sound-service.xml.h \ - $(top_builddir)/src/gen-sound-service.xml.c \ - $(top_builddir)/src/slider-menu-item.c - -test_pulse_manager_CFLAGS = \ - $(PULSEAUDIO_CFLAGS) \ - $(SOUNDSERVICE_CFLAGS) \ - $(GCONF_CFLAGS) \ - -Wall -Werror \ - -I$(srcdir) \ - -I$(SOUNDSERVICE_CFLAGS) - -test_pulse_manager_LDADD = \ - libmockpulse.la \ - $(PULSEAUDIO_LIBS) \ - $(SOUNDSERVICE_LIBS) \ - $(GCONF_LIBS) \ - $(APPLET_LIBS) - -######################################### -## test-indicator-sound-dbus-client -######################################### -test_indicator_sound_dbus_client_SOURCES = \ - test-defines.h \ - test-indicator-sound-dbus-client.c - -test_indicator_sound_dbus_client_CFLAGS = \ - $(PULSEAUDIO_CFLAGS) \ - $(SOUNDSERVICE_CFLAGS) \ - -Wall -Werror \ - -I$(srcdir) \ - -I$(SOUNDSERVICE_CFLAGS) - -test_indicator_sound_dbus_client_LDADD = \ - $(PULSEAUDIO_LIBS) \ - $(SOUNDSERVICE_LIBS) - -######################################## -# test-indicator-sound-dbus-server -######################################## -test_indicator_sound_dbus_server_SOURCES = \ - test-defines.h \ - test-indicator-sound-dbus-server.c \ - $(top_builddir)/src/sound-service-dbus.c \ - $(top_builddir)/src/pulse-manager.c \ - $(top_builddir)/src/slider-menu-item.c \ - $(top_builddir)/src/dbus-menu-manager.c - -test_indicator_sound_dbus_server_CFLAGS = \ - $(SOUNDSERVICE_CFLAGS) \ - -Wall -Werror \ - -I$(srcdir) - -test_indicator_sound_dbus_server_LDADD = \ - $(SOUNDSERVICE_LIBS) \ - $(PULSEAUDIO_LIBS) - - -######################################### -## Actual tests -######################################### - -XML_REPORT = indicator-sound-check-results.xml -HTML_REPORT = indicator-sound-check-results.html - -indicator-sound-tests: indicator-sound-tests-gtester Makefile.am - @echo "#!/bin/sh" > $@ - @echo $(DBUS_RUNNER) --task ./indicator-sound-tests-gtester >> $@ - @chmod +x $@ - -indicator-sound-tests-gtester: test-indicator-sound Makefile.am - @echo "#!/bin/sh" > $@ - @echo gtester -k --verbose -o=$(XML_REPORT) ./test-indicator-sound >> $@ - @chmod +x $@ - -TESTS += indicator-sound-tests-gtester - -PULSE_XML_REPORT = pulse-manager-check-results.xml - -pulse-manager-tests-gtester: test-pulse-manager Makefile.am - @echo "#!/bin/sh" > $@ - @echo gtester -k --verbose -o=$(PULSE_XML_REPORT) ./test-pulse-manager >> $@ - @chmod +x $@ - -TESTS += pulse-manager-tests-gtester - -DISTCLEANFILES += $(XML_REPORT) $(PULSE_XML_REPORT) $(HTML_REPORT) indicator-sound-tests-gtester - -DBUS_RUNNER=dbus-test-runner --dbus-config /usr/share/dbus-test-runner/session.conf - -test-indicator-sound-dbus: test-indicator-sound-dbus-client test-indicator-sound-dbus-server Makefile.am - @echo "#!/bin/sh" > test-indicator-sound-dbus - @echo $(DBUS_RUNNER) --task ./test-indicator-sound-dbus-server --task-name Server --ignore-return >> test-indicator-sound-dbus --task ./test-indicator-sound-dbus-client --task-name Client - @chmod +x test-indicator-sound-dbus - -TESTS += test-indicator-sound-dbus - - - - - diff --git a/tests/mockpulse.c b/tests/mockpulse.c deleted file mode 100644 index b868e07..0000000 --- a/tests/mockpulse.c +++ /dev/null @@ -1,105 +0,0 @@ -/* -Copyright 2010 Canonical Ltd. - -Authors: - Robert Collins <robert.collins@canonical.com> - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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/>. -*/ - - -#include <pulse/glib-mainloop.h> -#include <pulse/context.h> -#include <pulse/operation.h> -#include <pulse/introspect.h> -#include "mockpulse.h" - -struct pa_context { - int refcount; - pa_context_notify_cb_t cb; - void *cbdata; - pa_context_state_t state; -}; - -pa_glib_mainloop * -pa_glib_mainloop_new(GMainContext *c) -{ - return NULL; -} - -pa_context * -pa_context_new(pa_mainloop_api *loop, char const *name) { - struct pa_context * result = g_new(pa_context, 1); - result->refcount = 1; - return result; -} - -void -pa_context_unref(pa_context * context) { - context->refcount--; - if (!context->refcount) - g_free(context); -} - -void -pa_context_set_state_callback(pa_context *c, pa_context_notify_cb_t cb, void *userdata) -{ - c->cb = cb; - c->cbdata = userdata; -} - -void set_pa_context_get_state_result(pa_context *c, pa_context_state_t state) -{ - c->state = state; -} - -pa_context_state_t -pa_context_get_state(pa_context *c) -{ - return c->state; -} - -struct pa_operation { - int refcount; -}; - - -/*void pa_context_connect(pa_context* c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api)*/ -/*{*/ -/* set_pa_context_get_state_result(c, PA_CONTEXT_CONNECTING);*/ -/*}*/ - -/* Can be made into a list if we need multiple callbacks */ -static pa_sink_info *next_sink_info; - -void -set_pa_context_get_sink_info(pa_sink_info *info) { - next_sink_info = info; -} - -pa_operation * -pa_context_get_sink_info_by_index(pa_context *c, uint32_t idx, pa_sink_info_cb_t cb, void * userdata) -{ - pa_operation *result = g_new(pa_operation, 1); - result->refcount = 1; - cb(c, next_sink_info, 0, userdata); - return result; -} - -void -pa_operation_unref(pa_operation * foo) -{ - foo->refcount--; - if (!foo->refcount) - g_free(foo); -} diff --git a/tests/mockpulse.h b/tests/mockpulse.h deleted file mode 100644 index 71cd85b..0000000 --- a/tests/mockpulse.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2010 Canonical Ltd. - -Authors: - Robert Collins <robert.collins@canonical.com> - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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/>. -*/ - -/** - * Control interface for the mocked pa-glib-mainloop test library - */ -#include <pulse/glib-mainloop.h> - -void set_pa_context_get_state_result(pa_context *, pa_context_state_t state); -void set_pa_context_get_sink_info(pa_sink_info *info); diff --git a/tests/run-xvfb.sh b/tests/run-xvfb.sh deleted file mode 100644 index 63b6f0d..0000000 --- a/tests/run-xvfb.sh +++ /dev/null @@ -1,8 +0,0 @@ -if [ "$DISPLAY" == "" ]; then -Xvfb -ac -noreset -screen 0 800x600x16 -help 2>/dev/null 1>&2 -XID=`for id in 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 ; do test -e /tmp/.X$id-lock || { echo $id; exit 0; }; done; exit 1` -{ Xvfb -ac -noreset -screen 0 800x600x16 :$XID -screen 0 800x600x16 -nolisten tcp -auth /dev/null >/dev/null 2>&1 & trap "kill -15 $! " 0 HUP INT QUIT TRAP USR1 PIPE TERM ; } || { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; } -DISPLAY=:$XID -export DISPLAY -echo Setting display: $DISPLAY -fi diff --git a/tests/test-defines.h b/tests/test-defines.h deleted file mode 100644 index 214274e..0000000 --- a/tests/test-defines.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -Testing defines to be shared between various tests. - -Copyright 2010 Canonical Ltd. - -Authors: - Conor Curran <conor.curran@canonical.com> - Ted Gould <ted@canonical.com> - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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/>. -*/ - -#define TEST_MUTE_VALUE TRUE -#define TEST_VOLUME_VALUE 77.77777 -#define TEST_AVAILABLE_VALUE TRUE diff --git a/tests/test-indicator-sound-dbus-client.c b/tests/test-indicator-sound-dbus-client.c deleted file mode 100644 index eafd03a..0000000 --- a/tests/test-indicator-sound-dbus-client.c +++ /dev/null @@ -1,110 +0,0 @@ -/* -Tests for the libappindicator library that are over DBus. This is -the client side of those tests. - -Copyright 2010 Canonical Ltd. - -Authors: - Conor Curran <conor.curran@canonical.com> - Ted Gould <ted@canonical.com> - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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/>. -*/ - - -#include <glib.h> -#include "../src/dbus-shared-names.h" -#include "test-defines.h" -#include "../src/sound-service-client.h" - -static GMainLoop * mainloop = NULL; -static GDBusProxy * proxy= NULL; - -static void -test_fetch_mute(GDBusProxy * proxy) -{ - GError * error = NULL; - gboolean *fetched_mute_value; - fetched_mute_value = g_new0(gboolean, 1); - org_ayatana_indicator_sound_get_sink_mute(proxy, fetched_mute_value, &error); - if (error != NULL) { - g_warning("test-indicator-sound-dbus-client::test_fetch_mute - Unable to fetch mute: %s", error->message); - g_error_free(error); - g_free(fetched_mute_value); - return; - } - g_assert(TEST_MUTE_VALUE == *fetched_mute_value); - g_free(fetched_mute_value); -} - -static void -test_fetch_availability(DBusGProxy * proxy) -{ - GError * error = NULL; - gboolean * available_input; - available_input = g_new0(gboolean, 1); - org_ayatana_indicator_sound_get_sink_availability(proxy, available_input, &error); - if (error != NULL) { - g_warning("test-indicator-sound-dbus-client::test_fetch_availability - unable to fetch availability %s", error->message); - g_error_free(error); - g_free(available_input); - return; - } - g_assert(TEST_AVAILABLE_VALUE == *available_input); - g_free(available_input); -} - - -gboolean -kill_func (gpointer userdata) -{ - g_free(proxy); - g_main_loop_quit(mainloop); - return FALSE; -} - -gint -main (gint argc, gchar * argv[]) -{ - g_type_init(); - g_test_init(&argc, &argv, NULL); - - g_usleep(500000); - - GError * error = NULL; - DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); - if (error != NULL) { - g_error("Unable to get session bus: %s", error->message); - return 1; - } - - DBusGProxy * proxy = dbus_g_proxy_new_for_name_owner(session_bus, - ":1.0", - INDICATOR_SOUND_SERVICE_DBUS_OBJECT, - INDICATOR_SOUND_SERVICE_DBUS_INTERFACE, - &error); - if (error != NULL) { - g_error("Unable to get property proxy: %s", error->message); - return 1; - } - - test_fetch_mute(proxy); - test_fetch_availability(proxy); - - g_timeout_add_seconds(2, kill_func, NULL); - - mainloop = g_main_loop_new(NULL, FALSE); - g_main_loop_run(mainloop); - - return 0; -} diff --git a/tests/test-indicator-sound-dbus-server.c b/tests/test-indicator-sound-dbus-server.c deleted file mode 100644 index b1e3d9c..0000000 --- a/tests/test-indicator-sound-dbus-server.c +++ /dev/null @@ -1,63 +0,0 @@ -/* -Tests for the libappindicator library that are over DBus. This is -the server side of those tests. - -Copyright 2009 Canonical Ltd. - -Authors: - Conor Curran <conor.curran@canonical.com> - Ted Gould <ted@canonical.com> - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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/>. -*/ - - -#include <dbus/dbus-glib.h> -#include <dbus/dbus-glib-lowlevel.h> -#include <glib.h> -#include "../src/sound-service-dbus.h" -#include "test-defines.h" - -static GMainLoop * mainloop = NULL; -static SoundServiceDbus *dbus_interface = NULL; - -gboolean -kill_func (gpointer userdata) -{ - g_main_loop_quit(mainloop); - return FALSE; -} - -gint -main (gint argc, gchar * argv[]) -{ - g_type_init(); - - dbus_interface = g_object_new(SOUND_SERVICE_DBUS_TYPE, NULL); - - // Set the mute value - sound_service_dbus_update_sink_mute(dbus_interface, TEST_MUTE_VALUE); - sound_service_dbus_update_sink_availability(dbus_interface, TEST_AVAILABLE_VALUE); - - g_timeout_add_seconds(4, kill_func, NULL); - - // Run the loop - mainloop = g_main_loop_new(NULL, FALSE); - g_main_loop_run(mainloop); - - g_debug("Quiting"); - - return 0; -} - - diff --git a/tests/test-indicator-sound.c b/tests/test-indicator-sound.c deleted file mode 100644 index ae071d0..0000000 --- a/tests/test-indicator-sound.c +++ /dev/null @@ -1,96 +0,0 @@ -/* -Copyright 2010 Canonical Ltd. - -Authors: - Conor Curran <conor.curran@canonical.com> - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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/>. -*/ - -#include <string.h> -#include <gtk/gtk.h> -#include <libindicator/indicator-object.h> -#include "../src/indicator-sound.h" - -static const gint STATE_MUTED = 0; -static const gint STATE_ZERO = 1; -static const gint STATE_LOW = 2; -static const gint STATE_MEDIUM = 3; -static const gint STATE_HIGH = 4; -static const gint STATE_MUTED_WHILE_INPUT = 5; -static const gint STATE_SINKS_NONE = 6; - -void test_libindicator_sound_init() -{ - IndicatorObject * sound_menu = indicator_object_new_from_file(TOP_BUILD_DIR "/src/.libs/libsoundmenu.so"); - g_assert(sound_menu != NULL); - g_object_unref(G_OBJECT(sound_menu)); -} - -void test_libindicator_determine_state() -{ - IndicatorObject * sound_menu = indicator_object_new_from_file(TOP_BUILD_DIR "/src/.libs/libsoundmenu.so"); - - determine_state_from_volume(40); - g_assert(get_state() == STATE_MEDIUM); - - determine_state_from_volume(0); - g_assert(get_state() == STATE_ZERO); - - determine_state_from_volume(15); - g_assert(get_state() == STATE_LOW); - - determine_state_from_volume(70); - g_assert(get_state() == STATE_HIGH); - - g_object_unref(G_OBJECT(sound_menu)); -} - -void test_libindicator_image_names() -{ - - gchar* muted_name = get_state_image_name(STATE_MUTED); - g_assert(g_ascii_strncasecmp("audio-volume-muted-panel", muted_name, strlen("audio-volume-muted-panel")) == 0); - - gchar* zero_name = get_state_image_name(STATE_ZERO); - g_assert(g_ascii_strncasecmp("audio-volume-low-zero-panel", zero_name, strlen("audio-volume-low-zero-panel")) == 0); - - gchar* low_name = get_state_image_name(STATE_LOW); - g_assert(g_ascii_strncasecmp("audio-volume-low-panel", low_name, strlen("audio-volume-low-panel")) == 0); - - gchar* medium_name = get_state_image_name(STATE_MEDIUM); - g_assert(g_ascii_strncasecmp("audio-volume-medium-panel", medium_name, strlen("audio-volume-medium-panel")) == 0); - - gchar* high_name = get_state_image_name(STATE_HIGH); - g_assert(g_ascii_strncasecmp("audio-volume-high-panel", high_name, strlen("audio-volume-high-panel")) == 0); - - gchar* blocked_name = get_state_image_name(STATE_MUTED_WHILE_INPUT); - g_assert(g_ascii_strncasecmp("audio-volume-muted-blocking-panel", blocked_name, strlen("audio-volume-muted-blocking-panel")) == 0); - - gchar* none_name = get_state_image_name(STATE_SINKS_NONE); - g_assert(g_ascii_strncasecmp("audio-output-none-panel", none_name, strlen("audio-output-none-panel")) == 0); - - //tidy_up_hash(); -} - - -gint main (gint argc, gchar * argv[]) -{ - g_type_init(); - g_test_init(&argc, &argv, NULL); - - //g_test_add_func("/indicator-sound/indicator-sound/image_names", test_libindicator_image_names); - - return g_test_run (); -} - diff --git a/tests/test-pulse-manager.c b/tests/test-pulse-manager.c deleted file mode 100644 index 313f325..0000000 --- a/tests/test-pulse-manager.c +++ /dev/null @@ -1,139 +0,0 @@ -/* -Copyright 2010 Canonical Ltd. - -Authors: - Robert Collins <robert.collins@canonical.com> - Conor Curran <conor.curran@canonical.com> - -This program is free software: you can redistribute it and/or modify it -under the terms of the GNU General Public License version 3, as published -by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranties of -MERCHANTABILITY, SATISFACTORY QUALITY, 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/>. -*/ - -#include <string.h> - -/* we intend to test static functions -which are not to be exported -hence the inclusion of the C file*/ -#include "../src/pulse-manager.c" -#include "mockpulse.h" - - -/** -Helper Methods -**/ -static pa_sink_info* -mock_sink_info() -{ - pa_sink_info* mock_sink; - mock_sink = g_new0(pa_sink_info, 1); - mock_sink->index = 8; - mock_sink->name = g_strdup("mock_sink"); - mock_sink->mute = 0; - pa_cvolume volume; // nearly full volume: - pa_cvolume_set(&volume, 1, 30000); - mock_sink->volume = volume; - return mock_sink; -} - - - -/*static void test_pa_context_exit()*/ -/*{*/ -/* pa_context* context = pa_context_new(NULL, "foo");*/ - -/* pa_context_set_state_callback(context, context_state_callback, NULL);*/ -/* // => call context_state_callback(context, NULL);*/ -/* // pa_context_get_state is mocked to return the right FAIL flag.*/ -/* set_pa_context_get_state_result(context, PA_CONTEXT_FAILED);*/ -/* context_state_callback(context, NULL);*/ -/* // Test to ensure context is tidied after failure.*/ -/* g_assert(context == NULL);*/ -/* // 2. then using the same pa_context_get_state we could ensure the manager*/ -/* // is attempting to reconnect to PA. */ -/* //g_assert(PA_CONTEXT_CONNECTING == pa_context_get_state(get_context()));*/ -/* //pa_context_unref(context);*/ -/*}*/ - -static void test_sink_update() -{ - pa_context* context = pa_context_new(NULL, "foo"); - pa_sink_info* mock_sink = mock_sink_info(); - set_pa_context_get_sink_info(mock_sink); - sink_hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, destroy_sink_info); - - pa_context_get_sink_info_by_index(context, mock_sink->index, pulse_sink_info_callback, NULL); - - mock_sink->mute = 1; - pa_cvolume volume; // nearly full volume: - pa_cvolume_set(&volume, 1, 10000); - mock_sink->volume = volume; - - set_pa_context_get_sink_info(mock_sink); - - pa_context_get_sink_info_by_index(context, mock_sink->index, update_sink_info, NULL); - - GList *keys = g_hash_table_get_keys(sink_hash); - gint position = g_list_index(keys, GINT_TO_POINTER(mock_sink->index)); - - g_assert(position >= 0); - - sink_info* stored_sink_info = g_hash_table_lookup(sink_hash, GINT_TO_POINTER(mock_sink->index)); - - g_assert(!!mock_sink->mute == stored_sink_info->mute); - g_assert(pa_cvolume_equal(&mock_sink->volume, &stored_sink_info->volume)); - - - g_free(mock_sink); - g_hash_table_destroy(sink_hash); - pa_context_unref(context); -} - - -static void test_sink_cache_population() -{ - pa_context* context = pa_context_new(NULL, "foo"); - pa_sink_info* mock_sink = mock_sink_info(); - set_pa_context_get_sink_info(mock_sink); - sink_hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, destroy_sink_info); - - pa_context_get_sink_info_by_index(context, mock_sink->index, pulse_sink_info_callback, NULL); - - GList *keys = g_hash_table_get_keys(sink_hash); - gint position = g_list_index(keys, GINT_TO_POINTER(mock_sink->index)); - - g_assert(position >= 0); - - sink_info* stored_sink_info = g_hash_table_lookup(sink_hash, GINT_TO_POINTER(mock_sink->index)); - - g_assert(g_ascii_strncasecmp(mock_sink->name, stored_sink_info->name, strlen(mock_sink->name)) == 0); - g_assert(!!mock_sink->mute == stored_sink_info->mute); - g_assert(mock_sink->index == stored_sink_info->index); - g_assert(pa_cvolume_equal(&mock_sink->volume, &stored_sink_info->volume)); - - g_free(mock_sink); - g_hash_table_destroy(sink_hash); - pa_context_unref(context); -} - - -gint main (gint argc, gchar * argv[]) -{ - g_type_init(); - g_test_init(&argc, &argv, NULL); - - g_test_add_func("/indicator-sound/pulse-manager/sink-cache-population", test_sink_cache_population); - g_test_add_func("/indicator-sound/pulse-manager/sink-update", test_sink_update); - - //g_test_add_func("/indicator-sound/pulse-manager/pa-context-exit", test_pa_context_exit); - - return g_test_run (); -} |