| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- MODULE test_glib ;
- (*
- m2-GTK4 test - GLib main loop, timeout source and monotonic clock.
- This test needs no display and is safe to run headless.
- Build/run: see tests/run_tests.sh or `make check`.
- *)
- FROM GLib IMPORT g_main_loop_new, g_main_loop_run, g_main_loop_quit,
- g_timeout_add, GSourceRemove, g_get_monotonic_time, g_usleep;
- FROM SYSTEM IMPORT ADDRESS;
- FROM libc IMPORT printf;
- VAR
- loop: ADDRESS;
- fired: BOOLEAN;
- PROCEDURE OnTimeout (data: ADDRESS) : INTEGER;
- BEGIN
- fired := TRUE;
- g_main_loop_quit(loop);
- RETURN GSourceRemove
- END OnTimeout;
- VAR
- t0, t1: LONGINT;
- ok: BOOLEAN;
- BEGIN
- fired := FALSE;
- loop := g_main_loop_new(NIL, 0);
- IF loop = NIL THEN
- printf("test_glib: FAIL (g_main_loop_new returned NIL)\n");
- HALT(1)
- END;
- g_timeout_add(50, OnTimeout, NIL);
- g_main_loop_run(loop);
- ok := fired;
- IF NOT ok THEN printf("test_glib: timeout did not fire\n") END;
- t0 := g_get_monotonic_time();
- g_usleep(1000);
- t1 := g_get_monotonic_time();
- IF t1 <= t0 THEN
- printf("test_glib: monotonic clock did not advance\n");
- ok := FALSE
- END;
- IF ok THEN
- printf("test_glib: PASS\n");
- HALT(0)
- ELSE
- printf("test_glib: FAIL\n");
- HALT(1)
- END
- END test_glib.
|