Browse Source

basic mem testing

carl 23 years ago
parent
commit
5c63343e71
1 changed files with 98 additions and 0 deletions
  1. 98 0
      tests/test/units/system/tmem.pp

+ 98 - 0
tests/test/units/system/tmem.pp

@@ -0,0 +1,98 @@
+{ This unit tests the basic routines         }
+{ which are usually coded in assembler       }
+{ Mainly used in porting to other processors }
+program tmem;
+
+const
+  MAX_TABLE = 69;  { this value should not be even ! }
+  DEFAULT_VALUE = $55;
+  FILL_VALUE = $33;
+  
+  
+var
+  dst_array : array[1..MAX_TABLE] of byte;
+  src_array : array[1..MAX_TABLE] of byte;
+  i: integer;
+  
+
+procedure test(value, required: longint);
+begin
+  if value <> required then
+    begin
+      writeln('Got ',value,' instead of ',required);
+      halt(1);
+    end;
+end;
+
+  
+  
+
+procedure test_fillchar;
+ var
+  i: integer;
+ begin
+  { non-aligned count }
+  write('testing fillchar (non-aligned size)...');
+  for i := 1 to MAX_TABLE do
+    dst_array[i] := DEFAULT_VALUE;
+  fillchar(dst_array, MAX_TABLE-2, FILL_VALUE);
+  test(dst_array[MAX_TABLE], DEFAULT_VALUE);
+  test(dst_array[MAX_TABLE-1], DEFAULT_VALUE);
+  for i := 1 to MAX_TABLE-2 do
+    test(dst_array[i], FILL_VALUE);
+  writeln('Passed!');
+  { modulo 2 count fill }
+  write('testing fillchar (aligned size)...');
+  for i := 1 to MAX_TABLE do
+    dst_array[i] := DEFAULT_VALUE;
+  fillchar(dst_array, MAX_TABLE-1, FILL_VALUE);
+  test(dst_array[MAX_TABLE], DEFAULT_VALUE);
+  for i := 1 to MAX_TABLE-1 do
+    test(dst_array[i], FILL_VALUE);
+  writeln('Passed!');
+ end;
+
+
+procedure test_move;
+begin
+  { non-aligned count }
+  write('testing move (non-aligned size)...');
+  for i := 1 to MAX_TABLE do
+  begin
+    dst_array[i] := DEFAULT_VALUE;
+    src_array[i] := FILL_VALUE;
+  end;  
+  move(src_array, dst_array, MAX_TABLE-2);
+  test(dst_array[MAX_TABLE], DEFAULT_VALUE);
+  test(dst_array[MAX_TABLE-1], DEFAULT_VALUE);
+  for i:= 1 to MAX_TABLE-2 do
+    test(dst_array[i], FILL_VALUE);
+  writeln('Passed!');
+  { modulo 2 count fill }
+  { non-aligned count }
+  write('testing move (aligned size)...');
+  for i := 1 to MAX_TABLE do
+  begin
+    dst_array[i] := DEFAULT_VALUE;
+    src_array[i] := FILL_VALUE;
+  end;  
+  move(src_array, dst_array, MAX_TABLE-1);
+  test(dst_array[MAX_TABLE], DEFAULT_VALUE);
+  for i:= 1 to MAX_TABLE-1 do
+    test(dst_array[i], FILL_VALUE);
+  writeln('Passed!');
+end;
+
+
+
+begin
+  test_fillchar;
+  test_move;
+end.
+
+{
+  $Log$
+  Revision 1.1  2002-03-05 21:52:00  carl
+  basic mem testing
+
+}