From 6c2b978f17d48fe212cccb15c23bb1e278ba600f Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Tue, 9 Mar 2010 13:43:16 +1100 Subject: flesh out test_pa_context_exit --- tests/mockpulse.c | 42 ++++++++++++++++++++++++++++++++++++++++-- tests/mockpulse.h | 1 + tests/test-pulse-manager.c | 14 +++++++++++--- 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/tests/mockpulse.c b/tests/mockpulse.c index a931e1d..eec2c03 100644 --- a/tests/mockpulse.c +++ b/tests/mockpulse.c @@ -17,13 +17,51 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ + #include +#include + +struct pa_context { + int refcount; + pa_context_notify_cb_t cb; + void *cbdata; + pa_context_state_t state; +}; -pa_glib_mainloop* +pa_glib_mainloop * pa_glib_mainloop_new(GMainContext *c) { - printf("This is reached\n", 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; +} diff --git a/tests/mockpulse.h b/tests/mockpulse.h index 521ba2b..327121a 100644 --- a/tests/mockpulse.h +++ b/tests/mockpulse.h @@ -22,3 +22,4 @@ with this program. If not, see . */ #include +void set_pa_context_get_state_result(pa_context *, pa_context_state_t state); diff --git a/tests/test-pulse-manager.c b/tests/test-pulse-manager.c index f5dfb80..f4f7ffc 100644 --- a/tests/test-pulse-manager.c +++ b/tests/test-pulse-manager.c @@ -20,21 +20,28 @@ with this program. If not, see . /* we test static functions */ #include "../src/pulse-manager.c" +#include "mockpulse.h" -pa_context* context; 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 needs to be mocked to return the right FAIL flag. + // 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); // 1. test to make sure relevant variables are tidied up - // 2. then using the same pa_context_get_state we could ensure the manager is attempting to reconnect tp PA. + // XXX: Conor to do. + // 2. then using the same pa_context_get_state we could ensure the manager + // is attempting to reconnect to PA. + pa_context_unref(context); } static void test_sink_insert() { sink_info *value; + pa_context* context = pa_context_new(NULL, "foo"); value = g_new0(sink_info, 1); value->index = 8; value->name = "mock_sink"; @@ -46,6 +53,7 @@ static void test_sink_insert() // update_sink_info is a static method in pulse-manager.c ? pa_context_get_sink_info_by_index(context, value->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); } -- cgit v1.2.3