1919# output against the expected output.
2020import unittest
2121import sys
22- import os
2322from pathlib import Path
2423from io import StringIO
2524from NanoBASIC .executioner import execute
2625
2726
2827# Tokenizes, parses, and interprets a NanoBASIC
2928# program; stores the output in a string and returns it
30- def run (file_name : str ) -> str :
29+ def run (file_name : str | Path ) -> str :
3130 output_holder = StringIO ()
3231 sys .stdout = output_holder
3332 execute (file_name )
@@ -36,62 +35,61 @@ def run(file_name: str) -> str:
3635
3736class NanoBASICTestCase (unittest .TestCase ):
3837 def setUp (self ) -> None :
39- # Change working directory to this file so we can easily access
40- # the Examples directory where the test NanoBASIC code resides
41- os .chdir (Path (__file__ ).resolve ().parent )
38+ self .example_folder = (Path (__file__ ).resolve ().parent .parent
39+ / 'NanoBASIC' / 'Examples' )
4240
4341 def test_print1 (self ):
44- program_output = run ("../NanoBASIC/Examples/ print1.bas" )
42+ program_output = run (self . example_folder / " print1.bas" )
4543 expected = "Hello World\n "
4644 self .assertEqual (program_output , expected )
4745
4846 def test_print2 (self ):
49- program_output = run ("../NanoBASIC/Examples/ print2.bas" )
47+ program_output = run (self . example_folder / " print2.bas" )
5048 expected = "4\n 12\n 30\n 7\n 100\t 9\n "
5149 self .assertEqual (program_output , expected )
5250
5351 def test_print3 (self ):
54- program_output = run ("../NanoBASIC/Examples/ print3.bas" )
52+ program_output = run (self . example_folder / " print3.bas" )
5553 expected = "E is\t -31\n "
5654 self .assertEqual (program_output , expected )
5755
5856 def test_variables (self ):
59- program_output = run ("../NanoBASIC/Examples/ variables.bas" )
57+ program_output = run (self . example_folder / " variables.bas" )
6058 expected = "15\n "
6159 self .assertEqual (program_output , expected )
6260
6361 def test_goto (self ):
64- program_output = run ("../NanoBASIC/Examples/ goto.bas" )
62+ program_output = run (self . example_folder / " goto.bas" )
6563 expected = "Josh\n Dave\n NanoBASIC ROCKS\n "
6664 self .assertEqual (program_output , expected )
6765
6866 def test_gosub (self ):
69- program_output = run ("../NanoBASIC/Examples/ gosub.bas" )
67+ program_output = run (self . example_folder / " gosub.bas" )
7068 expected = "10\n "
7169 self .assertEqual (program_output , expected )
7270
7371 def test_if1 (self ):
74- program_output = run ("../NanoBASIC/Examples/ if1.bas" )
72+ program_output = run (self . example_folder / " if1.bas" )
7573 expected = "10\n 40\n 50\n 60\n 70\n 100\n "
7674 self .assertEqual (program_output , expected )
7775
7876 def test_if2 (self ):
79- program_output = run ("../NanoBASIC/Examples/ if2.bas" )
77+ program_output = run (self . example_folder / " if2.bas" )
8078 expected = "GOOD\n "
8179 self .assertEqual (program_output , expected )
8280
8381 def test_fib (self ):
84- program_output = run ("../NanoBASIC/Examples/ fib.bas" )
82+ program_output = run (self . example_folder / " fib.bas" )
8583 expected = "0\n 1\n 1\n 2\n 3\n 5\n 8\n 13\n 21\n 34\n 55\n 89\n "
8684 self .assertEqual (program_output , expected )
8785
8886 def test_factorial (self ):
89- program_output = run ("../NanoBASIC/Examples/ factorial.bas" )
87+ program_output = run (self . example_folder / " factorial.bas" )
9088 expected = "120\n "
9189 self .assertEqual (program_output , expected )
9290
9391 def test_gcd (self ):
94- program_output = run ("../NanoBASIC/Examples/ gcd.bas" )
92+ program_output = run (self . example_folder / " gcd.bas" )
9593 expected = "7\n "
9694 self .assertEqual (program_output , expected )
9795
0 commit comments