tmove.pp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. const
  2. err: boolean = false;
  3. var
  4. a, b: array[0..512] of byte;
  5. procedure test_forward_move;
  6. var
  7. i, j, k: longint;
  8. l: longint;
  9. begin
  10. for i := 0 to 512 do
  11. begin
  12. a[i] := byte(i);
  13. b[i] := 0;
  14. end;
  15. for i := 0 to 256 do
  16. for j := 0 to 31 do
  17. for k := 0 to 31 do
  18. begin
  19. move(a[j],b[k+4],i);
  20. { check whether we didn't write a byte too early }
  21. for l := 0 to k+3 do
  22. begin
  23. if b[l] <> 0 then
  24. begin
  25. writeln('Forward test error 1');
  26. err := true;
  27. halt(1);
  28. end;
  29. b[l] := 0;
  30. end;
  31. { check whether the actual values were copied correctly }
  32. for l := k+4 to k+i+3 do
  33. begin
  34. if b[l] <> a[j+l-(k+4)] then
  35. begin
  36. writeln('Forward test error 2');
  37. err := true;
  38. halt(1);
  39. end;
  40. b[l] := 0;
  41. end;
  42. { check whether we didn't write past the end }
  43. for l := k+i+4 to 512 do
  44. begin
  45. if b[l] <> 0 then
  46. begin
  47. writeln('Forward test error 3');
  48. err := true;
  49. halt(1);
  50. end;
  51. b[l] := 0;
  52. end;
  53. end;
  54. end;
  55. procedure test_backward_move;
  56. var
  57. i, j, k: longint;
  58. l: longint;
  59. begin
  60. for i := 0 to 128 do
  61. begin
  62. for j := 0 to 31 do
  63. for k := 0 to 31 do
  64. begin
  65. for l := 0 to 255 do
  66. begin
  67. a[l] := l;
  68. end;
  69. move(a[127-j],a[127-j-k],i);
  70. { check whether we didn't write a byte too early }
  71. for l := 0 to 127-j-k-1 do
  72. begin
  73. if a[l] <> l then
  74. begin
  75. writeln('Backward test error 1');
  76. err := true;
  77. halt(1);
  78. end;
  79. end;
  80. { check whether the actual values were copied correctly }
  81. for l := 127-j-k to 127-j-k+i-1 do
  82. begin
  83. if a[l] <> l+k then
  84. begin
  85. writeln('Backward test error 2');
  86. err := true;
  87. halt(1);
  88. end;
  89. end;
  90. { check whether we didn't write past the end }
  91. for l := 127-j-k+i to 255 do
  92. begin
  93. if a[l] <> l then
  94. begin
  95. writeln('Backward test error 3');
  96. err := true;
  97. halt(1);
  98. end;
  99. end;
  100. end;
  101. end;
  102. end;
  103. begin
  104. test_forward_move;
  105. test_backward_move;
  106. if err then
  107. halt(1);
  108. end.