/* * Copyright 2016 (c) Anna Schumaker. */ #include #include #include #include static const unsigned int N = 100; static unsigned int cur = -1; 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++) { 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); } 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, NULL, NULL, IDLE_SYNC); gui_builder_init("share/ocarina/ocarina.ui"); test_loop_init(); while (idle_run_task()) {} g_test_init(&argc, &argv, NULL); g_test_add_func("/Gui/Idle", test_idle); ret = g_test_run(); test_loop_deinit(); gui_builder_deinit(); core_deinit(); return ret; }