home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG050.ARK
/
TESTER.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1984-04-29
|
4KB
|
182 lines
(*
TITLE pascal compiler TESTER program
FILENAME TESTER.PAS
AUTHOR Robert A. Van Valzah 01/08/80
LAST REVISED R. A. V. 01/15/80
REASON added repeat and while testing
*)
(* check that all legal declaraton syntax is accepted *)
(* semantics can be checked only by inspection of the
generated code *)
const
c1 = 'x';
c2 = 13;
c3 = c2;
c4 = c3+13;
c5 = c2+c3+c4;
amax = 513; (* max array subsript tested *)
type
t1 = c1..c2;
t2 = 0 ..c2;
t3 = c1..99;
t4 = t3;
t5 = (zero,one,two);
t6 = 0..99;
t7 = array [t1] of t6;
watyp = array [0..amax] of word;
aatyp = array [0..amax] of alfa;
var
v1 : t1;
v2,v3 : t2;
v4 : t6;
gi : word; (* global variables used below *)
gj : word;
gwa : watyp; (* global word array *)
gaa : aatyp; (* global alfa array *)
apatr : alfa; (* alfa test pattern *)
procedure fortest;
var i : word;
procedure crlf; (* test nested procedures *)
begin put#1(13,10) end;
begin
put#1('for test',13,10);
put#1('lcl 1-10');
for i:=1 to 10 do put#1(' ',i#);
crlf;
put#1('gbl 1-10');
for gi:=1 to 10 do put#1(' ',gi#);
crlf;
put#1('lcl 10-1');
for i:=10 downto 1 do put#1(' ',i#);
crlf;
end; (* procedure fortest *)
procedure repttest;
var i : word;
begin
put#1('rpt 1-10');
i:=1;
repeat
put#1(' ',i#); i:=i+1
until i>10;
put#1(13,10)
end; (* procedure repttest *)
procedure whiltest;
var i : word;
begin
put#1('whl 1-10');
i:=1;
while i<=10 do begin
put#1(' ',i#); i:=i+1 end;
put#1(13,10)
end; (* procedure whiltest *)
procedure simpvar; (* test simple variables *)
var i,j : word;
a,b : alfa;
begin
put#1('testing ','simpvars',13,10);
i:=513;j:=1027; (* adjacent vars unique? *)
if i<>513 then put#1('nope i=',i#);
if j<>1027 then put#1('nope j=',j#);
a:='abcdefgh';
if a<>'abcdefgh' then put#1('alfacmpr');
(* test simple alfa subscripting hack *)
a[2]:='5'+'6'*256; (* a should = 'abcd56gh' *)
if (a<>'abcd56gh') or (a[2]<>'5'+'6'*256) then
put#1('alfa sub')
end; (* simpvar *)
procedure arytest; (* test array variables *)
var i: word; (* index to test arrays *)
(* return word array test data based on subscript *)
function pattern(i: word);
begin pattern:=amax-i+13 end;
procedure wordary; (* test word arrays *)
var lwa: watyp; (* local word array *)
begin
put#1('lwordary');
(* fill array with test pattern *)
for i:=0 to amax do lwa[i]:=pattern(i);
for i:=0 to amax do
if lwa[i]<>pattern(i) then
put#1('lwa fail',i#);
for i:=0 to amax do gwa[i]:=pattern(i);
for i:=0 to amax do
if gwa[i]<>pattern(i) then
put#1('gwa fail ',i#);
put#1(13,10)
end; (* procedure wordary *)
procedure alfaary; (* test alfa arrays *)
var laa: aatyp;
a: alfa;
(* return alfa array test data based in apatr *)
procedure alfapatr(i: word);
begin
apatr[3]:=i*3;
apatr[2]:=i*5;
apatr[1]:=i*7;
apatr[0]:=i*9
end; (* procedure alfapatr *)
begin (* procedure alfaary *)
put#1(13,10,'lalfaary');
for i:=0 to amax do begin
put#1('-');
alfapatr(i); laa[i]:=apatr end;
for i:=0 to amax do begin
alfapatr(i);
if laa[i]<>apatr
then put#1('laa fail',i#)
else put#1('.') end;
put#1(13,10,'galfaary');
for i:=0 to amax do begin
put#1('-');
alfapatr(i); gaa[i]:=apatr end;
for i:=0 to amax do begin
alfapatr(i);
if gaa[i]<>apatr
then put#1('gaa fail',i#)
else put#1('.') end;
put#1(13,10)
end; (* procedure alfaary *)
begin (* procedure arytest *)
wordary;
alfaary
end; (* procedure arytest *)
begin (* main line *)
fortest;
repttest;
whiltest;
simpvar;
arytest
end.