MODULE test_window ; (* m2SDL3 smoke test: hidden window create -> title round-trip -> size query -> destroy. Uses a hidden window so it also passes headless (SDL_VIDEODRIVER=dummy). SDL3: CreateWindow has no x/y; most calls return BOOLEAN. *) FROM SYSTEM IMPORT ADDRESS; FROM SDL3 IMPORT SDL_Init, SDL_Quit, SDLInitVideo; FROM SDL3Video IMPORT SDL_CreateWindow, SDL_DestroyWindow, SDL_GetWindowTitle, SDL_SetWindowTitle, SDL_GetWindowSize, WindowHidden; FROM SDL3Events IMPORT SDL_PumpEvents; FROM SDL3Utils IMPORT CStrToM2; FROM StrLib IMPORT StrEqual; FROM libc IMPORT printf; VAR win: ADDRESS; title: ADDRESS; titleBuf: ARRAY [0..63] OF CHAR; w, h: INTEGER; BEGIN IF NOT SDL_Init(SDLInitVideo) THEN printf("FAIL test_window: SDL_Init video failed\n"); HALT(1) END; win := SDL_CreateWindow("m2sdl3-test", 320, 240, VAL(LONGCARD, WindowHidden)); IF win = NIL THEN printf("FAIL test_window: CreateWindow returned NIL\n"); SDL_Quit; HALT(1) END; IF NOT SDL_SetWindowTitle(win, "m2sdl3-retitled") THEN printf("FAIL test_window: SetWindowTitle failed\n"); SDL_DestroyWindow(win); SDL_Quit; HALT(1) END; title := SDL_GetWindowTitle(win); CStrToM2(title, titleBuf); IF NOT StrEqual(titleBuf, "m2sdl3-retitled") THEN printf("FAIL test_window: title round-trip mismatch\n"); SDL_DestroyWindow(win); SDL_Quit; HALT(1) END; IF NOT SDL_GetWindowSize(win, w, h) THEN printf("FAIL test_window: GetWindowSize failed\n"); SDL_DestroyWindow(win); SDL_Quit; HALT(1) END; IF (w # 320) OR (h # 240) THEN printf("FAIL test_window: size %dx%d, expected 320x240\n", w, h); SDL_DestroyWindow(win); SDL_Quit; HALT(1) END; SDL_PumpEvents; SDL_DestroyWindow(win); SDL_Quit; printf("PASS test_window\n") END test_window.