ocarina/tests/gui/idle.c

62 lines
1.4 KiB
C

/*
* Copyright 2016 (c) Anna Schumaker.
*/
#include <core/core.h>
#include <gui/idle.h>
#include <tests/test.h>
#include <tests/gui.h>
static const unsigned int N = 100;
static unsigned int cur = -1;
struct core_init_data init_data;
static bool inc_cur(void *data)
{
g_assert_cmpuint(++cur, ==, GPOINTER_TO_UINT(data));
return true;
}
static void test_idle()
{
GtkProgressBar *progress = gui_progress_bar();
unsigned int i;
for (i = 0; i < N; i++)
idle_schedule(IDLE_SYNC, inc_cur, GINT_TO_POINTER(i));
g_assert_false(gtk_widget_is_visible(GTK_WIDGET(progress)));
gui_idle_enable();
g_assert_false(gtk_widget_is_visible(GTK_WIDGET(progress)));
for (i = 0; i < (N - 1); i++) {
gui_test_main_loop();
g_assert_true(gtk_widget_is_visible(GTK_WIDGET(progress)));
g_assert_cmpfloat(idle_progress(), ==, (float)(i + 1) / N);
g_assert_cmpfloat(gtk_progress_bar_get_fraction(progress),
==, (float)(i + 1) / N);
}
gui_test_main_loop();
g_assert_false(gtk_widget_is_visible(GTK_WIDGET(progress)));
}
int main(int argc, char **argv)
{
int ret;
gtk_init(&argc, NULL);
core_init(&argc, NULL, &init_data);
gui_builder_init("share/ocarina/ocarina.ui");
gui_test_init();
while (idle_run_task()) {}
g_test_init(&argc, &argv, NULL);
g_test_add_func("/Gui/Idle", test_idle);
ret = g_test_run();
gui_test_deinit();
gui_builder_deinit();
core_deinit();
return ret;
}