TermCfgTest.mod 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. MODULE TermCfgTest ;
  2. (* Read a terminal config and print it as hex, so the loader and the escape
  3. decoder are asserted byte for byte (tests/term_config.sh compares this with
  4. an expected file). The path is fixed because this is a harness program, not
  5. a configurable tool: the script copies the fixture there. *)
  6. FROM TermCfg IMPORT Cfg, Load ;
  7. FROM Posix IMPORT write ;
  8. FROM SYSTEM IMPORT ADR ;
  9. VAR
  10. c : Cfg ;
  11. ok : BOOLEAN ;
  12. n : LONGINT ;
  13. ch : CHAR ;
  14. PROCEDURE Out (s : ARRAY OF CHAR) ;
  15. VAR i : CARDINAL ;
  16. BEGIN
  17. i := 0 ;
  18. WHILE (i <= HIGH (s)) AND (s [i] # 0C) DO
  19. ch := s [i] ;
  20. n := write (1, ADR (ch), 1) ;
  21. INC (i)
  22. END
  23. END Out ;
  24. PROCEDURE NL ;
  25. BEGIN
  26. ch := CHR (10) ;
  27. n := write (1, ADR (ch), 1)
  28. END NL ;
  29. PROCEDURE HexDig (d : CARDINAL) ;
  30. BEGIN
  31. IF d < 10 THEN
  32. ch := CHR (ORD ('0') + d)
  33. ELSE
  34. ch := CHR (ORD ('A') + d - 10)
  35. END ;
  36. n := write (1, ADR (ch), 1)
  37. END HexDig ;
  38. PROCEDURE Hex (label : ARRAY OF CHAR ; s : ARRAY OF CHAR) ;
  39. VAR i, o : CARDINAL ;
  40. BEGIN
  41. Out (label) ;
  42. Out ("=") ;
  43. i := 0 ;
  44. WHILE (i <= HIGH (s)) AND (s [i] # 0C) DO
  45. o := ORD (s [i]) ;
  46. HexDig (o DIV 16) ;
  47. HexDig (o MOD 16) ;
  48. Out (" ") ;
  49. INC (i)
  50. END ;
  51. NL
  52. END Hex ;
  53. BEGIN
  54. Load ("../tmp/term_test.trm", c, ok) ;
  55. IF ok THEN Out ("ok=1") ELSE Out ("ok=0") END ;
  56. NL ;
  57. Out ("NAME=") ; Out (c.name) ; NL ;
  58. Hex ("CLEAR", c.clear) ;
  59. Hex ("HOME", c.home) ;
  60. Hex ("GOTO", c.moveTo) ;
  61. Hex ("NORMAL", c.normal) ;
  62. Hex ("MARKED", c.marked) ;
  63. Hex ("BEEP", c.beep)
  64. END TermCfgTest.