Example #1
0
class TestExecutor(unittest.TestCase):
    def setUp(self):
        self.executor = Executor()

    def testConstructor(self):
        if IGNORE_TEST:
            return
        self.assertTrue('api' in self.executor._namespace)

    def testAddNamespace(self):
        if IGNORE_TEST:
            return
        self.executor.addNamespace(NAMESPACE)
        self.assertEqual(self.executor._namespace[VAR1], VALUES1)
        self.assertEqual(self.executor._namespace[VAR2], VALUES2)

    def testDeleteNamespace(self):
        if IGNORE_TEST:
            return
        self.executor.addNamespace(NAMESPACE)
        self.executor.deleteNames([VAR2])
        self.assertFalse(VAR2 in self.executor._namespace)

    def testDoExpression(self):
        namespace = {'a': 1, 'b': 2}
        expression = "a + b"
        self.executor.addNamespace(namespace)
        result = self.executor.doExpression(expression)
        self.assertEqual(result, namespace['a'] + namespace['b'])

    def testDoExpressionException(self):
        namespace = {'a': 1, 'b': 0}
        expression = "a / b"
        self.executor.addNamespace(namespace)
        with self.assertRaises(Exception):
            result = self.executor.doExpression(expression)

    def testDoScript(self):
        namespace = {'a': 1, 'b': 2}
        program = "y = a + b"
        self.executor.addNamespace(namespace)
        self.executor.doScript(program)
        y_value = self.executor._namespace['y']
        self.assertEqual(y_value, namespace['a'] + namespace['b'])

    def testDoScriptException(self):
        namespace = {'a': 1, 'b': 0}
        program = "y = a / b"
        self.executor.addNamespace(namespace)
        with self.assertRaises(Exception):
            result = self.executor.doScript(program)