Ejemplo n.º 1
0
class InterpreterTest(unittest.TestCase):
    """Tests the interpreter

    Other tests test are based on R5Rs, such as tail-recursion and
    static bindings.
    """

    def __init__(self, *args):
        unittest.TestCase.__init__(self, *args)
        self.interpreter = Interpreter()

    def eval(self, expression):
        return self.interpreter.eval(expression)

    def assertEval(self, expression, result):
        """Asserts that the specified expression evaluates to the
        specified result.
        """
        eval = self.interpreter.eval(expression)
        self.failIf(eval != result,
                    "%s => %s, expected %s"
                    % (expression, eval, result))

    def assertFEval(self, expression, floatResult, epsilon=0.0001):
        """Asserts that the specified expressions evaluates to a
        number that differs at most epsilon from floatResult.
        """
        eval = self.interpreter.eval(expression)

        self.failIf(abs(floatResult - eval) > epsilon,
                    "%s ==> %f, expected %f"
                    % (expression, eval, floatResult))

    def assertError(self, expression):
        """Asserts that the specified expression raises an error at
        evaluation.
        """
        try:
            self.interpreter.eval(expression)
        except Exception:
            return

        fail(expression + " did not raise an exception")
Ejemplo n.º 2
0
 def __init__(self, *args):
     unittest.TestCase.__init__(self, *args)
     self.interpreter = Interpreter()