KeysTest.mod 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. MODULE KeysTest ;
  2. (* Read a key map and print it as hex, so the loader/decoder is asserted byte
  3. for byte by tests/term_config.sh (which copies the fixture to the fixed
  4. path). *)
  5. FROM Keys IMPORT Map, Load ;
  6. FROM Posix IMPORT write ;
  7. FROM SYSTEM IMPORT ADR ;
  8. VAR
  9. m : Map ;
  10. ok : BOOLEAN ;
  11. n : LONGINT ;
  12. ch : CHAR ;
  13. PROCEDURE Out (s : ARRAY OF CHAR) ;
  14. VAR i : CARDINAL ;
  15. BEGIN
  16. i := 0 ;
  17. WHILE (i <= HIGH (s)) AND (s [i] # 0C) DO
  18. ch := s [i] ;
  19. n := write (1, ADR (ch), 1) ;
  20. INC (i)
  21. END
  22. END Out ;
  23. PROCEDURE NL ;
  24. BEGIN
  25. ch := CHR (10) ;
  26. n := write (1, ADR (ch), 1)
  27. END NL ;
  28. PROCEDURE HexDig (d : CARDINAL) ;
  29. BEGIN
  30. IF d < 10 THEN
  31. ch := CHR (ORD ('0') + d)
  32. ELSE
  33. ch := CHR (ORD ('A') + d - 10)
  34. END ;
  35. n := write (1, ADR (ch), 1)
  36. END HexDig ;
  37. PROCEDURE K (label : ARRAY OF CHAR ; c : CHAR) ;
  38. BEGIN
  39. Out (label) ; Out ("=") ;
  40. HexDig (ORD (c) DIV 16) ; HexDig (ORD (c) MOD 16) ;
  41. NL
  42. END K ;
  43. BEGIN
  44. Load ("../tmp/key_test.key", m, ok) ;
  45. IF ok THEN Out ("ok=1") ELSE Out ("ok=0") END ;
  46. NL ;
  47. K ("QUIT", m.quit) ;
  48. K ("CANCEL", m.cancel) ;
  49. K ("PREFIX", m.prefix) ;
  50. K ("LITERAL", m.literal) ;
  51. K ("WORDLEFT", m.wordLeft) ;
  52. K ("CHARLEFT", m.charLeft) ;
  53. K ("CHARRIGHT", m.charRight) ;
  54. K ("WORDRIGHT", m.wordRight) ;
  55. K ("LINEUP", m.lineUp) ;
  56. K ("LINEDOWN", m.lineDown) ;
  57. K ("SCROLLUP", m.scrollUp) ;
  58. K ("SCROLLDOWN", m.scrollDown) ;
  59. K ("PAGEUP", m.pageUp) ;
  60. K ("PAGEDOWN", m.pageDown) ;
  61. K ("INSERTTOGGLE", m.insertToggle) ;
  62. K ("DELETECHAR", m.deleteChar) ;
  63. K ("DELETELEFT", m.deleteLeft) ;
  64. K ("DELETEWORD", m.deleteWord) ;
  65. K ("INSERTBREAK", m.insertBreak) ;
  66. K ("DELETELINE", m.deleteLine) ;
  67. K ("REPEAT", m.repeatLast) ;
  68. K ("AUTOTAB", m.autoTab) ;
  69. K ("NEWLINE", m.newLine)
  70. END KeysTest.