| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- MODULE test_key ;
- (*
- m2SDL test: push synthetic SDL_Event buffers through
- SDL_PushEvent and check PollM2Event decodes type 0300H
- (key down, sym at offset 20) and 0100H (quit).
- *)
- FROM SYSTEM IMPORT ADDRESS, ADR;
- FROM SDL2 IMPORT SDL_Init, SDL_Quit, SDLInitEvents;
- FROM SDLEvents IMPORT SDL_PushEvent, EventKeyDown, EventQuit;
- FROM SDLUtils IMPORT PollM2Event, M2Event, evKey, evQuit;
- FROM libc IMPORT printf;
- VAR
- buf: ARRAY [0..55] OF CHAR;
- ev: M2Event;
- i: INTEGER;
- PROCEDURE ZeroBuf;
- VAR j: INTEGER;
- BEGIN
- FOR j := 0 TO 55 DO buf[j] := 0C END
- END ZeroBuf;
- PROCEDURE Put32 (off: CARDINAL; v: CARDINAL);
- BEGIN
- buf[off] := CHR(v MOD 256);
- buf[off+1] := CHR(v DIV 256 MOD 256);
- buf[off+2] := CHR(v DIV 65536 MOD 256);
- buf[off+3] := CHR(v DIV 16777216 MOD 256)
- END Put32;
- PROCEDURE Fail (msg: ARRAY OF CHAR);
- BEGIN
- printf("FAIL test_key: %s\n", msg);
- HALT(1)
- END Fail;
- BEGIN
- IF SDL_Init(SDLInitEvents) # 0 THEN
- printf("FAIL test_key: SDL_Init events\n");
- HALT(1)
- END;
- (* key down, sym "q" = 113. *)
- ZeroBuf;
- Put32(0, EventKeyDown);
- Put32(20, 113);
- IF SDL_PushEvent(ADR(buf)) # 1 THEN Fail("push key") END;
- (* quit. *)
- ZeroBuf;
- Put32(0, EventQuit);
- IF SDL_PushEvent(ADR(buf)) # 1 THEN Fail("push quit") END;
- IF NOT PollM2Event(ev) THEN Fail("poll 1 empty") END;
- IF ORD(ev.kind) # ORD(evKey) THEN Fail("ev1 not key") END;
- IF NOT ev.pressed THEN Fail("ev1 not pressed") END;
- IF ev.sym # 113 THEN Fail("ev1 sym") END;
- IF NOT PollM2Event(ev) THEN Fail("poll 2 empty") END;
- IF ORD(ev.kind) # ORD(evQuit) THEN Fail("ev2 not quit") END;
- IF PollM2Event(ev) THEN Fail("queue not drained") END;
- SDL_Quit;
- printf("PASS test_key\n")
- END test_key.
|