|
@@ -0,0 +1,61 @@
|
|
|
+{$mode objfpc}
|
|
|
+
|
|
|
+function comparearr(const a,b: array of byte; len: integer): Boolean;
|
|
|
+var
|
|
|
+ i : integer;
|
|
|
+begin
|
|
|
+ for i:=0 to len-1 do
|
|
|
+ if a[i]<>b[i] then begin
|
|
|
+ Result:=false;
|
|
|
+ Exit;
|
|
|
+ end;
|
|
|
+ Result:=true;
|
|
|
+end;
|
|
|
+
|
|
|
+procedure printarr(const a: array of byte);
|
|
|
+var
|
|
|
+ i : integer;
|
|
|
+begin
|
|
|
+ for i:=0 to length(a)-1 do write(a[i],' ');
|
|
|
+ writeln;
|
|
|
+end;
|
|
|
+
|
|
|
+const
|
|
|
+ size_cnt = 8;
|
|
|
+ size_inc = 20;
|
|
|
+ size_dec = 4;
|
|
|
+
|
|
|
+var
|
|
|
+ a: array of byte;
|
|
|
+ b: array of byte;
|
|
|
+ i: integer;
|
|
|
+ r: integer;
|
|
|
+begin
|
|
|
+ SetLength(a, size_cnt);
|
|
|
+ for i:=0 to length(a)-1 do a[i]:=$F0+i;
|
|
|
+
|
|
|
+ // test decrease size
|
|
|
+ // match, by less size
|
|
|
+ b:=a;
|
|
|
+ SetLength(b, size_dec);
|
|
|
+ if not comparearr(a,b,length(b)) then
|
|
|
+ halt(1);
|
|
|
+
|
|
|
+ // test same size/copy
|
|
|
+ // full match
|
|
|
+ b:=a;
|
|
|
+ SetLength(b, length(b));
|
|
|
+ if not comparearr(a,b,length(b)) then
|
|
|
+ halt(1);
|
|
|
+
|
|
|
+ // test increase size
|
|
|
+ // first part must match, last part must be zero
|
|
|
+ b:=a;
|
|
|
+ SetLength(b, size_inc);
|
|
|
+ if not comparearr(a,b,length(a)) then
|
|
|
+ halt(1);
|
|
|
+ r:=1;
|
|
|
+ for i:=length(a) to length(b)-1 do
|
|
|
+ if b[i]<>0 then begin r:=0; halt(1) end;
|
|
|
+ writeln('ok');
|
|
|
+end.
|