1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
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.
|