fpc/tests/webtbs/tw1901.pp
2024-10-31 22:35:04 +01:00

62 lines
1.1 KiB
ObjectPascal

{$ifdef fpc}
{$MODE DELPHI}
{$endif}
{ Range and overflow checks need to be off }
{$Q-}
{$R-}
const Inf=extended(1/0);
NaN=extended(0/0);
MinusInf=extended(-Inf);
function make_str( tail: string ): string;
var
float: extended;
test: string;
n_test, n_tail: integer;
begin
float := 0;
str( float, test );
n_test := length( test );
n_tail := length( tail );
if ( n_test <= n_tail ) then
make_str := tail
else
begin
fillchar( test[ 1 ], n_test - n_tail, ' ' );
move( tail[ 1 ], test[ n_test - n_tail + 1 ], n_tail );
make_str := test;
end;
end;
var
s : string;
error : boolean;
s1, s2, s3 : string;
begin
s1 := make_str( '+Inf' );
s2 := make_str( 'Nan' );
s3 := make_str( '-Inf' );
error:=false;
str(Inf,s);
writeln('Inf: "',s,'"');
if s<>s1 then
error:=true;
str(NaN,s);
writeln('Nan: "',s,'"');
if s<>s2 then
error:=true;
str(MinusInf,s);
writeln('MinusInf: "',s,'"');
if s<>s3 then
error:=true;
if error then
begin
writeln('ERROR!');
halt(1);
end;
end.