test_window.mod 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. MODULE test_window ;
  2. (*
  3. m2SDL3 smoke test: hidden window create -> title round-trip ->
  4. size query -> destroy. Uses a hidden window so it also passes
  5. headless (SDL_VIDEODRIVER=dummy).
  6. SDL3: CreateWindow has no x/y; most calls return BOOLEAN.
  7. *)
  8. FROM SYSTEM IMPORT ADDRESS;
  9. FROM SDL3 IMPORT SDL_Init, SDL_Quit, SDLInitVideo;
  10. FROM SDL3Video IMPORT SDL_CreateWindow, SDL_DestroyWindow,
  11. SDL_GetWindowTitle, SDL_SetWindowTitle, SDL_GetWindowSize,
  12. WindowHidden;
  13. FROM SDL3Events IMPORT SDL_PumpEvents;
  14. FROM SDL3Utils IMPORT CStrToM2;
  15. FROM StrLib IMPORT StrEqual;
  16. FROM libc IMPORT printf;
  17. VAR
  18. win: ADDRESS;
  19. title: ADDRESS;
  20. titleBuf: ARRAY [0..63] OF CHAR;
  21. w, h: INTEGER;
  22. BEGIN
  23. IF NOT SDL_Init(SDLInitVideo) THEN
  24. printf("FAIL test_window: SDL_Init video failed\n");
  25. HALT(1)
  26. END;
  27. win := SDL_CreateWindow("m2sdl3-test", 320, 240,
  28. VAL(LONGCARD, WindowHidden));
  29. IF win = NIL THEN
  30. printf("FAIL test_window: CreateWindow returned NIL\n");
  31. SDL_Quit;
  32. HALT(1)
  33. END;
  34. IF NOT SDL_SetWindowTitle(win, "m2sdl3-retitled") THEN
  35. printf("FAIL test_window: SetWindowTitle failed\n");
  36. SDL_DestroyWindow(win);
  37. SDL_Quit;
  38. HALT(1)
  39. END;
  40. title := SDL_GetWindowTitle(win);
  41. CStrToM2(title, titleBuf);
  42. IF NOT StrEqual(titleBuf, "m2sdl3-retitled") THEN
  43. printf("FAIL test_window: title round-trip mismatch\n");
  44. SDL_DestroyWindow(win);
  45. SDL_Quit;
  46. HALT(1)
  47. END;
  48. IF NOT SDL_GetWindowSize(win, w, h) THEN
  49. printf("FAIL test_window: GetWindowSize failed\n");
  50. SDL_DestroyWindow(win);
  51. SDL_Quit;
  52. HALT(1)
  53. END;
  54. IF (w # 320) OR (h # 240) THEN
  55. printf("FAIL test_window: size %dx%d, expected 320x240\n", w, h);
  56. SDL_DestroyWindow(win);
  57. SDL_Quit;
  58. HALT(1)
  59. END;
  60. SDL_PumpEvents;
  61. SDL_DestroyWindow(win);
  62. SDL_Quit;
  63. printf("PASS test_window\n")
  64. END test_window.