|
Packit Service |
c6b782 |
#include <dazzle.h>
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
static GMainLoop *main_loop;
|
|
Packit Service |
c6b782 |
static DzlTaskCache *cache;
|
|
Packit Service |
c6b782 |
static GObject *foo;
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
static void
|
|
Packit Service |
c6b782 |
populate_callback (DzlTaskCache *self,
|
|
Packit Service |
c6b782 |
gconstpointer key,
|
|
Packit Service |
c6b782 |
GTask *task,
|
|
Packit Service |
c6b782 |
gpointer user_data)
|
|
Packit Service |
c6b782 |
{
|
|
Packit Service |
c6b782 |
foo = g_object_new (G_TYPE_OBJECT, NULL);
|
|
Packit Service |
c6b782 |
g_object_add_weak_pointer (G_OBJECT (foo), (gpointer *)&foo;;
|
|
Packit Service |
c6b782 |
g_task_return_pointer (task, foo, g_object_unref);
|
|
Packit Service |
c6b782 |
}
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
static void
|
|
Packit Service |
c6b782 |
get_foo_cb (GObject *object,
|
|
Packit Service |
c6b782 |
GAsyncResult *result,
|
|
Packit Service |
c6b782 |
gpointer user_data)
|
|
Packit Service |
c6b782 |
{
|
|
Packit Service |
c6b782 |
GError *error = NULL;
|
|
Packit Service |
c6b782 |
GObject *ret;
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
ret = dzl_task_cache_get_finish (cache, result, &error);
|
|
Packit Service |
c6b782 |
g_assert_no_error (error);
|
|
Packit Service |
c6b782 |
g_assert (ret != NULL);
|
|
Packit Service |
c6b782 |
g_assert (ret == foo);
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
g_assert (dzl_task_cache_evict (cache, "foo"));
|
|
Packit Service |
c6b782 |
g_object_unref (ret);
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
g_main_loop_quit (main_loop);
|
|
Packit Service |
c6b782 |
}
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
static void
|
|
Packit Service |
c6b782 |
test_task_cache (void)
|
|
Packit Service |
c6b782 |
{
|
|
Packit Service |
c6b782 |
main_loop = g_main_loop_new (NULL, FALSE);
|
|
Packit Service |
c6b782 |
cache = dzl_task_cache_new (g_str_hash,
|
|
Packit Service |
c6b782 |
g_str_equal,
|
|
Packit Service |
c6b782 |
(GBoxedCopyFunc)g_strdup,
|
|
Packit Service |
c6b782 |
(GBoxedFreeFunc)g_free,
|
|
Packit Service |
c6b782 |
g_object_ref,
|
|
Packit Service |
c6b782 |
g_object_unref,
|
|
Packit Service |
c6b782 |
100 /* msec */,
|
|
Packit Service |
c6b782 |
populate_callback, NULL, NULL);
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
g_assert (!dzl_task_cache_peek (cache, "foo"));
|
|
Packit Service |
c6b782 |
g_assert (!dzl_task_cache_evict (cache, "foo"));
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
dzl_task_cache_get_async (cache, "foo", TRUE, NULL, get_foo_cb, NULL);
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
g_main_loop_run (main_loop);
|
|
Packit Service |
c6b782 |
g_main_loop_unref (main_loop);
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
g_assert (foo == NULL);
|
|
Packit Service |
c6b782 |
}
|
|
Packit Service |
c6b782 |
|
|
Packit Service |
c6b782 |
gint
|
|
Packit Service |
c6b782 |
main (gint argc,
|
|
Packit Service |
c6b782 |
gchar *argv[])
|
|
Packit Service |
c6b782 |
{
|
|
Packit Service |
c6b782 |
g_test_init (&argc, &argv, NULL);
|
|
Packit Service |
c6b782 |
g_test_add_func ("/Dazzle/TaskCache/basic", test_task_cache);
|
|
Packit Service |
c6b782 |
return g_test_run ();
|
|
Packit Service |
c6b782 |
}
|