from whileinterpreter import interpret from test_loop_interpreter import LOOPInterpreterTest import unittest class WHILEInterpreterTest(LOOPInterpreterTest): def test_while_forbidden_identifier(self): with self.assertRaises(SyntaxError): interpret("LOOP x1 DO WHILE x1 != 0 DO x0:=x0+1 END END ") def test_while(self): self.assertEqual(interpret('x1:=1; WHILE x1 != 0 DO x0:=2; x1:=x1-1 END'), 2) self.assertEqual(interpret('WHILE x1 /= 0 DO x0:=1 END'), 0) self.assertEqual(interpret('WHILE x1 /= 0 DO WHILE x1 /= 0 DO x0:=2 END END'), 0) def test_while_non_zero(self): with self.assertRaises(SyntaxError): interpret("x1:= 1; WHILE x1 /= 1 DO x0:=2 END") with self.assertRaises(SyntaxError): interpret("x1:= 2; WHILE x1 /= 1 DO x0:=2 END") with self.assertRaises(SyntaxError): interpret("x1:= 1; WHILE x1 /= 0 DO WHILE x1 /= 1 DO x0:=2 END END")