diff options
Diffstat (limited to 'apps/interpreters/bas/test')
53 files changed, 2098 insertions, 0 deletions
diff --git a/apps/interpreters/bas/test/runbas.in b/apps/interpreters/bas/test/runbas.in new file mode 100644 index 000000000..6072a7b38 --- /dev/null +++ b/apps/interpreters/bas/test/runbas.in @@ -0,0 +1,3 @@ +#!/bin/sh + +@VALGRIND@ ./bas "$@" diff --git a/apps/interpreters/bas/test/test01 b/apps/interpreters/bas/test/test01 new file mode 100644 index 000000000..b89c7a73a --- /dev/null +++ b/apps/interpreters/bas/test/test01 @@ -0,0 +1,35 @@ +#!/bin/sh + +echo -n $0: 'Scalar variable assignment... ' + +cat >test.bas <<eof +10 a=1 +20 print a +30 a$="hello" +40 print a$ +50 a=0.0002 +60 print a +70 a=2.e-6 +80 print a +90 a=.2e-6 +100 print a +eof + +cat >test.ref <<eof + 1 +hello + 0.0002 + 2e-06 + 2e-07 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test02 b/apps/interpreters/bas/test/test02 new file mode 100644 index 000000000..88615fa61 --- /dev/null +++ b/apps/interpreters/bas/test/test02 @@ -0,0 +1,30 @@ +#!/bin/sh + +echo -n $0: 'Array variable assignment... ' + +cat >test.bas <<eof +10 dim a(1) +20 a(0)=10 +30 a(1)=11 +40 a=12 +50 print a(0) +60 print a(1) +70 print a +eof + +cat >test.ref <<eof + 10 + 11 + 12 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test03 b/apps/interpreters/bas/test/test03 new file mode 100644 index 000000000..b7b1496e0 --- /dev/null +++ b/apps/interpreters/bas/test/test03 @@ -0,0 +1,56 @@ +#!/bin/sh + +echo -n $0: 'FOR loops... ' + +cat >test.bas <<eof + 10 for i=0 to 10 + 20 print i + 30 if i=5 then exit for + 40 next + 50 for i=0 to 0 + 60 print i + 70 next I + 80 for i=1 to 0 step -1 + 90 print i +100 next +110 for i=1 to 0 +120 print i +130 next +140 for i$="" to "aaaaaaaaaa" step "a" +150 print i$ +160 next +eof + +cat >test.ref <<eof + 0 + 1 + 2 + 3 + 4 + 5 + 0 + 1 + 0 + +a +aa +aaa +aaaa +aaaaa +aaaaaa +aaaaaaa +aaaaaaaa +aaaaaaaaa +aaaaaaaaaa +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test04 b/apps/interpreters/bas/test/test04 new file mode 100644 index 000000000..547f4ec28 --- /dev/null +++ b/apps/interpreters/bas/test/test04 @@ -0,0 +1,34 @@ +#!/bin/sh + +echo -n $0: 'REPEAT UNTIL loop... ' + +cat >test.bas <<eof +10 a=1 +20 repeat +30 print a +40 a=a+1 +50 until a=10 +eof + +cat >test.ref <<eof + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test05 b/apps/interpreters/bas/test/test05 new file mode 100644 index 000000000..28322325f --- /dev/null +++ b/apps/interpreters/bas/test/test05 @@ -0,0 +1,31 @@ +#!/bin/sh + +echo -n $0: 'GOSUB RETURN subroutines... ' + +cat >test5.bas <<eof +10 gosub 100 +20 gosub 100 +30 end +100 gosub 200 +110 gosub 200 +120 return +200 print "hello, world":return +eof + +cat >test5.ref <<eof +hello, world +hello, world +hello, world +hello, world +eof + +sh ./test/runbas test5.bas >test5.data + +if cmp test5.ref test5.data +then + rm -f test5.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test06 b/apps/interpreters/bas/test/test06 new file mode 100644 index 000000000..8a5402d04 --- /dev/null +++ b/apps/interpreters/bas/test/test06 @@ -0,0 +1,42 @@ +#!/bin/sh + +echo -n $0: 'Recursive function without arguments... ' + +cat >test.bas <<eof +10 def fnloop +20 if n=0.0 then +30 r=0.0 +40 else +50 print n +60 n=n-1.0 +70 r=fnloop() +80 end if +90 =r +100 n=10 +110 print fnloop +eof + +cat >test.ref <<eof + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test07 b/apps/interpreters/bas/test/test07 new file mode 100644 index 000000000..57f2899a6 --- /dev/null +++ b/apps/interpreters/bas/test/test07 @@ -0,0 +1,25 @@ +#!/bin/sh + +echo -n $0: 'Recursive function with arguments... ' + +cat >test.bas <<eof +10 def fna(x) +20 if x=0 then r=1 else r=x*fna(x-1) +30 =r +40 print fna(7) +eof + +cat >test.ref <<eof + 5040 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test08 b/apps/interpreters/bas/test/test08 new file mode 100644 index 000000000..82209c91b --- /dev/null +++ b/apps/interpreters/bas/test/test08 @@ -0,0 +1,34 @@ +#!/bin/sh + +echo -n $0: 'DATA, READ and RESTORE... ' + +cat >test.bas <<eof +10 data "a",b +20 data "c","d +40 read j$ +50 print "j=";j$ +60 restore 20 +70 for i=1 to 3 +80 read j$,k$ +90 print "j=";j$;" k=";k$ +100 next +eof + +cat >test.ref <<'eof' +j=a +j=c k=d +Error: end of `data' in line 80 at: +80 read j$,k$ + ^ +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test09 b/apps/interpreters/bas/test/test09 new file mode 100644 index 000000000..d751b2474 --- /dev/null +++ b/apps/interpreters/bas/test/test09 @@ -0,0 +1,31 @@ +#!/bin/sh + +echo -n $0: 'LOCAL variables... ' + +cat >test.bas <<eof +10 def fna(a) +20 local b +30 b=a+1 +40 =b +60 b=3 +70 print b +80 print fna(4) +90 print b +eof + +cat >test.ref <<eof + 3 + 5 + 3 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test10 b/apps/interpreters/bas/test/test10 new file mode 100644 index 000000000..35d65ca4a --- /dev/null +++ b/apps/interpreters/bas/test/test10 @@ -0,0 +1,80 @@ +#!/bin/sh + +echo -n $0: 'PRINT USING... ' + +cat >test.bas <<'eof' + 10 print using "!";"abcdef" + 20 print using "\ \";"abcdef" + 30 print using "###-";-1 + 40 print using "###-";0 + 50 print using "###-";1 + 60 print using "###+";-1 + 70 print using "###+";0 + 80 print using "###+";1 + 90 print using "#####,";1000 +100 print using "**#,##.##";1000.00 +110 print using "+##.##";1 +120 print using "+##.##";1.23400 +130 print using "+##.##";123.456 +140 print using "+##.";123.456 +150 print using "+##";123.456 +160 print using "abc def ###.## efg";1.3 +170 print using "###.##^^^^^";5 +180 print using "###.##^^^^";1000 +190 print using ".##^^^^";5.0 +200 print using "##^^^^";2.3e-9 +210 print using ".##^^^^";2.3e-9 +220 print using "#.#^^^^";2.3e-9 +230 print using ".####^^^^^";-011466 +240 print using "$*,***,***,***.**";3729825.24 +250 print using "$**********.**";3729825.24 +260 print using "$$###.##";456.78 +270 print using "a!b";"S" +280 print using "a!b";"S","T" +290 print using "a!b!c";"S" +300 print using "a!b!c";"S","T" +eof + +cat >test.ref <<'eof' +a +abc + 1- + 0 + 1 + 1- + 0+ + 1+ + 1,000 +*1,000.00 + +1.00 + +1.23 ++123.46 ++123. ++123 +abc def 1.30 efg +500.00E-002 +100.00E+01 +.50E+01 +23E-10 +.23E-08 +2.3E-09 +-.1147E+005 +$***3,729,825.24 +$**3729825.24 +$456.78 +aSb +aSbaTb +aSb +aSbTc +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test11 b/apps/interpreters/bas/test/test11 new file mode 100644 index 000000000..88801c730 --- /dev/null +++ b/apps/interpreters/bas/test/test11 @@ -0,0 +1,30 @@ +#!/bin/sh + +echo -n $0: 'OPEN and LINE INPUT... ' + +cat >test.bas <<'eof' +10 open "i",1,"test.bas" +20 while not eof(1) +30 line input #1,a$ +40 print a$ +50 wend +eof + +cat >test.ref <<eof +10 open "i",1,"test.bas" +20 while not eof(1) +30 line input #1,a$ +40 print a$ +50 wend +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test12 b/apps/interpreters/bas/test/test12 new file mode 100644 index 000000000..b78f53747 --- /dev/null +++ b/apps/interpreters/bas/test/test12 @@ -0,0 +1,32 @@ +#!/bin/sh + +echo -n $0: 'Exception handling... ' + +cat >test.bas <<'eof' +10 on error print "global handler 1 caught error in line ";erl : resume 30 +20 print mid$("",-1) +30 on error print "global handler 2 caught error in line ";erl : end +40 def procx +50 on error print "local handler caught error in line";erl : goto 70 +60 print 1/0 +70 end proc +80 procx +90 print 1 mod 0 +eof + +cat >test.ref <<eof +global handler 1 caught error in line 20 +local handler caught error in line 60 +global handler 2 caught error in line 90 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test13 b/apps/interpreters/bas/test/test13 new file mode 100644 index 000000000..c4e3e3d2b --- /dev/null +++ b/apps/interpreters/bas/test/test13 @@ -0,0 +1,26 @@ +#!/bin/sh + +echo -n $0: 'Unnumbered lines... ' + +cat >test.bas <<'eof' +print "a" +goto 20 +print "b" +20 print "c" +eof + +cat >test.ref <<eof +a +c +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test14 b/apps/interpreters/bas/test/test14 new file mode 100644 index 000000000..1699d3bd9 --- /dev/null +++ b/apps/interpreters/bas/test/test14 @@ -0,0 +1,242 @@ +#!/bin/sh + +echo -n $0: 'SELECT CASE... ' + +cat >test.bas <<'eof' + 10 for i=0 to 9 + 20 for j=0 to 9 + 30 print i,j + 40 select case i + 50 case 0 + 60 print "i after case 0" + 70 case 1 + 80 print "i after case 1" + 90 select case j +100 case 0 +110 print "j after case 0" +120 end select +130 case 3 to 5,7 +140 print "i after case 3 to 5, 7" +150 case is <9 +160 print "is after case is <9" +170 case else +180 print "i after case else" +190 end select +200 next +210 next +eof + +cat >test.ref <<eof + 0 0 +i after case 0 + 0 1 +i after case 0 + 0 2 +i after case 0 + 0 3 +i after case 0 + 0 4 +i after case 0 + 0 5 +i after case 0 + 0 6 +i after case 0 + 0 7 +i after case 0 + 0 8 +i after case 0 + 0 9 +i after case 0 + 1 0 +i after case 1 +j after case 0 + 1 1 +i after case 1 + 1 2 +i after case 1 + 1 3 +i after case 1 + 1 4 +i after case 1 + 1 5 +i after case 1 + 1 6 +i after case 1 + 1 7 +i after case 1 + 1 8 +i after case 1 + 1 9 +i after case 1 + 2 0 +is after case is <9 + 2 1 +is after case is <9 + 2 2 +is after case is <9 + 2 3 +is after case is <9 + 2 4 +is after case is <9 + 2 5 +is after case is <9 + 2 6 +is after case is <9 + 2 7 +is after case is <9 + 2 8 +is after case is <9 + 2 9 +is after case is <9 + 3 0 +i after case 3 to 5, 7 + 3 1 +i after case 3 to 5, 7 + 3 2 +i after case 3 to 5, 7 + 3 3 +i after case 3 to 5, 7 + 3 4 +i after case 3 to 5, 7 + 3 5 +i after case 3 to 5, 7 + 3 6 +i after case 3 to 5, 7 + 3 7 +i after case 3 to 5, 7 + 3 8 +i after case 3 to 5, 7 + 3 9 +i after case 3 to 5, 7 + 4 0 +i after case 3 to 5, 7 + 4 1 +i after case 3 to 5, 7 + 4 2 +i after case 3 to 5, 7 + 4 3 +i after case 3 to 5, 7 + 4 4 +i after case 3 to 5, 7 + 4 5 +i after case 3 to 5, 7 + 4 6 +i after case 3 to 5, 7 + 4 7 +i after case 3 to 5, 7 + 4 8 +i after case 3 to 5, 7 + 4 9 +i after case 3 to 5, 7 + 5 0 +i after case 3 to 5, 7 + 5 1 +i after case 3 to 5, 7 + 5 2 +i after case 3 to 5, 7 + 5 3 +i after case 3 to 5, 7 + 5 4 +i after case 3 to 5, 7 + 5 5 +i after case 3 to 5, 7 + 5 6 +i after case 3 to 5, 7 + 5 7 +i after case 3 to 5, 7 + 5 8 +i after case 3 to 5, 7 + 5 9 +i after case 3 to 5, 7 + 6 0 +is after case is <9 + 6 1 +is after case is <9 + 6 2 +is after case is <9 + 6 3 +is after case is <9 + 6 4 +is after case is <9 + 6 5 +is after case is <9 + 6 6 +is after case is <9 + 6 7 +is after case is <9 + 6 8 +is after case is <9 + 6 9 +is after case is <9 + 7 0 +i after case 3 to 5, 7 + 7 1 +i after case 3 to 5, 7 + 7 2 +i after case 3 to 5, 7 + 7 3 +i after case 3 to 5, 7 + 7 4 +i after case 3 to 5, 7 + 7 5 +i after case 3 to 5, 7 + 7 6 +i after case 3 to 5, 7 + 7 7 +i after case 3 to 5, 7 + 7 8 +i after case 3 to 5, 7 + 7 9 +i after case 3 to 5, 7 + 8 0 +is after case is <9 + 8 1 +is after case is <9 + 8 2 +is after case is <9 + 8 3 +is after case is <9 + 8 4 +is after case is <9 + 8 5 +is after case is <9 + 8 6 +is after case is <9 + 8 7 +is after case is <9 + 8 8 +is after case is <9 + 8 9 +is after case is <9 + 9 0 +i after case else + 9 1 +i after case else + 9 2 +i after case else + 9 3 +i after case else + 9 4 +i after case else + 9 5 +i after case else + 9 6 +i after case else + 9 7 +i after case else + 9 8 +i after case else + 9 9 +i after case else +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test15 b/apps/interpreters/bas/test/test15 new file mode 100644 index 000000000..5d4c7545b --- /dev/null +++ b/apps/interpreters/bas/test/test15 @@ -0,0 +1,41 @@ +#!/bin/sh + +echo -n $0: 'FIELD, PUT and GET... ' + +cat >test.bas <<'eof' +a$="a" +open "r",1,"test.dat",128 +print "before field a$=";a$ +field #1,10 as a$ +field #1,5 as b$,5 as c$ +lset b$="hi" +rset c$="ya" +print "a$=";a$ +put #1 +close #1 +print "after close a$=";a$ +open "r",2,"test.dat",128 +field #2,10 as b$ +get #2 +print "after get b$=";b$ +close #2 +kill "test.dat" +eof + +cat >test.ref <<eof +before field a$=a +a$=hi ya +after close a$= +after get b$=hi ya +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test16 b/apps/interpreters/bas/test/test16 new file mode 100644 index 000000000..9e9942381 --- /dev/null +++ b/apps/interpreters/bas/test/test16 @@ -0,0 +1,33 @@ +#!/bin/sh + +echo -n $0: 'SWAP... ' + +cat >test.bas <<'eof' +a=1 : b=2 +print "a=";a;"b=";b +swap a,b +print "a=";a;"b=";b +dim a$(1,1),b$(1,1) +a$(1,0)="a" : b$(0,1)="b" +print "a$(1,0)=";a$(1,0);"b$(0,1)=";b$(0,1) +swap a$(1,0),b$(0,1) +print "a$(1,0)=";a$(1,0);"b$(0,1)=";b$(0,1) +eof + +cat >test.ref <<'eof' +a= 1 b= 2 +a= 2 b= 1 +a$(1,0)=ab$(0,1)=b +a$(1,0)=bb$(0,1)=a +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test17 b/apps/interpreters/bas/test/test17 new file mode 100644 index 000000000..544e790f8 --- /dev/null +++ b/apps/interpreters/bas/test/test17 @@ -0,0 +1,40 @@ +#!/bin/sh + +echo -n $0: 'DO, EXIT DO, LOOP... ' + +cat >test.bas <<'eof' +print "loop started" +i=1 +do + print "i is";i + i=i+1 + if i>10 then exit do +loop +print "loop ended" +eof + +cat >test.ref <<'eof' +loop started +i is 1 +i is 2 +i is 3 +i is 4 +i is 5 +i is 6 +i is 7 +i is 8 +i is 9 +i is 10 +loop ended +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test18 b/apps/interpreters/bas/test/test18 new file mode 100644 index 000000000..2ad4d8ec1 --- /dev/null +++ b/apps/interpreters/bas/test/test18 @@ -0,0 +1,43 @@ +#!/bin/sh + +echo -n $0: 'DO WHILE, LOOP... ' + +cat >test.bas <<'eof' +print "loop started" +x$="" +do while len(x$)<3 + print "x$ is ";x$ + x$=x$+"a" + y$="" + do while len(y$)<2 + print "y$ is ";y$ + y$=y$+"b" + loop +loop +print "loop ended" +eof + +cat >test.ref <<'eof' +loop started +x$ is +y$ is +y$ is b +x$ is a +y$ is +y$ is b +x$ is aa +y$ is +y$ is b +loop ended +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test19 b/apps/interpreters/bas/test/test19 new file mode 100644 index 000000000..9f0a471f4 --- /dev/null +++ b/apps/interpreters/bas/test/test19 @@ -0,0 +1,45 @@ +#!/bin/sh + +echo -n $0: 'ELSEIF... ' + +cat >test.bas <<'eof' +for x=1 to 3 + if x=1 then + print "1a" + else + if x=2 then + print "2a" + else + print "3a" + end if + end if +next + +for x=1 to 3 + if x=1 then + print "1b" + elseif x=2 then + print "2b" + elseif x=3 then print "3b" +next +eof + +cat >test.ref <<'eof' +1a +2a +3a +1b +2b +3b +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test20 b/apps/interpreters/bas/test/test20 new file mode 100644 index 000000000..c8a1a06e1 --- /dev/null +++ b/apps/interpreters/bas/test/test20 @@ -0,0 +1,46 @@ +#!/bin/sh + +echo -n $0: 'Caller trace... ' + +cat >test.bas <<'eof' + 10 gosub 20 + 20 gosub 30 + 30 procb + 40 def proca + 50 print "hi" + 60 stop + 70 end proc + 80 def procb + 90 proca +100 end proc +eof + +cat >test.ref <<'eof' +hi +Break in line 60 at: +60 stop + ^ +Proc Called in line 90 at: +90 proca + ^ +Proc Called in line 30 at: +30 procb + ^ +Called in line 20 at: +20 gosub 30 + ^ +Called in line 10 at: +10 gosub 20 + ^ +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test21 b/apps/interpreters/bas/test/test21 new file mode 100644 index 000000000..407430d4c --- /dev/null +++ b/apps/interpreters/bas/test/test21 @@ -0,0 +1,43 @@ +#!/bin/sh + +echo -n $0: 'Matrix assignment... ' + +cat >test.bas <<'eof' +dim a(3,4) +for i=0 to 3 + for j=0 to 4 + a(i,j)=i*10+j + print a(i,j); + next + print +next +mat b=a +for i=0 to 3 + for j=0 to 4 + print b(i,j); + next + print +next +eof + +cat >test.ref <<'eof' + 0 1 2 3 4 + 10 11 12 13 14 + 20 21 22 23 24 + 30 31 32 33 34 + 0 0 0 0 0 + 0 11 12 13 14 + 0 21 22 23 24 + 0 31 32 33 34 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test22 b/apps/interpreters/bas/test/test22 new file mode 100644 index 000000000..73e2317f9 --- /dev/null +++ b/apps/interpreters/bas/test/test22 @@ -0,0 +1,40 @@ +#!/bin/sh + +echo -n $0: 'MAT PRINT... ' + +cat >test.bas <<'eof' +dim a(2,2) +for i=0 to 2 + for j=0 to 2 + a(i,j)=i*10+j + next +next +for j=1 to 2 + for i=1 to 2 + print using " ##.##";a(i,j), + next + print +next +mat print using " ##.##";a,a +eof + +cat >test.ref <<'eof' + 11.00 21.00 + 12.00 22.00 + 11.00 12.00 + 21.00 22.00 + + 11.00 12.00 + 21.00 22.00 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test23 b/apps/interpreters/bas/test/test23 new file mode 100644 index 000000000..60b37da89 --- /dev/null +++ b/apps/interpreters/bas/test/test23 @@ -0,0 +1,40 @@ +#!/bin/sh + +echo -n $0: 'Matrix addition and subtraction... ' + +cat >test.bas <<'eof' +dim a(2,2) +a(2,2)=2.5 +dim b%(2,2) +b%(2,2)=3 +mat print a +mat a=a-b% +mat print a +dim c$(2,2) +c$(2,1)="hi" +mat print c$ +mat c$=c$+c$ +mat print c$ +eof + +cat >test.ref <<'eof' + 0 0 + 0 2.5 + 0 0 + 0 -0.5 + +hi + +hihi +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test24 b/apps/interpreters/bas/test/test24 new file mode 100644 index 000000000..40037cdcd --- /dev/null +++ b/apps/interpreters/bas/test/test24 @@ -0,0 +1,36 @@ +#!/bin/sh + +echo -n $0: 'Matrix multiplication... ' + +cat >test.bas <<'eof' +10 dim b(2,3),c(3,2) +20 for i=1 to 2 : for j=1 to 3 : read b(i,j) : next : next +30 for i=1 to 3 : for j=1 to 2 : read c(i,j) : next : next +40 mat a=b*c +50 mat print b,c,a +60 data 1,2,3,3,2,1 +70 data 1,2,2,1,3,3 +eof + +cat >test.ref <<'eof' + 1 2 3 + 3 2 1 + + 1 2 + 2 1 + 3 3 + + 14 13 + 10 11 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test25 b/apps/interpreters/bas/test/test25 new file mode 100644 index 000000000..07132f8c5 --- /dev/null +++ b/apps/interpreters/bas/test/test25 @@ -0,0 +1,50 @@ +#!/bin/sh + +echo -n $0: 'Matrix scalar multiplication... ' + +cat >test.bas <<'eof' +10 dim a(3,3) +20 for i=1 to 3 : for j=1 to 3 : read a(i,j) : next : next +30 mat print a +40 mat a=(3)*a +45 print +50 mat print a +60 data 1,2,3,4,5,6,7,8,9 +80 dim inch_array(5,1),cm_array(5,1) +90 mat read inch_array +100 data 1,12,36,100,39.37 +110 mat print inch_array +120 mat cm_array=(2.54)*inch_array +130 mat print cm_array +eof + +cat >test.ref <<'eof' + 1 2 3 + 4 5 6 + 7 8 9 + + 3 6 9 + 12 15 18 + 21 24 27 + 1 + 12 + 36 + 100 + 39.37 + 2.54 + 30.48 + 91.44 + 254 + 99.9998 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test26 b/apps/interpreters/bas/test/test26 new file mode 100644 index 000000000..f7b85687a --- /dev/null +++ b/apps/interpreters/bas/test/test26 @@ -0,0 +1,26 @@ +#!/bin/sh + +echo -n $0: 'MAT READ... ' + +cat >test.bas <<'eof' +dim a(3,3) +data 5,5,5,8,8,8,3,3 +mat read a(2,3) +mat print a +eof + +cat >test.ref <<'eof' + 5 5 5 + 8 8 8 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test27 b/apps/interpreters/bas/test/test27 new file mode 100644 index 000000000..f90c0c236 --- /dev/null +++ b/apps/interpreters/bas/test/test27 @@ -0,0 +1,33 @@ +#!/bin/sh + +echo -n $0: 'Matrix inversion... ' + +cat >test.bas <<'eof' +data 1,2,3,4 +mat read a(2,2) +mat print a +mat b=inv(a) +mat print b +mat c=a*b +mat print c +eof + +cat >test.ref <<'eof' + 1 2 + 3 4 +-2 1 + 1.5 -0.5 + 1 0 + 0 1 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test28 b/apps/interpreters/bas/test/test28 new file mode 100644 index 000000000..fa22845bb --- /dev/null +++ b/apps/interpreters/bas/test/test28 @@ -0,0 +1,26 @@ +#!/bin/sh + +echo -n $0: 'TDL BASIC FNRETURN/FNEND... ' + +cat >test.bas <<'eof' +def fnfac(n) + if n=1 then fnreturn 1 +fnend n*fnfac(n-1) + +print fnfac(10) +eof + +cat >test.ref <<'eof' + 3628800 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test29 b/apps/interpreters/bas/test/test29 new file mode 100644 index 000000000..945f33e4d --- /dev/null +++ b/apps/interpreters/bas/test/test29 @@ -0,0 +1,32 @@ +#!/bin/sh + +echo -n $0: 'TDL INSTR... ' + +cat >test.bas <<'eof' +print instr("123456789","456");" = 4?" +print INSTR("123456789","654");" = 0?" +print INSTR("1234512345","34");" = 3?" +print INSTR("1234512345","34",6);" = 8?" +print INSTR("1234512345","34",6,2);" = 0?" +print INSTR("1234512345","34",6,4);" = 8?" +eof + +cat >test.ref <<'eof' + 4 = 4? + 0 = 0? + 3 = 3? + 8 = 8? + 0 = 0? + 8 = 8? +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test30 b/apps/interpreters/bas/test/test30 new file mode 100644 index 000000000..0d7b29a26 --- /dev/null +++ b/apps/interpreters/bas/test/test30 @@ -0,0 +1,22 @@ +#!/bin/sh + +echo -n $0: 'Type mismatch check... ' + +cat >test.bas <<'eof' +print 1+"a" +eof + +cat >test.ref <<'eof' +Error: Invalid binary operand at: end of program +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test31 b/apps/interpreters/bas/test/test31 new file mode 100644 index 000000000..7c4b79017 --- /dev/null +++ b/apps/interpreters/bas/test/test31 @@ -0,0 +1,43 @@ +#!/bin/sh + +echo -n $0: 'PRINT default format... ' + +cat >test.bas <<'eof' +10 for i=-8 to 8 +20 x=1+1/3 : y=1 : j=i +30 for j=i to -1 : x=x/10 : y=y/10 : next +40 for j=i to 1 step -1 : x=x*10 : y=y*10 : next +50 print x,y +60 next +eof + +cat >test.ref <<'eof' + 1.333333e-08 1e-08 + 1.333333e-07 1e-07 + 1.333333e-06 1e-06 + 1.333333e-05 1e-05 + 0.000133 0.0001 + 0.001333 0.001 + 0.013333 0.01 + 0.133333 0.1 + 1.333333 1 + 13.33333 10 + 133.3333 100 + 1333.333 1000 + 13333.33 10000 + 133333.3 100000 + 1333333 1000000 + 1.333333e+07 1e+07 + 1.333333e+08 1e+08 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test32 b/apps/interpreters/bas/test/test32 new file mode 100644 index 000000000..d080d3c27 --- /dev/null +++ b/apps/interpreters/bas/test/test32 @@ -0,0 +1,28 @@ +#!/bin/sh + +echo -n $0: 'SUB routines... ' + +cat >test.bas <<'eof' +PUTS("abc") +END + +SUB PUTS(s$) + FOR i=1 to LEN(s$) : print mid$(s$,i,1); : NEXT + PRINT +END SUB +eof + +cat >test.ref <<'eof' +abc +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test33 b/apps/interpreters/bas/test/test33 new file mode 100644 index 000000000..adc53dd62 --- /dev/null +++ b/apps/interpreters/bas/test/test33 @@ -0,0 +1,39 @@ +#!/bin/sh + +echo -n $0: 'OPEN FOR BINARY... ' + +cat >test.bas <<'eof' +open "test.out" for binary as 1 +put 1,1,"xy" +put 1,3,"z!" +put 1,10,1/3 +put 1,20,9999 +close 1 +open "test.out" for binary as 1 +s$=" " +get 1,1,s$ +get 1,10,x +get 1,20,n% +close +print s$ +print x +print n% +kill "test.out" +eof + +cat >test.ref <<'eof' +xyz! + 0.333333 + 9999 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test34 b/apps/interpreters/bas/test/test34 new file mode 100644 index 000000000..0419284d8 --- /dev/null +++ b/apps/interpreters/bas/test/test34 @@ -0,0 +1,43 @@ +#!/bin/sh + +echo -n $0: 'OPTION BASE... ' + +cat >test.bas <<'eof' +option base 3 +dim a(3,5) +a(3,3)=1 +a(3,5)=2 + +print a(3,3) +print a(3,5) + +option base -2 +dim b(-1,2) +b(-2,-2)=10 +b(-1,2)=20 + +print a(3,3) +print a(3,5) +print b(-2,-2) +print b(-1,2) +eof + +cat >test.ref <<'eof' + 1 + 2 + 1 + 2 + 10 + 20 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test35 b/apps/interpreters/bas/test/test35 new file mode 100644 index 000000000..448fc0dfa --- /dev/null +++ b/apps/interpreters/bas/test/test35 @@ -0,0 +1,32 @@ +#!/bin/sh + +echo -n $0: 'Real to integer conversion... ' + +cat >test.bas <<'eof' +a%=1.2 +print a% +a%=1.7 +print a% +a%=-0.2 +print a% +a%=-0.7 +print a% +eof + +cat >test.ref <<'eof' + 1 + 2 + 0 +-1 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test36 b/apps/interpreters/bas/test/test36 new file mode 100644 index 000000000..b26cffae3 --- /dev/null +++ b/apps/interpreters/bas/test/test36 @@ -0,0 +1,31 @@ +#!/bin/sh + +echo -n $0: 'OPEN file locking... ' + +cat >test.bas <<'eof' +on error goto 10 +print "opening file" +open "test.out" for output lock write as #1 +print "open succeeded" +if command$<>"enough" then shell "sh ./test/runbas test.bas enough" +end +10 print "open failed" +eof + +cat >test.ref <<'eof' +opening file +open succeeded +opening file +open failed +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test37 b/apps/interpreters/bas/test/test37 new file mode 100644 index 000000000..ca0d446eb --- /dev/null +++ b/apps/interpreters/bas/test/test37 @@ -0,0 +1,24 @@ +#!/bin/sh + +echo -n $0: 'LINE INPUT reaching EOF... ' + +cat >test.bas <<'eof' +10 open "i",1,"test.ref" +20 while not eof(1) +30 line input #1,a$ +40 if a$="abc" then print a$; else print "def" +50 wend +eof + +awk 'BEGIN{ printf("abc") }' </dev/null >test.ref + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test38 b/apps/interpreters/bas/test/test38 new file mode 100644 index 000000000..3733d0ad4 --- /dev/null +++ b/apps/interpreters/bas/test/test38 @@ -0,0 +1,57 @@ +#!/bin/sh + +echo -n $0: 'MAT REDIM... ' + +cat >test.bas <<'eof' +dim x(10) +mat read x +mat print x +mat redim x(7) +mat print x +mat redim x(12) +mat print x +data 1,2,3,4,5,6,7,8,9,10 +eof + +cat >test.ref <<'eof' + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 0 + 0 + 0 + 0 + 0 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test39 b/apps/interpreters/bas/test/test39 new file mode 100644 index 000000000..25c33d475 --- /dev/null +++ b/apps/interpreters/bas/test/test39 @@ -0,0 +1,32 @@ +#!/bin/sh + +echo -n $0: 'Nested function and procedure calls... ' + +cat >test.bas <<'eof' +def proc_a(x) +print fn_b(1,x) +end proc + +def fn_b(a,b) += a+fn_c(b) + +def fn_c(b) += b+3 + +proc_a(2) +eof + +cat >test.ref <<'eof' + 6 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test40 b/apps/interpreters/bas/test/test40 new file mode 100644 index 000000000..d2c4eb0fe --- /dev/null +++ b/apps/interpreters/bas/test/test40 @@ -0,0 +1,26 @@ +#!/bin/sh + +echo -n $0: 'IMAGE... ' + +cat >test.bas <<'eof' + d=3.1 + print using "#.#";d + print using 10;d +10 image #.## +eof + +cat >test.ref <<'eof' +3.1 +3.10 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test41 b/apps/interpreters/bas/test/test41 new file mode 100644 index 000000000..58bc28c74 --- /dev/null +++ b/apps/interpreters/bas/test/test41 @@ -0,0 +1,32 @@ +#!/bin/sh + +echo -n $0: 'EXIT FUNCTION... ' + +cat >test.bas <<'eof' +function f(c) +print "f running" +if (c) then f=42 : exit function +f=43 +end function + +print f(0) +print f(1) +eof + +cat >test.ref <<'eof' +f running + 43 +f running + 42 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test42 b/apps/interpreters/bas/test/test42 new file mode 100644 index 000000000..f448251a4 --- /dev/null +++ b/apps/interpreters/bas/test/test42 @@ -0,0 +1,36 @@ +#!/bin/sh + +echo -n $0: 'Arithmetic... ' + +cat >test.bas <<eof +10 print 4.7\3 +20 print -2.3\1 +30 print int(-2.3) +40 print int(2.3) +50 print fix(-2.3) +60 print fix(2.3) +70 print fp(-2.3) +80 print fp(2.3) +eof + +cat >test.ref <<eof + 1 +-2 +-3 + 2 +-2 + 2 +-0.3 + 0.3 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test43 b/apps/interpreters/bas/test/test43 new file mode 100644 index 000000000..56d993a0f --- /dev/null +++ b/apps/interpreters/bas/test/test43 @@ -0,0 +1,41 @@ +#!/bin/sh + +echo -n $0: 'Matrix multiplication size checks... ' + +cat >test.bas <<eof +DIM a(3,3),b(3,1),c(3,3) +MAT READ a +MAT READ b +MAT c=a*b +MAT PRINT c +DATA 1,2,3,4,5,6,7,8,9 +DATA 5,3,2 + +erase b +DIM b(3) +RESTORE +MAT READ a +MAT READ b +MAT c=a*b +MAT PRINT c +eof + +cat >test.ref <<eof + 17 + 47 + 77 +Error: Dimension mismatch in line 14 at: +mat c=a*b + ^ +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test44 b/apps/interpreters/bas/test/test44 new file mode 100644 index 000000000..25b1ec3de --- /dev/null +++ b/apps/interpreters/bas/test/test44 @@ -0,0 +1,38 @@ +#!/bin/sh + +echo -n $0: 'DELETE... ' + +cat >test.bas <<eof +10 print 10 +20 print 20 +30 print 30 +40 print 40 +50 print 50 +60 print 60 +70 print 70 +eof + +cat >test.input <<eof +load "test.bas" +delete -20 +delete 60- +delete 30-40 +delete 15 +list +eof + +cat >test.ref <<eof +Error: No such line at: 15 +50 print 50 +eof + +sh ./test/runbas <test.input >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test45 b/apps/interpreters/bas/test/test45 new file mode 100644 index 000000000..88878c2d0 --- /dev/null +++ b/apps/interpreters/bas/test/test45 @@ -0,0 +1,31 @@ +#!/bin/sh + +echo -n $0: 'MID$ on left side... ' + +cat >test.bas <<'eof' +10 mid$(a$,6,4) = "ABCD" +20 print a$ +30 a$="0123456789" +40 mid$(a$,6,4) = "ABCD" +50 print a$ +60 a$="0123456789" +70 let mid$(a$,6,4) = "ABCD" +80 print a$ +eof + +cat >test.ref <<'eof' + +01234ABCD9 +01234ABCD9 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test46 b/apps/interpreters/bas/test/test46 new file mode 100644 index 000000000..4537f3e56 --- /dev/null +++ b/apps/interpreters/bas/test/test46 @@ -0,0 +1,22 @@ +#!/bin/sh + +echo -n $0: 'END used without program... ' + +cat >test.bas <<'eof' +for i=1 to 10:print i;:next i:end +eof + +cat >test.ref <<'eof' + 1 2 3 4 5 6 7 8 9 10 +eof + +sh ./test/runbas <test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test47 b/apps/interpreters/bas/test/test47 new file mode 100644 index 000000000..13eb94db2 --- /dev/null +++ b/apps/interpreters/bas/test/test47 @@ -0,0 +1,36 @@ +#!/bin/sh + +echo -n $0: 'MAT WRITE... ' + +cat >test.bas <<'eof' +dim a(3,4) +for i=0 to 3 + for j=0 to 4 + a(i,j)=i*10+j + print a(i,j); + next + print +next +mat write a +eof + +cat >test.ref <<'eof' + 0 1 2 3 4 + 10 11 12 13 14 + 20 21 22 23 24 + 30 31 32 33 34 +11,12,13,14 +21,22,23,24 +31,32,33,34 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test48 b/apps/interpreters/bas/test/test48 new file mode 100644 index 000000000..fe2a9e870 --- /dev/null +++ b/apps/interpreters/bas/test/test48 @@ -0,0 +1,30 @@ +#!/bin/sh + +echo -n $0: 'Multi assignment... ' + +cat >test.bas <<'eof' +a,b = 10 +print a,b +dim c(10) +a,c(a) = 2 +print a,c(2),c(10) +a$,b$="test" +print a$,b$ +eof + +cat >test.ref <<'eof' + 10 10 + 2 0 2 +test test +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test49 b/apps/interpreters/bas/test/test49 new file mode 100644 index 000000000..0d8bcb455 --- /dev/null +++ b/apps/interpreters/bas/test/test49 @@ -0,0 +1,54 @@ +#!/bin/sh + +echo -n $0: 'Matrix determinant... ' + +cat >test.bas <<'eof' +width 120 +dim a(7,7),b(7,7) +mat read a +mat print a; +print +data 58,71,67,36,35,19,60 +data 50,71,71,56,45,20,52 +data 64,40,84,50,51,43,69 +data 31,28,41,54,31,18,33 +data 45,23,46,38,50,43,50 +data 41,10,28,17,33,41,46 +data 66,72,71,38,40,27,69 +mat b=inv(a) +mat print b +print det +eof + +cat >test.ref <<'eof' + 58 71 67 36 35 19 60 + 50 71 71 56 45 20 52 + 64 40 84 50 51 43 69 + 31 28 41 54 31 18 33 + 45 23 46 38 50 43 50 + 41 10 28 17 33 41 46 + 66 72 71 38 40 27 69 + + 9.636025e+07 320206 -537449 2323650 -1.135486e+07 3.019632e+07 + -9.650941e+07 + 4480 15 -25 108 -528 1404 -4487 +-39436 -131 220 -951 4647 -12358 39497 + 273240 908 -1524 6589 -32198 85625 -273663 +-1846174 -6135 10297 -44519 217549 -578534 1849032 + 1.315035e+07 43699 -73346 317110 -1549606 4120912 -1.31707e+07 + +-9.636079e+07 -320208 537452 -2323663 1.135493e+07 -3.019649e+07 + 9.650995e+07 + 1 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test50 b/apps/interpreters/bas/test/test50 new file mode 100644 index 000000000..4155ca52b --- /dev/null +++ b/apps/interpreters/bas/test/test50 @@ -0,0 +1,36 @@ +#!/bin/sh + +echo -n $0: 'Min and max function... ' + +cat >test.bas <<'eof' +print min(1,2) +print min(2,1) +print min(-0.3,0.3) +print min(-0.3,4) +print max(1,2) +print max(2,1) +print max(-0.3,0.3) +print max(-0.3,4) +eof + +cat >test.ref <<'eof' + 1 + 1 +-0.3 +-0.3 + 2 + 2 + 0.3 + 4 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test51 b/apps/interpreters/bas/test/test51 new file mode 100644 index 000000000..9341dd09b --- /dev/null +++ b/apps/interpreters/bas/test/test51 @@ -0,0 +1,23 @@ +#!/bin/sh + +echo -n $0: 'Print items... ' + +cat >test.bas <<'eof' +PRINT "Line 1";TAB(78);1.23456789 +eof + +cat >test.ref <<'eof' +Line 1 + 1.234568 +eof + +sh ./test/runbas test.bas >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi diff --git a/apps/interpreters/bas/test/test52 b/apps/interpreters/bas/test/test52 new file mode 100644 index 000000000..dc524f645 --- /dev/null +++ b/apps/interpreters/bas/test/test52 @@ -0,0 +1,37 @@ +#!/bin/sh + +echo -n $0: 'MAT INPUT... ' + +cat >test.bas <<'eof' +dim a(2,2) +mat input a +mat print a +mat input a +mat print a +eof + +cat >test.input <<'eof' +1,2,3,4,5 +1 +3,4 +eof + +cat >test.ref <<'eof' +? + 1 2 + 3 4 +? ? + 1 0 + 3 4 +eof + +sh ./test/runbas test.bas <test.input >test.data + +if cmp test.ref test.data +then + rm -f test.* + echo passed +else + echo failed + exit 1 +fi |