diff options
author | Ryan Lortie <desrt@desrt.ca> | 2013-11-25 01:59:47 -0500 |
---|---|---|
committer | Ryan Lortie <desrt@desrt.ca> | 2013-11-25 12:23:16 -0500 |
commit | 16c8d985445a37f51f2a77c1f5c68366160e1da3 (patch) | |
tree | e1acb3ff0566b103823715033b7eacb0e78ed3e9 | |
parent | ce3170a3f6444ca9714bbcfd228edd372afb997b (diff) | |
download | dconf-16c8d985445a37f51f2a77c1f5c68366160e1da3.tar.gz |
dbus mock: add some better API
Add API for replying to async calls in the mock dbus backend and for
checking that there are no calls outstanding.
Use it from the engine test.
-rw-r--r-- | tests/dconf-mock-dbus.c | 21 | ||||
-rw-r--r-- | tests/dconf-mock.h | 4 | ||||
-rw-r--r-- | tests/engine.c | 24 |
3 files changed, 37 insertions, 12 deletions
diff --git a/tests/dconf-mock-dbus.c b/tests/dconf-mock-dbus.c index e20b61a..d20600c 100644 --- a/tests/dconf-mock-dbus.c +++ b/tests/dconf-mock-dbus.c @@ -42,6 +42,27 @@ dconf_engine_dbus_call_async_func (GBusType bus_type, return TRUE; } +void +dconf_mock_dbus_async_reply (GVariant *reply, + GError *error) +{ + DConfEngineCallHandle *handle; + + g_assert (!g_queue_is_empty (&dconf_mock_dbus_outstanding_call_handles)); + handle = g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles); + + if (reply && handle) + g_assert (g_variant_is_of_type (reply, dconf_engine_call_handle_get_expected_type (handle))); + + dconf_engine_call_handle_reply (handle, reply, error); +} + +void +dconf_mock_dbus_assert_no_aync (void) +{ + g_assert (g_queue_is_empty (&dconf_mock_dbus_outstanding_call_handles)); +} + DConfMockDBusSyncCallHandler dconf_mock_dbus_sync_call_handler; GVariant * diff --git a/tests/dconf-mock.h b/tests/dconf-mock.h index 10e6095..26f5f3c 100644 --- a/tests/dconf-mock.h +++ b/tests/dconf-mock.h @@ -16,6 +16,10 @@ typedef GVariant * (* DConfMockDBusSyncCallHandler) (GBusTyp extern DConfMockDBusSyncCallHandler dconf_mock_dbus_sync_call_handler; extern GQueue dconf_mock_dbus_outstanding_call_handles; +void dconf_mock_dbus_async_reply (GVariant *reply, + GError *error); +void dconf_mock_dbus_assert_no_aync (void); + void dconf_mock_shm_reset (void); gint dconf_mock_shm_flag (const gchar *name); void dconf_mock_shm_assert_log (const gchar *expected_log); diff --git a/tests/engine.c b/tests/engine.c index 1b1731d..2b6405f 100644 --- a/tests/engine.c +++ b/tests/engine.c @@ -925,17 +925,17 @@ test_watch_fast (void) b = dconf_engine_get_state (engine); g_assert_cmpuint (a, ==, b); /* both AddMatch results come back before shm is flagged */ - dconf_engine_call_handle_reply (g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles), triv, NULL); - dconf_engine_call_handle_reply (g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles), triv, NULL); - g_assert (g_queue_is_empty (&dconf_mock_dbus_outstanding_call_handles)); + dconf_mock_dbus_async_reply (triv, NULL); + dconf_mock_dbus_async_reply (triv, NULL); + dconf_mock_dbus_assert_no_aync (); dconf_mock_shm_flag ("user"); b = dconf_engine_get_state (engine); g_assert_cmpuint (a, !=, b); g_assert_cmpstr (change_log->str, ==, ""); dconf_engine_unwatch_fast (engine, "/a/b/c"); - dconf_engine_call_handle_reply (g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles), triv, NULL); - dconf_engine_call_handle_reply (g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles), triv, NULL); - g_assert (g_queue_is_empty (&dconf_mock_dbus_outstanding_call_handles)); + dconf_mock_dbus_async_reply (triv, NULL); + dconf_mock_dbus_async_reply (triv, NULL); + dconf_mock_dbus_assert_no_aync (); /* Establish a watch and fail the race. */ a = dconf_engine_get_state (engine); @@ -945,17 +945,17 @@ test_watch_fast (void) b = dconf_engine_get_state (engine); g_assert_cmpuint (a, ==, b); /* one AddMatch result comes back -after- shm is flagged */ - dconf_engine_call_handle_reply (g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles), triv, NULL); + dconf_mock_dbus_async_reply (triv, NULL); dconf_mock_shm_flag ("user"); - dconf_engine_call_handle_reply (g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles), triv, NULL); - g_assert (g_queue_is_empty (&dconf_mock_dbus_outstanding_call_handles)); + dconf_mock_dbus_async_reply (triv, NULL); + dconf_mock_dbus_assert_no_aync (); b = dconf_engine_get_state (engine); g_assert_cmpuint (a, !=, b); g_assert_cmpstr (change_log->str, ==, "/:1::nil;"); dconf_engine_unwatch_fast (engine, "/a/b/c"); - dconf_engine_call_handle_reply (g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles), triv, NULL); - dconf_engine_call_handle_reply (g_queue_pop_head (&dconf_mock_dbus_outstanding_call_handles), triv, NULL); - g_assert (g_queue_is_empty (&dconf_mock_dbus_outstanding_call_handles)); + dconf_mock_dbus_async_reply (triv, NULL); + dconf_mock_dbus_async_reply (triv, NULL); + dconf_mock_dbus_assert_no_aync (); dconf_mock_gvdb_install ("/HOME/.config/dconf/user", NULL); dconf_mock_gvdb_install ("/etc/dconf/db/site", NULL); |