basic mem testing

This commit is contained in:
carl 2002-03-05 21:52:00 +00:00
parent 6f0aa2326e
commit 5c63343e71

View File

@ -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
}