MODULE KeysTest ; (* Read a key map and print it as hex, so the loader/decoder is asserted byte for byte by tests/term_config.sh (which copies the fixture to the fixed path). *) FROM Keys IMPORT Map, Load ; FROM Posix IMPORT write ; FROM SYSTEM IMPORT ADR ; VAR m : Map ; ok : BOOLEAN ; n : LONGINT ; ch : CHAR ; PROCEDURE Out (s : ARRAY OF CHAR) ; VAR i : CARDINAL ; BEGIN i := 0 ; WHILE (i <= HIGH (s)) AND (s [i] # 0C) DO ch := s [i] ; n := write (1, ADR (ch), 1) ; INC (i) END END Out ; PROCEDURE NL ; BEGIN ch := CHR (10) ; n := write (1, ADR (ch), 1) END NL ; PROCEDURE HexDig (d : CARDINAL) ; BEGIN IF d < 10 THEN ch := CHR (ORD ('0') + d) ELSE ch := CHR (ORD ('A') + d - 10) END ; n := write (1, ADR (ch), 1) END HexDig ; PROCEDURE K (label : ARRAY OF CHAR ; c : CHAR) ; BEGIN Out (label) ; Out ("=") ; HexDig (ORD (c) DIV 16) ; HexDig (ORD (c) MOD 16) ; NL END K ; BEGIN Load ("../tmp/key_test.key", m, ok) ; IF ok THEN Out ("ok=1") ELSE Out ("ok=0") END ; NL ; K ("QUIT", m.quit) ; K ("CANCEL", m.cancel) ; K ("PREFIX", m.prefix) ; K ("LITERAL", m.literal) ; K ("WORDLEFT", m.wordLeft) ; K ("CHARLEFT", m.charLeft) ; K ("CHARRIGHT", m.charRight) ; K ("WORDRIGHT", m.wordRight) ; K ("LINEUP", m.lineUp) ; K ("LINEDOWN", m.lineDown) ; K ("SCROLLUP", m.scrollUp) ; K ("SCROLLDOWN", m.scrollDown) ; K ("PAGEUP", m.pageUp) ; K ("PAGEDOWN", m.pageDown) ; K ("INSERTTOGGLE", m.insertToggle) ; K ("DELETECHAR", m.deleteChar) ; K ("DELETELEFT", m.deleteLeft) ; K ("DELETEWORD", m.deleteWord) ; K ("INSERTBREAK", m.insertBreak) ; K ("DELETELINE", m.deleteLine) ; K ("REPEAT", m.repeatLast) ; K ("AUTOTAB", m.autoTab) ; K ("NEWLINE", m.newLine) END KeysTest.