test_version.mod 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. MODULE test_version ;
  2. (*
  3. m2-GTK4 test - GTK reports version 4 and every binding module links.
  4. Widget construction is guarded by gtk_init_check() so the test also
  5. runs (and passes) headless, where only the version/link part runs.
  6. *)
  7. FROM Gtk IMPORT gtk_init_check, gtk_get_major_version, gtk_get_minor_version;
  8. FROM GtkApplication IMPORT gtk_application_new;
  9. FROM GtkWindow IMPORT gtk_window_new, gtk_window_destroy;
  10. FROM GtkLabel IMPORT gtk_label_new;
  11. FROM GtkButton IMPORT gtk_button_new_with_label;
  12. FROM GtkEnums IMPORT GtkAlignCenter, GtkVertical;
  13. FROM GLib IMPORT g_get_monotonic_time;
  14. FROM SYSTEM IMPORT ADDRESS;
  15. FROM libc IMPORT printf;
  16. VAR
  17. major, minor: CARDINAL;
  18. ok: BOOLEAN;
  19. rc: INTEGER;
  20. app, window, label, button: ADDRESS;
  21. BEGIN
  22. major := gtk_get_major_version();
  23. minor := gtk_get_minor_version();
  24. printf("GTK version: %d.%d\n", major, minor);
  25. ok := (major = 4);
  26. IF g_get_monotonic_time() = 0 THEN ok := FALSE END;
  27. IF (GtkAlignCenter # 3) OR (GtkVertical # 1) THEN ok := FALSE END;
  28. rc := gtk_init_check();
  29. IF rc # 0 THEN
  30. app := gtk_application_new("org.example.m2gtk4.Version", 0);
  31. IF app = NIL THEN ok := FALSE END;
  32. window := gtk_window_new();
  33. IF window = NIL THEN ok := FALSE END;
  34. label := gtk_label_new("x");
  35. IF label = NIL THEN ok := FALSE END;
  36. button := gtk_button_new_with_label("x");
  37. IF button = NIL THEN ok := FALSE END;
  38. gtk_window_destroy(window)
  39. ELSE
  40. printf("(no display: widget construction skipped)\n")
  41. END;
  42. IF ok THEN
  43. printf("test_version: PASS\n");
  44. HALT(0)
  45. ELSE
  46. printf("test_version: FAIL\n");
  47. HALT(1)
  48. END
  49. END test_version.