diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-11-07 14:02:53 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-11-07 14:02:53 -0600 |
commit | 20c645e1cdf2456d09e3c85d2b21e4c32b88b83e (patch) | |
tree | c6832ac6658ee21dfd732cada7a06196f13fcd0f /apps | |
parent | 7711da2981698ff86c0b7a4b49bbc44f0f26a834 (diff) | |
download | nuttx-20c645e1cdf2456d09e3c85d2b21e4c32b88b83e.tar.gz nuttx-20c645e1cdf2456d09e3c85d2b21e4c32b88b83e.tar.bz2 nuttx-20c645e1cdf2456d09e3c85d2b21e4c32b88b83e.zip |
BAS: Move test files from apps/interpreter/bas to apps/examples/bas
Diffstat (limited to 'apps')
-rw-r--r-- | apps/examples/bas/README.txt | 1577 | ||||
-rw-r--r-- | apps/examples/bas/tests/test01.bas (renamed from apps/interpreters/bas/test/test01) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test02.bas (renamed from apps/interpreters/bas/test/test02) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test03.bas (renamed from apps/interpreters/bas/test/test03) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test04.bas (renamed from apps/interpreters/bas/test/test04) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test05.bas (renamed from apps/interpreters/bas/test/test05) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test06.bas (renamed from apps/interpreters/bas/test/test06) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test07.bas (renamed from apps/interpreters/bas/test/test07) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test08.bas (renamed from apps/interpreters/bas/test/test08) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test09.bas (renamed from apps/interpreters/bas/test/test09) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test10.bas (renamed from apps/interpreters/bas/test/test10) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test11.bas (renamed from apps/interpreters/bas/test/test11) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test12.bas (renamed from apps/interpreters/bas/test/test12) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test13.bas (renamed from apps/interpreters/bas/test/test13) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test14.bas (renamed from apps/interpreters/bas/test/test14) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test15.bas (renamed from apps/interpreters/bas/test/test15) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test16.bas (renamed from apps/interpreters/bas/test/test16) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test17.bas (renamed from apps/interpreters/bas/test/test17) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test18.bas (renamed from apps/interpreters/bas/test/test18) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test19.bas (renamed from apps/interpreters/bas/test/test19) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test20.bas (renamed from apps/interpreters/bas/test/test20) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test21.bas (renamed from apps/interpreters/bas/test/test21) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test22.bas (renamed from apps/interpreters/bas/test/test22) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test23.bas (renamed from apps/interpreters/bas/test/test23) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test24.bas (renamed from apps/interpreters/bas/test/test24) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test25.bas (renamed from apps/interpreters/bas/test/test25) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test26.bas (renamed from apps/interpreters/bas/test/test26) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test27.bas (renamed from apps/interpreters/bas/test/test27) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test28.bas (renamed from apps/interpreters/bas/test/test28) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test29.bas (renamed from apps/interpreters/bas/test/test29) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test30.bas (renamed from apps/interpreters/bas/test/test30) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test31.bas (renamed from apps/interpreters/bas/test/test31) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test32.bas (renamed from apps/interpreters/bas/test/test32) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test33.bas (renamed from apps/interpreters/bas/test/test33) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test34.bas (renamed from apps/interpreters/bas/test/test34) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test35.bas (renamed from apps/interpreters/bas/test/test35) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test36.bas (renamed from apps/interpreters/bas/test/test36) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test37.bas (renamed from apps/interpreters/bas/test/test37) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test38.bas (renamed from apps/interpreters/bas/test/test38) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test39.bas (renamed from apps/interpreters/bas/test/test39) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test40.bas (renamed from apps/interpreters/bas/test/test40) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test41.bas (renamed from apps/interpreters/bas/test/test41) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test42.bas (renamed from apps/interpreters/bas/test/test42) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test43.bas (renamed from apps/interpreters/bas/test/test43) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test44.bas (renamed from apps/interpreters/bas/test/test44) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test45.bas (renamed from apps/interpreters/bas/test/test45) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test46.bas (renamed from apps/interpreters/bas/test/test46) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test47.bas (renamed from apps/interpreters/bas/test/test47) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test48.bas (renamed from apps/interpreters/bas/test/test48) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test49.bas (renamed from apps/interpreters/bas/test/test49) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test50.bas (renamed from apps/interpreters/bas/test/test50) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test51.bas (renamed from apps/interpreters/bas/test/test51) | 0 | ||||
-rw-r--r-- | apps/examples/bas/tests/test52.bas (renamed from apps/interpreters/bas/test/test52) | 0 |
53 files changed, 1577 insertions, 0 deletions
diff --git a/apps/examples/bas/README.txt b/apps/examples/bas/README.txt new file mode 100644 index 000000000..0903bbbf7 --- /dev/null +++ b/apps/examples/bas/README.txt @@ -0,0 +1,1577 @@ +test01.bas +========== +Scalar variable assignment + +Test File +--------- +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 + +Expected Result +--------------- + 1 +hello + 0.0002 + 2e-06 + 2e-07 + +test01.bas +========== +Array variable assignment + +Test File +--------- +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 + +Expected Result +--------------- + 10 + 11 + 12 + +test01.bas +========== +FOR loops + +Test File +--------- + 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 + +Expected Result +--------------- + 0 + 1 + 2 + 3 + 4 + 5 + 0 + 1 + 0 + +a +aa +aaa +aaaa +aaaaa +aaaaaa +aaaaaaa +aaaaaaaa +aaaaaaaaa +aaaaaaaaaa + +test01.bas +========== +REPEAT UNTIL loop + +Test File +--------- +10 a=1 +20 repeat +30 print a +40 a=a+1 +50 until a=10 + +Expected Result +--------------- + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + +test01.bas +========== +GOSUB RETURN subroutines + +Test File +--------- +10 gosub 100 +20 gosub 100 +30 end +100 gosub 200 +110 gosub 200 +120 return +200 print "hello, world":return + +Expected Result +--------------- +hello, world +hello, world +hello, world +hello, world + +test01.bas +========== +Recursive function without arguments + +Test File +--------- +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 + +Expected Result +--------------- + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 + +test01.bas +========== +Recursive function with arguments + +Test File +--------- +10 def fna(x) +20 if x=0 then r=1 else r=x*fna(x-1) +30 =r +40 print fna(7) + +Expected Result +--------------- + 5040 + +test01.bas +========== +DATA, READ and RESTORE + +Test File +--------- +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 + +Expected Result +--------------- +j=a +j=c k=d +Error: end of `data' in line 80 at: +80 read j$,k$ + ^ + +test01.bas +========== +LOCAL variables + +Test File +--------- +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 + +Expected Result +--------------- + 3 + 5 + 3 + +test01.bas +========== +PRINT USING + +Test File +--------- + 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" + +Expected Result +--------------- +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 + +test01.bas +========== +OPEN and LINE INPUT + +Test File +--------- +10 open "i",1,"test.bas" +20 while not eof(1) +30 line input #1,a$ +40 print a$ +50 wend + +Expected Result +--------------- +10 open "i",1,"test.bas" +20 while not eof(1) +30 line input #1,a$ +40 print a$ +50 wend + +test01.bas +========== +Exception handling + +Test File +--------- +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 + +Expected Result +--------------- +global handler 1 caught error in line 20 +local handler caught error in line 60 +global handler 2 caught error in line 90 + +test01.bas +========== +Unnumbered lines + +Test File +--------- +print "a" +goto 20 +print "b" +20 print "c" + +Expected Result +--------------- +a +c + +test01.bas +========== +SELECT CASE + +Test File +--------- + 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 + +Expected Result +--------------- + 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 + +test01.bas +========== +FIELD, PUT and GET + +Test File +--------- +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" + +Expected Result +--------------- +before field a$=a +a$=hi ya +after close a$= +after get b$=hi ya + +test01.bas +========== +SWAP + +Test File +--------- +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) + +Expected Result +--------------- +a= 1 b= 2 +a= 2 b= 1 +a$(1,0)=ab$(0,1)=b +a$(1,0)=bb$(0,1)=a + +test01.bas +========== +DO, EXIT DO, LOOP + +Test File +--------- +print "loop started" +i=1 +do + print "i is";i + i=i+1 + if i>10 then exit do +loop +print "loop ended" + +Expected Result +--------------- +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 + +test01.bas +========== +DO WHILE, LOOP + +Test File +--------- +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" + +Expected Result +--------------- +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 + +test01.bas +========== +ELSEIF + +Test File +--------- +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 + +Expected Result +--------------- +1a +2a +3a +1b +2b +3b + +test01.bas +========== +Caller trace + +Test File +--------- + 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 + +Expected Result +--------------- +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 + ^ + +test01.bas +========== +Matrix assignment + +Test File +--------- +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 + +Expected Result +--------------- + 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 + +test01.bas +========== +MAT PRINT + +Test File +--------- +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 + +Expected Result +--------------- + 11.00 21.00 + 12.00 22.00 + 11.00 12.00 + 21.00 22.00 + + 11.00 12.00 + 21.00 22.00 + +test01.bas +========== +Matrix addition and subtraction + +Test File +--------- +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$ + +Expected Result +--------------- + 0 0 + 0 2.5 + 0 0 + 0 -0.5 + +hi + +hihi + +test01.bas +========== +Matrix multiplication + +Test File +--------- +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 + +Expected Result +--------------- + 1 2 3 + 3 2 1 + + 1 2 + 2 1 + 3 3 + + 14 13 + 10 11 + +test01.bas +========== +Matrix scalar multiplication + +Test File +--------- +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 + +Expected Result +--------------- + 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 + +test01.bas +========== +MAT READ + +Test File +--------- +dim a(3,3) +data 5,5,5,8,8,8,3,3 +mat read a(2,3) +mat print a + +Expected Result +--------------- + 5 5 5 + 8 8 8 + +test01.bas +========== +Matrix inversion + +Test File +--------- +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 + +Expected Result +--------------- + 1 2 + 3 4 +-2 1 + 1.5 -0.5 + 1 0 + 0 1 + +test01.bas +========== +TDL BASIC FNRETURN/FNEND + +Test File +--------- +def fnfac(n) + if n=1 then fnreturn 1 +fnend n*fnfac(n-1) + +print fnfac(10) + +Expected Result +--------------- + 3628800 + +test01.bas +========== +TDL INSTR + +Test File +--------- +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?" + +Expected Result +--------------- + 4 = 4? + 0 = 0? + 3 = 3? + 8 = 8? + 0 = 0? + 8 = 8? + +test01.bas +========== +Type mismatch check + +Test File +--------- +print 1+"a" + +Expected Result +--------------- +Error: Invalid binary operand at: end of program + +test01.bas +========== +PRINT default format + +Test File +--------- +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 + +Expected Result +--------------- + 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 + +test01.bas +========== +SUB routines + +Test File +--------- +PUTS("abc") +END + +SUB PUTS(s$) + FOR i=1 to LEN(s$) : print mid$(s$,i,1); : NEXT + PRINT +END SUB + +Expected Result +--------------- +abc + +test01.bas +========== +OPEN FOR BINARY + +Test File +--------- +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" + +Expected Result +--------------- +xyz! + 0.333333 + 9999 + +test01.bas +========== +OPTION BASE + +Test File +--------- +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) + +Expected Result +--------------- + 1 + 2 + 1 + 2 + 10 + 20 + +test01.bas +========== +Real to integer conversion + +Test File +--------- +a%=1.2 +print a% +a%=1.7 +print a% +a%=-0.2 +print a% +a%=-0.7 +print a% + +Expected Result +--------------- + 1 + 2 + 0 +-1 + +test01.bas +========== +OPEN file locking + +Test File +--------- +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" + +Expected Result +--------------- +opening file +open succeeded +opening file +open failed + +test01.bas +========== +LINE INPUT reaching EOF + +Test File +--------- +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 + +Result +------ + Output should match test.ref + +test01.bas +========== +MAT REDIM + +Test File +--------- +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 + +Expected Result +--------------- + 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 + +test01.bas +========== +Nested function and procedure calls + +Test File +--------- +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) + +Expected Result +--------------- + 6 + +test01.bas +========== +IMAGE + +Test File +--------- + d=3.1 + print using "#.#";d + print using 10;d +10 image #.## + +Expected Result +--------------- +3.1 +3.10 + +test01.bas +========== +EXIT FUNCTION + +Test File +--------- +function f(c) +print "f running" +if (c) then f=42 : exit function +f=43 +end function + +print f(0) +print f(1) + +Expected Result +--------------- +f running + 43 +f running + 42 + +test01.bas +========== +Arithmetic + +Test File +--------- +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) + +Expected Result +--------------- + 1 +-2 +-3 + 2 +-2 + 2 +-0.3 + 0.3 + +test01.bas +========== +Matrix multiplication size checks + +Test File +--------- +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 + +Expected Result +--------------- + 17 + 47 + 77 +Error: Dimension mismatch in line 14 at: +mat c=a*b + ^ + +test01.bas +========== +DELETE + +Test File +--------- +10 print 10 +20 print 20 +30 print 30 +40 print 40 +50 print 50 +60 print 60 +70 print 70 + +Usage +----- + +load "test.bas" +delete -20 +delete 60- +delete 30-40 +delete 15 +list + +Expected Result +--------------- +Error: No such line at: 15 +50 print 50 + +test01.bas +========== +MID$ on left side + +Test File +--------- +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$ + +Expected Result +--------------- + +01234ABCD9 +01234ABCD9 + +test01.bas +========== +END used without program + +Test File +--------- +for i=1 to 10:print i;:next i:end + +Expected Result +--------------- + 1 2 3 4 5 6 7 8 9 10 + +test01.bas +========== +MAT WRITE + +Test File +--------- +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 + +Expected Result +--------------- + 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 + +test01.bas +========== +Multi assignment + +Test File +--------- +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$ + +Expected Result +--------------- + 10 10 + 2 0 2 +test test + +test01.bas +========== +Matrix determinant + +Test File +--------- +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 + +Expected Result +--------------- + 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 + +test01.bas +========== +Min and max function + +Test File +--------- +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) + +Expected Result +--------------- + 1 + 1 +-0.3 +-0.3 + 2 + 2 + 0.3 + 4 + +test01.bas +========== +Print items + +Test File +--------- +PRINT "Line 1";TAB(78);1.23456789 + +Expected Result +--------------- +Line 1 + 1.234568 + +test01.bas +========== +MAT INPUT + +Test File +--------- +dim a(2,2) +mat input a +mat print a +mat input a +mat print a + +Test File +--------- +1,2,3,4,5 +1 +3,4 + +Expected Result +--------------- +? + 1 2 + 3 4 +? ? + 1 0 + 3 4 diff --git a/apps/interpreters/bas/test/test01 b/apps/examples/bas/tests/test01.bas index b89c7a73a..b89c7a73a 100644 --- a/apps/interpreters/bas/test/test01 +++ b/apps/examples/bas/tests/test01.bas diff --git a/apps/interpreters/bas/test/test02 b/apps/examples/bas/tests/test02.bas index 88615fa61..88615fa61 100644 --- a/apps/interpreters/bas/test/test02 +++ b/apps/examples/bas/tests/test02.bas diff --git a/apps/interpreters/bas/test/test03 b/apps/examples/bas/tests/test03.bas index b7b1496e0..b7b1496e0 100644 --- a/apps/interpreters/bas/test/test03 +++ b/apps/examples/bas/tests/test03.bas diff --git a/apps/interpreters/bas/test/test04 b/apps/examples/bas/tests/test04.bas index 547f4ec28..547f4ec28 100644 --- a/apps/interpreters/bas/test/test04 +++ b/apps/examples/bas/tests/test04.bas diff --git a/apps/interpreters/bas/test/test05 b/apps/examples/bas/tests/test05.bas index 28322325f..28322325f 100644 --- a/apps/interpreters/bas/test/test05 +++ b/apps/examples/bas/tests/test05.bas diff --git a/apps/interpreters/bas/test/test06 b/apps/examples/bas/tests/test06.bas index 8a5402d04..8a5402d04 100644 --- a/apps/interpreters/bas/test/test06 +++ b/apps/examples/bas/tests/test06.bas diff --git a/apps/interpreters/bas/test/test07 b/apps/examples/bas/tests/test07.bas index 57f2899a6..57f2899a6 100644 --- a/apps/interpreters/bas/test/test07 +++ b/apps/examples/bas/tests/test07.bas diff --git a/apps/interpreters/bas/test/test08 b/apps/examples/bas/tests/test08.bas index 82209c91b..82209c91b 100644 --- a/apps/interpreters/bas/test/test08 +++ b/apps/examples/bas/tests/test08.bas diff --git a/apps/interpreters/bas/test/test09 b/apps/examples/bas/tests/test09.bas index d751b2474..d751b2474 100644 --- a/apps/interpreters/bas/test/test09 +++ b/apps/examples/bas/tests/test09.bas diff --git a/apps/interpreters/bas/test/test10 b/apps/examples/bas/tests/test10.bas index 35d65ca4a..35d65ca4a 100644 --- a/apps/interpreters/bas/test/test10 +++ b/apps/examples/bas/tests/test10.bas diff --git a/apps/interpreters/bas/test/test11 b/apps/examples/bas/tests/test11.bas index 88801c730..88801c730 100644 --- a/apps/interpreters/bas/test/test11 +++ b/apps/examples/bas/tests/test11.bas diff --git a/apps/interpreters/bas/test/test12 b/apps/examples/bas/tests/test12.bas index b78f53747..b78f53747 100644 --- a/apps/interpreters/bas/test/test12 +++ b/apps/examples/bas/tests/test12.bas diff --git a/apps/interpreters/bas/test/test13 b/apps/examples/bas/tests/test13.bas index c4e3e3d2b..c4e3e3d2b 100644 --- a/apps/interpreters/bas/test/test13 +++ b/apps/examples/bas/tests/test13.bas diff --git a/apps/interpreters/bas/test/test14 b/apps/examples/bas/tests/test14.bas index 1699d3bd9..1699d3bd9 100644 --- a/apps/interpreters/bas/test/test14 +++ b/apps/examples/bas/tests/test14.bas diff --git a/apps/interpreters/bas/test/test15 b/apps/examples/bas/tests/test15.bas index 5d4c7545b..5d4c7545b 100644 --- a/apps/interpreters/bas/test/test15 +++ b/apps/examples/bas/tests/test15.bas diff --git a/apps/interpreters/bas/test/test16 b/apps/examples/bas/tests/test16.bas index 9e9942381..9e9942381 100644 --- a/apps/interpreters/bas/test/test16 +++ b/apps/examples/bas/tests/test16.bas diff --git a/apps/interpreters/bas/test/test17 b/apps/examples/bas/tests/test17.bas index 544e790f8..544e790f8 100644 --- a/apps/interpreters/bas/test/test17 +++ b/apps/examples/bas/tests/test17.bas diff --git a/apps/interpreters/bas/test/test18 b/apps/examples/bas/tests/test18.bas index 2ad4d8ec1..2ad4d8ec1 100644 --- a/apps/interpreters/bas/test/test18 +++ b/apps/examples/bas/tests/test18.bas diff --git a/apps/interpreters/bas/test/test19 b/apps/examples/bas/tests/test19.bas index 9f0a471f4..9f0a471f4 100644 --- a/apps/interpreters/bas/test/test19 +++ b/apps/examples/bas/tests/test19.bas diff --git a/apps/interpreters/bas/test/test20 b/apps/examples/bas/tests/test20.bas index c8a1a06e1..c8a1a06e1 100644 --- a/apps/interpreters/bas/test/test20 +++ b/apps/examples/bas/tests/test20.bas diff --git a/apps/interpreters/bas/test/test21 b/apps/examples/bas/tests/test21.bas index 407430d4c..407430d4c 100644 --- a/apps/interpreters/bas/test/test21 +++ b/apps/examples/bas/tests/test21.bas diff --git a/apps/interpreters/bas/test/test22 b/apps/examples/bas/tests/test22.bas index 73e2317f9..73e2317f9 100644 --- a/apps/interpreters/bas/test/test22 +++ b/apps/examples/bas/tests/test22.bas diff --git a/apps/interpreters/bas/test/test23 b/apps/examples/bas/tests/test23.bas index 60b37da89..60b37da89 100644 --- a/apps/interpreters/bas/test/test23 +++ b/apps/examples/bas/tests/test23.bas diff --git a/apps/interpreters/bas/test/test24 b/apps/examples/bas/tests/test24.bas index 40037cdcd..40037cdcd 100644 --- a/apps/interpreters/bas/test/test24 +++ b/apps/examples/bas/tests/test24.bas diff --git a/apps/interpreters/bas/test/test25 b/apps/examples/bas/tests/test25.bas index 07132f8c5..07132f8c5 100644 --- a/apps/interpreters/bas/test/test25 +++ b/apps/examples/bas/tests/test25.bas diff --git a/apps/interpreters/bas/test/test26 b/apps/examples/bas/tests/test26.bas index f7b85687a..f7b85687a 100644 --- a/apps/interpreters/bas/test/test26 +++ b/apps/examples/bas/tests/test26.bas diff --git a/apps/interpreters/bas/test/test27 b/apps/examples/bas/tests/test27.bas index f90c0c236..f90c0c236 100644 --- a/apps/interpreters/bas/test/test27 +++ b/apps/examples/bas/tests/test27.bas diff --git a/apps/interpreters/bas/test/test28 b/apps/examples/bas/tests/test28.bas index fa22845bb..fa22845bb 100644 --- a/apps/interpreters/bas/test/test28 +++ b/apps/examples/bas/tests/test28.bas diff --git a/apps/interpreters/bas/test/test29 b/apps/examples/bas/tests/test29.bas index 945f33e4d..945f33e4d 100644 --- a/apps/interpreters/bas/test/test29 +++ b/apps/examples/bas/tests/test29.bas diff --git a/apps/interpreters/bas/test/test30 b/apps/examples/bas/tests/test30.bas index 0d7b29a26..0d7b29a26 100644 --- a/apps/interpreters/bas/test/test30 +++ b/apps/examples/bas/tests/test30.bas diff --git a/apps/interpreters/bas/test/test31 b/apps/examples/bas/tests/test31.bas index 7c4b79017..7c4b79017 100644 --- a/apps/interpreters/bas/test/test31 +++ b/apps/examples/bas/tests/test31.bas diff --git a/apps/interpreters/bas/test/test32 b/apps/examples/bas/tests/test32.bas index d080d3c27..d080d3c27 100644 --- a/apps/interpreters/bas/test/test32 +++ b/apps/examples/bas/tests/test32.bas diff --git a/apps/interpreters/bas/test/test33 b/apps/examples/bas/tests/test33.bas index adc53dd62..adc53dd62 100644 --- a/apps/interpreters/bas/test/test33 +++ b/apps/examples/bas/tests/test33.bas diff --git a/apps/interpreters/bas/test/test34 b/apps/examples/bas/tests/test34.bas index 0419284d8..0419284d8 100644 --- a/apps/interpreters/bas/test/test34 +++ b/apps/examples/bas/tests/test34.bas diff --git a/apps/interpreters/bas/test/test35 b/apps/examples/bas/tests/test35.bas index 448fc0dfa..448fc0dfa 100644 --- a/apps/interpreters/bas/test/test35 +++ b/apps/examples/bas/tests/test35.bas diff --git a/apps/interpreters/bas/test/test36 b/apps/examples/bas/tests/test36.bas index b26cffae3..b26cffae3 100644 --- a/apps/interpreters/bas/test/test36 +++ b/apps/examples/bas/tests/test36.bas diff --git a/apps/interpreters/bas/test/test37 b/apps/examples/bas/tests/test37.bas index ca0d446eb..ca0d446eb 100644 --- a/apps/interpreters/bas/test/test37 +++ b/apps/examples/bas/tests/test37.bas diff --git a/apps/interpreters/bas/test/test38 b/apps/examples/bas/tests/test38.bas index 3733d0ad4..3733d0ad4 100644 --- a/apps/interpreters/bas/test/test38 +++ b/apps/examples/bas/tests/test38.bas diff --git a/apps/interpreters/bas/test/test39 b/apps/examples/bas/tests/test39.bas index 25c33d475..25c33d475 100644 --- a/apps/interpreters/bas/test/test39 +++ b/apps/examples/bas/tests/test39.bas diff --git a/apps/interpreters/bas/test/test40 b/apps/examples/bas/tests/test40.bas index d2c4eb0fe..d2c4eb0fe 100644 --- a/apps/interpreters/bas/test/test40 +++ b/apps/examples/bas/tests/test40.bas diff --git a/apps/interpreters/bas/test/test41 b/apps/examples/bas/tests/test41.bas index 58bc28c74..58bc28c74 100644 --- a/apps/interpreters/bas/test/test41 +++ b/apps/examples/bas/tests/test41.bas diff --git a/apps/interpreters/bas/test/test42 b/apps/examples/bas/tests/test42.bas index f448251a4..f448251a4 100644 --- a/apps/interpreters/bas/test/test42 +++ b/apps/examples/bas/tests/test42.bas diff --git a/apps/interpreters/bas/test/test43 b/apps/examples/bas/tests/test43.bas index 56d993a0f..56d993a0f 100644 --- a/apps/interpreters/bas/test/test43 +++ b/apps/examples/bas/tests/test43.bas diff --git a/apps/interpreters/bas/test/test44 b/apps/examples/bas/tests/test44.bas index 25b1ec3de..25b1ec3de 100644 --- a/apps/interpreters/bas/test/test44 +++ b/apps/examples/bas/tests/test44.bas diff --git a/apps/interpreters/bas/test/test45 b/apps/examples/bas/tests/test45.bas index 88878c2d0..88878c2d0 100644 --- a/apps/interpreters/bas/test/test45 +++ b/apps/examples/bas/tests/test45.bas diff --git a/apps/interpreters/bas/test/test46 b/apps/examples/bas/tests/test46.bas index 4537f3e56..4537f3e56 100644 --- a/apps/interpreters/bas/test/test46 +++ b/apps/examples/bas/tests/test46.bas diff --git a/apps/interpreters/bas/test/test47 b/apps/examples/bas/tests/test47.bas index 13eb94db2..13eb94db2 100644 --- a/apps/interpreters/bas/test/test47 +++ b/apps/examples/bas/tests/test47.bas diff --git a/apps/interpreters/bas/test/test48 b/apps/examples/bas/tests/test48.bas index fe2a9e870..fe2a9e870 100644 --- a/apps/interpreters/bas/test/test48 +++ b/apps/examples/bas/tests/test48.bas diff --git a/apps/interpreters/bas/test/test49 b/apps/examples/bas/tests/test49.bas index 0d8bcb455..0d8bcb455 100644 --- a/apps/interpreters/bas/test/test49 +++ b/apps/examples/bas/tests/test49.bas diff --git a/apps/interpreters/bas/test/test50 b/apps/examples/bas/tests/test50.bas index 4155ca52b..4155ca52b 100644 --- a/apps/interpreters/bas/test/test50 +++ b/apps/examples/bas/tests/test50.bas diff --git a/apps/interpreters/bas/test/test51 b/apps/examples/bas/tests/test51.bas index 9341dd09b..9341dd09b 100644 --- a/apps/interpreters/bas/test/test51 +++ b/apps/examples/bas/tests/test51.bas diff --git a/apps/interpreters/bas/test/test52 b/apps/examples/bas/tests/test52.bas index dc524f645..dc524f645 100644 --- a/apps/interpreters/bas/test/test52 +++ b/apps/examples/bas/tests/test52.bas |