test_platform.mod 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. MODULE test_platform ;
  2. (*
  3. m2-GTK4 test - the platform namespaces: Gdk, Gsk, libspelling and
  4. libpanel. Requires a display. libspelling/libpanel are optional.
  5. *)
  6. FROM GtkApplication IMPORT gtk_application_new;
  7. FROM Gio IMPORT g_application_run, g_application_quit;
  8. FROM GtkWindow IMPORT gtk_application_window_new, gtk_window_set_child,
  9. gtk_window_present;
  10. FROM GtkLabel IMPORT gtk_label_new;
  11. FROM GtkUtils IMPORT Connect;
  12. FROM GdkDisplay IMPORT gdk_display_get_default;
  13. FROM GskTransform IMPORT gsk_transform_new, gsk_transform_scale,
  14. gsk_transform_to_string;
  15. FROM SpellingFunctions IMPORT spelling_init;
  16. FROM SpellingChecker IMPORT spelling_checker_get_default;
  17. FROM PanelFunctions IMPORT panel_init, panel_get_major_version;
  18. FROM PanelActionMuxer IMPORT panel_action_muxer_new;
  19. FROM PanelFrame IMPORT panel_frame_new;
  20. FROM SYSTEM IMPORT ADDRESS, ADR;
  21. FROM libc IMPORT printf;
  22. CONST
  23. AppId = "org.example.m2gtk4.TestPlatform";
  24. VAR
  25. app: ADDRESS;
  26. passed: BOOLEAN;
  27. failures: INTEGER;
  28. PROCEDURE Check (cond: BOOLEAN; what: ARRAY OF CHAR);
  29. BEGIN
  30. IF cond THEN
  31. printf(" ok - %s\n", what)
  32. ELSE
  33. printf(" NOT OK - %s\n", what);
  34. INC(failures)
  35. END
  36. END Check;
  37. PROCEDURE OnActivate (application: ADDRESS; data: ADDRESS);
  38. VAR
  39. window, label: ADDRESS;
  40. t, t2: ADDRESS;
  41. s: ADDRESS;
  42. sx, sy: SHORTREAL;
  43. BEGIN
  44. failures := 0;
  45. Check(gdk_display_get_default () # NIL, "GdkDisplay::get_default");
  46. t := gsk_transform_new();
  47. sx := 2.0;
  48. sy := 2.0;
  49. t2 := gsk_transform_scale (t, sx, sy);
  50. s := gsk_transform_to_string (t2);
  51. Check((t # NIL) AND (t2 # NIL) AND (s # NIL), "GskTransform scale/string");
  52. panel_init();
  53. Check(panel_get_major_version () >= 1, "libpanel version");
  54. Check(panel_action_muxer_new () # NIL, "PanelActionMuxer");
  55. Check(panel_frame_new () # NIL, "PanelFrame");
  56. spelling_init();
  57. Check(spelling_checker_get_default () # NIL, "SpellingChecker::get_default");
  58. window := gtk_application_window_new(application);
  59. label := gtk_label_new("platform namespaces: Gdk / Gsk / libspelling / libpanel");
  60. gtk_window_set_child(window, label);
  61. gtk_window_present(window);
  62. passed := (failures = 0);
  63. g_application_quit(application)
  64. END OnActivate;
  65. VAR
  66. rc: INTEGER;
  67. BEGIN
  68. passed := FALSE;
  69. failures := 0;
  70. app := gtk_application_new(AppId, 0);
  71. IF app = NIL THEN
  72. printf("test_platform: FAIL (no app)\n");
  73. HALT(1)
  74. END;
  75. Connect(app, "activate", ADR(OnActivate), NIL);
  76. rc := g_application_run(app, 0, NIL);
  77. IF passed THEN
  78. printf("test_platform: PASS\n");
  79. HALT(0)
  80. ELSE
  81. printf("test_platform: FAIL\n");
  82. HALT(1)
  83. END
  84. END test_platform.