Blame tests/test-task-cache.c

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
}