MODULE test_window ; (* m2SDL smoke test: hidden window create -> title round-trip -> size query -> destroy. Uses a hidden window so it also passes headless (SDL_VIDEODRIVER=dummy). *) FROM SYSTEM IMPORT ADDRESS; FROM SDL2 IMPORT SDL_Init, SDL_Quit, SDLInitVideo; FROM SDLVideo IMPORT SDL_CreateWindow, SDL_DestroyWindow, SDL_GetWindowTitle, SDL_SetWindowTitle, SDL_GetWindowSize, WindowHidden, WindowPosUndefined; FROM SDLEvents IMPORT SDL_PumpEvents; FROM SDLUtils IMPORT CStrToM2; FROM StrLib IMPORT StrEqual; FROM libc IMPORT printf; VAR win: ADDRESS; title: ADDRESS; titleBuf: ARRAY [0..63] OF CHAR; w, h: INTEGER; rc: INTEGER; BEGIN rc := SDL_Init(SDLInitVideo); IF rc # 0 THEN printf("FAIL test_window: SDL_Init video -> %d\n", rc); HALT(1) END; win := SDL_CreateWindow("m2sdl-test", WindowPosUndefined, WindowPosUndefined, 320, 240, WindowHidden); IF win = NIL THEN printf("FAIL test_window: CreateWindow returned NIL\n"); SDL_Quit; HALT(1) END; SDL_SetWindowTitle(win, "m2sdl-retitled"); title := SDL_GetWindowTitle(win); CStrToM2(title, titleBuf); IF NOT StrEqual(titleBuf, "m2sdl-retitled") THEN printf("FAIL test_window: title round-trip mismatch\n"); SDL_DestroyWindow(win); SDL_Quit; HALT(1) END; SDL_GetWindowSize(win, w, h); 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.