PageRenderTime 24ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/fth/t_strings.fth

https://github.com/cataska/pforth
Forth | 106 lines | 88 code | 18 blank | 0 comment | 0 complexity | 387983f627f77d85470ab4c34835878d MD5 | raw file
  1. \ @(#) t_strings.fth 97/12/10 1.1
  2. \ Test ANS Forth String Word Set
  3. \
  4. \ Copyright 1994 3DO, Phil Burk
  5. include? }T{ t_tools.fth
  6. marker task-t_string.fth
  7. decimal
  8. test{
  9. echo off
  10. \ ==========================================================
  11. \ test is.ok?
  12. T{ 1 2 3 }T{ 1 2 3 }T
  13. : STR1 S" Hello " ;
  14. : STR2 S" Hello World" ;
  15. : STR3 S" " ;
  16. \ ----------------------------------------------------- -TRAILING
  17. T{ STR1 -TRAILING }T{ STR1 DROP 5 }T
  18. T{ STR2 -TRAILING }T{ STR2 }T
  19. T{ STR3 -TRAILING }T{ STR3 }T
  20. \ ----------------------------------------------------- /STRING
  21. T{ STR2 6 /STRING }T{ STR2 DROP 6 CHARS + STR2 NIP 6 - }T
  22. \ ----------------------------------------------------- BLANK
  23. : T.COMMA.SEQ ( n -- , lay down N sequential bytes )
  24. 0 ?DO I C, LOOP
  25. ;
  26. CREATE T-BLANK-DATA 64 T.COMMA.SEQ
  27. T{ T-BLANK-DATA 8 + C@ }T{ 8 }T
  28. T-BLANK-DATA 7 + 3 BLANK
  29. T{ T-BLANK-DATA 6 + C@ }T{ 6 }T
  30. T{ T-BLANK-DATA 7 + C@ }T{ BL }T
  31. T{ T-BLANK-DATA 8 + C@ }T{ BL }T
  32. T{ T-BLANK-DATA 9 + C@ }T{ BL }T
  33. T{ T-BLANK-DATA 10 + C@ }T{ 10 }T
  34. FORGET T.COMMA.SEQ
  35. \ ----------------------------------------------------- CMOVE
  36. : T.COMMA.SEQ ( n -- , lay down N sequential bytes )
  37. 0 ?DO I C, LOOP
  38. ;
  39. CREATE T-BLANK-DATA 64 T.COMMA.SEQ
  40. T-BLANK-DATA 7 + T-BLANK-DATA 6 + 3 CMOVE
  41. T{ T-BLANK-DATA 5 + C@ }T{ 5 }T
  42. T{ T-BLANK-DATA 6 + C@ }T{ 7 }T
  43. T{ T-BLANK-DATA 7 + C@ }T{ 8 }T
  44. T{ T-BLANK-DATA 8 + C@ }T{ 9 }T
  45. T{ T-BLANK-DATA 9 + C@ }T{ 9 }T
  46. FORGET T.COMMA.SEQ
  47. \ ----------------------------------------------------- CMOVE>
  48. : T.COMMA.SEQ ( n -- , lay down N sequential bytes )
  49. 0 ?DO I C, LOOP
  50. ;
  51. CREATE T-BLANK-DATA 64 T.COMMA.SEQ
  52. T{ T-BLANK-DATA 6 + T-BLANK-DATA 7 + 3 CMOVE>
  53. T{ T-BLANK-DATA 5 + C@ }T{ 5 }T
  54. T{ T-BLANK-DATA 6 + C@ }T{ 6 }T
  55. T{ T-BLANK-DATA 7 + C@ }T{ 6 }T
  56. T{ T-BLANK-DATA 8 + C@ }T{ 7 }T
  57. T{ T-BLANK-DATA 9 + C@ }T{ 8 }T
  58. T{ T-BLANK-DATA 10 + C@ }T{ 10 }T
  59. FORGET T.COMMA.SEQ
  60. \ ----------------------------------------------------- COMPARE
  61. T{ : T.COMPARE.1 S" abcd" S" abcd" compare ; t.compare.1 }T{ 0 }T
  62. T{ : T.COMPARE.2 S" abcd" S" abcde" compare ; t.compare.2 }T{ -1 }T
  63. T{ : T.COMPARE.3 S" abcdef" S" abcde" compare ; t.compare.3 }T{ 1 }T
  64. T{ : T.COMPARE.4 S" abGd" S" abcde" compare ; t.compare.4 }T{ -1 }T
  65. T{ : T.COMPARE.5 S" abcd" S" aXcde" compare ; t.compare.5 }T{ 1 }T
  66. T{ : T.COMPARE.6 S" abGd" S" abcd" compare ; t.compare.6 }T{ -1 }T
  67. T{ : T.COMPARE.7 S" World" S" World" compare ; t.compare.7 }T{ 0 }T
  68. FORGET T.COMPARE.1
  69. \ ----------------------------------------------------- SEARCH
  70. : STR-SEARCH S" ABCDefghIJKL" ;
  71. T{ : T.SEARCH.1 STR-SEARCH S" ABCD" SEARCH ; T.SEARCH.1 }T{ STR-SEARCH TRUE }T
  72. T{ : T.SEARCH.2 STR-SEARCH S" efg" SEARCH ; T.SEARCH.2 }T{
  73. STR-SEARCH 4 - SWAP 4 CHARS + SWAP TRUE }T
  74. T{ : T.SEARCH.3 STR-SEARCH S" IJKL" SEARCH ; T.SEARCH.3 }T{
  75. STR-SEARCH DROP 8 CHARS + 4 TRUE }T
  76. T{ : T.SEARCH.4 STR-SEARCH STR-SEARCH SEARCH ; T.SEARCH.4 }T{
  77. STR-SEARCH TRUE }T
  78. T{ : T.SEARCH.5 STR-SEARCH S" CDex" SEARCH ; T.SEARCH.5 }T{
  79. STR-SEARCH FALSE }T
  80. T{ : T.SEARCH.6 STR-SEARCH S" KLM" SEARCH ; T.SEARCH.6 }T{
  81. STR-SEARCH FALSE }T
  82. FORGET STR-SEARCH
  83. \ ----------------------------------------------------- SLITERAL
  84. CREATE FAKE-STRING CHAR H C, CHAR e C, CHAR l C, CHAR l C, CHAR o C,
  85. ALIGN
  86. T{ : T.SLITERAL.1 [ FAKE-STRING 5 ] SLITERAL ; T.SLITERAL.1 FAKE-STRING 5 COMPARE
  87. }T{ 0 }T
  88. }test