new unittest for expression
This commit is contained in:
parent
d67d68e080
commit
ae6664b7cf
@ -111,7 +111,7 @@ class Expression(object):
|
||||
## ---------------------
|
||||
## String parsing
|
||||
|
||||
## @classmethod ????
|
||||
@classmethod
|
||||
def str2tokens(self, exp):
|
||||
""" Parse the expression, ie tranform a string into a list of tokens
|
||||
|
||||
|
@ -8,13 +8,16 @@ import unittest
|
||||
from pymath.expression import Expression
|
||||
from pymath.fraction import Fraction
|
||||
from pymath.generic import first_elem
|
||||
from pymath.renders import txt_render
|
||||
|
||||
|
||||
class TestExpression(unittest.TestCase):
|
||||
"""Testing functions from pymath.expression"""
|
||||
|
||||
def test_init_from_exp(self):
|
||||
pass
|
||||
def test_init_from_str(self):
|
||||
exp = Expression("2 + 3")
|
||||
self.assertEqual(exp.infix_tokens, [2, "+", 3])
|
||||
self.assertEqual(exp.postfix_tokens, [2, 3, "+"])
|
||||
|
||||
def test_init_from_exp(self):
|
||||
pass
|
||||
@ -25,6 +28,30 @@ class TestExpression(unittest.TestCase):
|
||||
def test_postfix_tokens(self):
|
||||
pass
|
||||
|
||||
def test_str2tokens_big_num(self):
|
||||
exp = "123 + 3"
|
||||
tok = Expression.str2tokens(exp)
|
||||
self.assertEqual(tok, [123, "+", 3])
|
||||
|
||||
def test_str2tokens_beg_minus(self):
|
||||
exp = "-123 + 3"
|
||||
tok = Expression.str2tokens(exp)
|
||||
self.assertEqual(tok, [-123, "+", 3])
|
||||
|
||||
def test_str2tokens_time_lack(self):
|
||||
exp = "(-3)(2)"
|
||||
tok = Expression.str2tokens(exp)
|
||||
self.assertEqual(tok, ["(", -3, ")", "*","(", 2, ")" ])
|
||||
|
||||
def test_str2tokens_time_lack2(self):
|
||||
exp = "-3(2)"
|
||||
tok = Expression.str2tokens(exp)
|
||||
self.assertEqual(tok, [-3, "*","(", 2, ")" ])
|
||||
|
||||
def test_str2tokens_error(self):
|
||||
exp = "1 + $"
|
||||
self.assertRaises(ValueError, Expression.str2tokens, exp)
|
||||
|
||||
def test_doMath(self):
|
||||
ops = [\
|
||||
{"op": ("+", 1 , 2), "res" : 3}, \
|
||||
@ -43,6 +70,16 @@ class TestExpression(unittest.TestCase):
|
||||
def test_isOperator(self):
|
||||
pass
|
||||
|
||||
def test_simplify_frac(self):
|
||||
exp = Expression("1/2 - 4")
|
||||
steps = ["[1, 2, '/', 4, '-']", \
|
||||
"[< Fraction 1 / 2>, 4, '-']", \
|
||||
"[1, 1, '*', 2, 1, '*', '/', 4, 2, '*', 1, 2, '*', '/', '-']", \
|
||||
"[1, 8, '-', 2, '/']", \
|
||||
'[< Fraction -7 / 2>]']
|
||||
self.assertEqual(steps, list(exp.simplify()))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user