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()
|