mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-17 23:19:29 +02:00
+ trange5.pp
This commit is contained in:
parent
44b0e19ffe
commit
7f24e436a6
@ -51,6 +51,8 @@ Range checking ........ trange1.pp range checking when converting int64/
|
||||
trange2.pp range checking when converting
|
||||
between longint and cardinal
|
||||
trange3.pp range checking for array
|
||||
trange4.pp range checking when assigning
|
||||
values to int64/qword
|
||||
Random ................ trandom.pp tests random (interactive)
|
||||
Floating Point ........ tfpu1.pp
|
||||
tfpu2.pp
|
||||
|
121
tests/test/trange5.pp
Normal file
121
tests/test/trange5.pp
Normal file
@ -0,0 +1,121 @@
|
||||
{$mode objfpc}
|
||||
uses sysutils;
|
||||
|
||||
type
|
||||
int64rec = record lo,hi:cardinal end;
|
||||
|
||||
var
|
||||
haserror,
|
||||
error: boolean;
|
||||
b: byte;
|
||||
s: shortint;
|
||||
i: smallint;
|
||||
w: word;
|
||||
l: longint;
|
||||
c: cardinal;
|
||||
t: int64;
|
||||
q: qword;
|
||||
|
||||
{$r+}
|
||||
|
||||
begin
|
||||
haserror := false;
|
||||
b := 255;
|
||||
t := b;
|
||||
q := b;
|
||||
b := 0;
|
||||
t := b;
|
||||
q := b;
|
||||
|
||||
s := 127;
|
||||
t := s;
|
||||
q := s;
|
||||
s := -128;
|
||||
t := s;
|
||||
try
|
||||
error := true;
|
||||
q := s;
|
||||
except
|
||||
error := false;
|
||||
end;
|
||||
haserror := haserror or error;
|
||||
|
||||
w := 0;
|
||||
t := w;
|
||||
q := w;
|
||||
w := 65535;
|
||||
t := w;
|
||||
q := w;
|
||||
|
||||
i := 32767;
|
||||
t := i;
|
||||
q := i;
|
||||
i := -32768;
|
||||
t := i;
|
||||
try
|
||||
error := true;
|
||||
q := i;
|
||||
except
|
||||
error := false;
|
||||
end;
|
||||
haserror := haserror or error;
|
||||
|
||||
c := 0;
|
||||
t := c;
|
||||
q := c;
|
||||
c := $ffffffff;
|
||||
t := c;
|
||||
q := c;
|
||||
|
||||
l := -maxlongint-1;
|
||||
t := l;
|
||||
try
|
||||
error := true;
|
||||
q := l;
|
||||
except
|
||||
error := false;
|
||||
end;
|
||||
haserror := haserror or error;
|
||||
l := maxlongint;
|
||||
t := l;
|
||||
q := l;
|
||||
|
||||
q := 0;
|
||||
t := q;
|
||||
with int64rec(q) do
|
||||
begin
|
||||
lo := 0;
|
||||
hi := $ffffffff;
|
||||
end;
|
||||
try
|
||||
error := true;
|
||||
t := q;
|
||||
except
|
||||
error := false;
|
||||
end;
|
||||
haserror := haserror or error;
|
||||
|
||||
with int64rec(t) do
|
||||
begin
|
||||
lo := 0;
|
||||
hi := $80000000;
|
||||
end;
|
||||
try
|
||||
error := true;
|
||||
q := t;
|
||||
except
|
||||
error := false;
|
||||
end;
|
||||
haserror := haserror or error;
|
||||
with int64rec(t) do
|
||||
begin
|
||||
lo := $ffffffff;
|
||||
hi := $7fffffff;
|
||||
end;
|
||||
q := t;
|
||||
if haserror then
|
||||
begin
|
||||
writeln('64bit range checking still buggy!');
|
||||
halt(1);
|
||||
end;
|
||||
end.
|
Loading…
Reference in New Issue
Block a user