aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/test-pulse-manager.c95
1 files changed, 54 insertions, 41 deletions
diff --git a/tests/test-pulse-manager.c b/tests/test-pulse-manager.c
index 5fff7b9..67fd67d 100644
--- a/tests/test-pulse-manager.c
+++ b/tests/test-pulse-manager.c
@@ -20,11 +20,30 @@ 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 */
+/* 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"
-static pa_sink_info* mock_sink_info();
+
+/**
+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->description = g_strdup("mock description");
+ mock_sink->mute = 0;
+ pa_cvolume volume; // nearly full volume:
+ pa_cvolume_set(&volume, 1, 30000);
+ mock_sink->volume = volume;
+ return mock_sink;
+}
@@ -45,35 +64,46 @@ static pa_sink_info* mock_sink_info();
/* //pa_context_unref(context);*/
/*}*/
-static void test_sink_update
+static void test_sink_update()
{
-/* pa_sink_info *expected = g_new0(pa_sink_info, 1);*/
-/* expected->name = g_strdup("foo");*/
-/* expected->index = 8;*/
-/* expected->description = g_strdup("more details");*/
- // fill it out here more.
- // hook into our pa_context_get_sink_info_by_index to pass exppected to
- // update_sink_info
- // set_pa_context_get_sink_info(expected);
- // update_sink_info is a static method in pulse-manager.c ?
-/* pa_context_get_sink_info_by_index(context, sink_details->index, update_sink_info, NULL);*/
- // the mockinkg lib should then return this mocked up sink_info to the
- // method update_sink_info which tests could be wrote against to make sure
- // everthing is populated correctly.
-/* pa_context_unref(context);*/
-/* g_free(expected);*/
+ 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_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);
@@ -96,25 +126,6 @@ static void test_sink_cache_population()
pa_context_unref(context);
}
-/**
-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->description = g_strdup("mock description");
- mock_sink->mute = 0;
- pa_cvolume volume; // nearly full volume:
- pa_cvolume_set(&volume, 1, 30000);
- mock_sink->volume = volume;
- return mock_sink;
-}
-
gint main (gint argc, gchar * argv[])
{
@@ -122,6 +133,8 @@ gint main (gint argc, gchar * argv[])
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 ();