mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-29 06:23:43 +02:00
79 lines
2.1 KiB
ObjectPascal
79 lines
2.1 KiB
ObjectPascal
program crctest;
|
|
|
|
{$mode objfpc}
|
|
{$h+}
|
|
|
|
uses
|
|
sysutils,
|
|
crc;
|
|
|
|
const
|
|
testseq1: string = 'MNIIQGNLVGTGLKIGIVVGRFNDFITSKLLSGAEDALLRHGVDTNDIDVAWVPGAFEIPFAAKKMAETKKYDAIITLGTVIRGATTSYDYVCNEAAKGIAQAANTTGVPVIFGIVTTENIEQAIERAGTKAGNKGVDCAVSAIEMANLNRSFE';
|
|
testseq2: string = 'MNIIQGNLVGTGLKIGIVVGRFNDFITSKLLSGAEDALLRHGVDTNDIDVAWVPGAFEIPFAAKKMAETKKYDAIITLGDVIRGATTHYDYVCNEAAKGIAQAANTTGVPVIFGIVTTENIEQAIERAGTKAGNKGVDCAVSAIEMANLNRSFE';
|
|
|
|
test1_crc128: u128 = (lo:14444300186948028230; hi:0);
|
|
test2_crc128: u128 = (lo:3310614217963326015; hi:0);
|
|
test1_crc64: qword = 14444300186948028230;
|
|
test2_crc64: qword = 3310614217963326015;
|
|
test1_crc32: longword = 3405150022;
|
|
test2_crc32: longword = 1264209917;
|
|
|
|
|
|
function IntToStr128(v: u128): string;
|
|
begin
|
|
result := 'todo';
|
|
end;
|
|
|
|
|
|
procedure perform_crc32(const name, testcase: string; result: longword);
|
|
var
|
|
crc: longword;
|
|
begin
|
|
crc := crc32(0,nil,0);
|
|
crc := crc32(crc,@testcase[1],length(testcase));
|
|
|
|
write(name,'(size=',length(testcase),'): ');
|
|
if crc=result then
|
|
writeln('passed')
|
|
else
|
|
writeln('failed (got=',crc,',expected=',result,')');
|
|
end;
|
|
|
|
procedure perform_crc64(const name, testcase: string; result: qword);
|
|
var
|
|
crc: qword;
|
|
begin
|
|
crc := crc64(0,nil,0);
|
|
crc := crc64(crc,@testcase[1],length(testcase));
|
|
|
|
write(name,'(size=',length(testcase),'): ');
|
|
if crc=result then
|
|
writeln('passed')
|
|
else
|
|
writeln('failed (got=',crc,',expected=',result,')');
|
|
end;
|
|
|
|
procedure perform_crc128(const name, testcase: string; result: u128);
|
|
var
|
|
crc: u128;
|
|
begin
|
|
crc := crc128(0,nil,0);
|
|
crc := crc128(crc,@testcase[1],length(testcase));
|
|
|
|
write(name,'(size=',length(testcase),'): ');
|
|
if crc=result then
|
|
writeln('passed')
|
|
else
|
|
writeln('failed (got=',IntToStr128(crc),',expected=',IntToStr128(result),')');
|
|
end;
|
|
|
|
|
|
begin
|
|
perform_crc32('crc32', testseq1, test1_crc32);
|
|
perform_crc32('crc32', testseq2, test2_crc32);
|
|
perform_crc64('crc64', testseq1, test1_crc64);
|
|
perform_crc64('crc64', testseq2, test2_crc64);
|
|
perform_crc128('crc128', testseq1, test1_crc128);
|
|
perform_crc128('crc128', testseq2, test2_crc128);
|
|
end.
|