123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- -- tests all details of USE80.PAS implemantation
- #W
- $A:=#F('4.0');
- $B:=#F('0.1');
- PRINT (. $A $B .);
- PRINT #CALL_PAS(80 '*' $A $B);
- #CALL_PAS(1);
- $F:=#TEST1(); -- returns 123.456
- #TEST2($F[1]);
- #TEST3( $F);
- #TEST4( $F);
- #TEST5();
- ##
- #TEST2 $F
- /
- PRINT (. 'printout in exponential forms:' .);
- PRINT (. print $F .);
- PRINT (. explode #EXPLODE($F) .);
- PRINT (. implode #IMPLODE($F) .);
- OPEN D ' ';
- D<< '<<-output ' $F;
- CLOSE D/
- ##
- #TEST3 $F
- / $XX:=#CALL_PAS(80 S '123.456');
- PRINT (. '80-S:good' $XX .);
- PRINT (. '80-s:NULL' #CALL_PAS(80 S '-1E77') .);
- PRINT (. '80-i:integer' #CALL_PAS(80 I 123) .);
- PRINT (. 'digits for 123.456 ' #CALL_PAS(80 D $F[1]) .);
- PRINT (. 'digits for 123E+12 ' #CALL_PAS(80 D $F[3]) .);
- PRINT (. 'digits for my-num=null ' #CALL_PAS(80 D $XX) .) ;
- $X:=$F[1];
- $D:=#CALL_PAS(80 D $X);
- IF $D AND ($D[1]+$D[2]>0) ->
- $REZ:=#CALL_PAS(80 Z $X ($D[1]+$D[2]+1)*100+$D[2])
- ELSIF T->
- $REZ:=#CALL_PAS(80 V $X)
- FI;
- PRINT(. 'doctest=123.456=' $REZ .);
- #CALL_PAS(1 'test3 ended');
- /
- ##
- #F $S / RETURN #CALL_PAS(80 S $S) / ##
- #TEST4
- /
- PRINT (. 'T-good' #CALL_PAS(80 T #F('2.14E+9')) .);
- PRINT (. 'T-bad ' #CALL_PAS(80 T #F('2.15E+9')) .);
- PRINT (. 'T-good' #CALL_PAS(80 T #F('-2.14E+9')) .);
- PRINT (. 'T-bad ' #CALL_PAS(80 T #F('-2.15E+9')) .);
- PRINT (. 'Z-expo 7.7e+00 ' #CALL_PAS(80 Z #F('7.7') (-1) ) .);
- PRINT (. 'Z-expo 7.7e+00 ' #CALL_PAS(80 Z #F('7.7') (799) ) .);
- PRINT (. 'Z-expo 7.70e+00 ' #CALL_PAS(80 Z #F('7.7') (899) ) .);
- PRINT (. 'Z-expo 8 ' #CALL_PAS(80 Z #F('7.7') (0) ) .);
- PRINT (. 'Z-expo *8 ' #CALL_PAS(80 Z #F('7.7') (1000) ) .);
- #CALL_PAS(1);
- PRINT (. 'Z-expo 7.7 ' #CALL_PAS(80 Z #F('7.7') (1) ) .);
- PRINT (. 'Z-expo *7.7 ' #CALL_PAS(80 Z #F('7.7') (801) ) .);
- PRINT (. 'Z-expo *7,70' #CALL_PAS(80 Z #F('7.7') (802) ) .);
- PRINT (. 'R 23.14000' #CALL_PAS(80 R #F('23.138') 2 ) .);
- PRINT (. 'R 23.14000' #CALL_PAS(80 R #F('23.144') 2 ) .);
- PRINT (. 'R 23.00000' #CALL_PAS(80 R #F('23.138') 0 ) .);
- PRINT (. 'R 23.00000' #CALL_PAS(80 R #F('23.138') (-2)) .);
- PRINT (. 'R -23.14000' #CALL_PAS(80 R #F('-23.138') 2 ) .);
- PRINT (. 'R -23.14000' #CALL_PAS(80 R #F('-23.144') 2 ) .);
- PRINT (. 'R -23.00000' #CALL_PAS(80 R #F('-23.138') 0 ) .);
- PRINT (. 'R -23.00000' #CALL_PAS(80 R #F('-23.138') (-2)) .);
- PRINT (. 'R null ' #CALL_PAS(80 R #F('23.138') 42) .);
- #CALL_PAS(1 'test4 ended' );
- /##
- #TEST1
- -- Part 1 reading float number from the lexical analyser
- /
- OPEN D '80TST.LST';
- D<<' 123.456 7.33333333333333333333333333333333333333333333333333';
- D<<' 123E+12 123E-12 123.456E+12 123.456E12 123. ';
- D<<' .56';
- $V:=(.F K F F F F F A N K F F F .);
- D<<' 7777777777777777777777777777777777777.88'; --39
- D<<' 777777777777777777777777777777777777.88'; --38
- D<<' 77777777777777777777777777777777777.88'; --37
- D<<' 7777777777777777777777777777777777.88'; --36
- CLOSE D;
- $A:=#CALL_PAS(35 '80TST.LST');
- FORALL $E IN $A DO
- IF #FATOM($E) -> $M:='F'
- ELSIF #_KEYWORD ($E) -> $M:='K'
- ELSIF #NUMBER($E) -> $M:='N'
- ELSIF #ATOM($E) -> $M:='A';
- ELSIF T-> $M:='X';
- FI;
- $MA!.:=$M;
- OD;
- PRINT (. really $MA .);
- PRINT (. expected $V .);
- #CALL_PAS(1);
- RETURN $A;
- /##
- #TEST5/
- $A:=#F('-1E20');
- $B:=#F('1.2E20');
- $C:=#F('-1.2E-20');
- $N:=#F('0');
- PRINT (. a b $A $B .);
- PRINT(. '+ good' #CALL_PAS(80 '+' $A $B) .);
- PRINT(. '- good' #CALL_PAS(80 '-' $A $B) .);
- PRINT(. '* good' #CALL_PAS(80 '*' $A #F('1e10')) .);
- PRINT(. '* good' #CALL_PAS(80 '*' #F('1e10') $B) .);
- PRINT(. '/ good' #CALL_PAS(80 '/' $A #F('1e10')) .);
- PRINT(. '/ good' #CALL_PAS(80 '/' #F('1e10') $B) .);
- PRINT(. '* bad ' #CALL_PAS(80 '*' $A $B) .);
- PRINT(. '* bad ' #CALL_PAS(80 '*' $C $C) .);
- PRINT(. '/ bad ' #CALL_PAS(80 '/' $A $C) .);
- PRINT(. '/ bad ' #CALL_PAS(80 '/' $C $A) .);
- PRINT(. '/ bad ' #CALL_PAS(80 '/' $B $N) .);
- #CALL_PAS(1);
- PRINT(. '+ good' #CALL_PAS(80 '+' $A $N) .);
- PRINT(. '+ good' #CALL_PAS(80 '+' $N $A) .);
- PRINT(. '+ good0' #CALL_PAS(80 '+' $N $N) .);
- PRINT(. '- good' #CALL_PAS(80 '-' $A $N) .);
- PRINT(. '- good' #CALL_PAS(80 '-' $N $A) .);
- PRINT(. '- good0' #CALL_PAS(80 '-' $N $N) .);
- PRINT(. '* good0' #CALL_PAS(80 '*' $A $N) .);
- PRINT(. '* good0' #CALL_PAS(80 '*' $N $A) .);
- PRINT(. '* good0' #CALL_PAS(80 '*' $N $N) .);
- PRINT(. '/ good0' #CALL_PAS(80 '/' $N $A) .);
- PRINT(. '/ bad ' #CALL_PAS(80 '/' $A $N) .);
- PRINT(. '/ bad ' #CALL_PAS(80 '/' $N $N) .);
- #CALL_PAS(1);
- /##
- #TEST4x
- / OPEN S ' ';
- $E:=#CALL_PAS(80 S '5.0');
- $E:=NULL;
- PRINT (.$E<0 $E>0 $E+0=0 $E=COPY($E).);
- $E1:=#CALL_PAS(80 S '4.0');
- S<<' to screen ' $E1 $E;
- PRINT (. $E1 $E .);
- $E:=COPY($E1);
- #CALL_PAS(1);
- PRINT #CALL_PAS(80 '+' $E $E1);
- PRINT #CALL_PAS(80 '*' $E $E1);
- PRINT #CALL_PAS(80 '/' $E $E1);
- PRINT #CALL_PAS(80 '/' $E #CALL_PAS(80 I 0));
- $E:=$E1;
- #CALL_PAS(1);
- PRINT 'COMPARING';
- PRINT #CALL_PAS(80 '<' $E $E1);
- PRINT #CALL_PAS(80 '>' $E $E1);
- PRINT #CALL_PAS(80 '<=' $E $E1);
- PRINT #CALL_PAS(80 '>=' $E $E1);
- PRINT #CALL_PAS(80 '=' $E $E1);
- PRINT #CALL_PAS(80 '<>' $E $E1);
- PRINT #CALL_PAS(80 'T' $E1 );
- PRINT #CALL_PAS(80 'Z' $E1 2505);
- $E:=#CALL_PAS(80 I 994);
- PRINT $E;
- #CALL_PAS(1);
- /##
|