testobj3: fix test

Use RTL StringRefCount instead of local GetRefCount that only supports some
platforms and depends on the internal layout of ansistring headers
This commit is contained in:
Jonas Maebe 2022-02-12 15:25:19 +01:00
parent c44f82d11a
commit b97c8bdf55

View File

@ -2,11 +2,6 @@ program testobj3;
uses
Objects;
function GetRefCount(const S: RawByteString): SizeInt;
begin
GetRefCount:=PSizeInt(PByte(S)-2*SizeOf(SizeInt))^;
end;
procedure Error(ErrNo: Integer);
begin
Writeln('Error! ', ErrNo);
@ -25,21 +20,22 @@ begin
S[3] := 'l';
S[4] := 'l';
S[5] := 'o';
if GetRefCount(S)<>1 then
writeln(stringrefcount(s));
if stringrefcount(S)<>1 then
Error(1);
coll := New(PRawByteStringCollection, Init(100, 100));
coll^.AtInsert(0, S);
if GetRefCount(S)<>2 then
if stringrefcount(S)<>2 then
Error(2);
S2 := RawByteString(coll^.At(0));
if GetRefCount(S)<>3 then
if stringrefcount(S)<>3 then
Error(3);
if S2<>'Hello' then
Error(4);
if RawByteString(coll^.At(0))<>'Hello' then
Error(5);
Dispose(coll, Done);
if GetRefCount(S)<>2 then
if stringrefcount(S)<>2 then
Error(6);
end;