import unittest from numint.expression import Lark_StandAlone from numint.expression_transformer import ExpressionTransformer class MyTestCase(unittest.TestCase): """ tests if the grammer file 'expression.lark' work """ def test_prio_product_exponent(self): parser = Lark_StandAlone() tree = parser.parse("x ** -3 * sin(12)") self.assertEqual('''mul exponent var x neg number 3 function sin argv number 12 ''', tree.pretty(indent_str=' ')) def test_prio_product_exponent_revert(self): parser = Lark_StandAlone() tree = parser.parse("sin(12) * x ** sqrt(4)") # => sin(12) * (x ** sqrt(4)) print(f">{tree.pretty()}<") self.assertEqual('''mul function sin argv number 12 exponent var x function sqrt argv number 4 ''', tree.pretty(indent_str=' ')) def test_use_transform(self): parser = Lark_StandAlone(transformer=ExpressionTransformer()) tree = parser.parse("log(-12, 5) * x ** sqrt(4)") # => sin(12) * (x^sqrt(4)) self.assertEqual(tree, 'math.log(-12, 5) * x ** math.sqrt(4)') def test_use_function_in_function(self): parser = Lark_StandAlone(transformer=ExpressionTransformer()) tree = parser.parse("tan(radians(x))") # => self.assertEqual(tree, 'math.tan(math.radians(x))') if __name__ == '__main__': unittest.main()