#!/usr/bin/env python # encoding: utf-8 import unittest from mapytex.calculus.str2tokens import str2tokens, str2in_tokens, in2post_fix from mapytex.calculus.polynom import Polynom from mapytex.calculus.operator import op class TestStr2tokens(unittest.TestCase): """Testing functions from mapytex.calculus.str2tokens""" def test_str2in_tokens(self): ans = str2in_tokens("2+3*4") self.assertEqual(ans, [2, "+", 3, "*", 4]) ans = str2in_tokens("2*3+4") self.assertEqual(ans, [2, "*", 3, "+", 4]) from decimal import Decimal ans = str2in_tokens("2.34") self.assertEqual(ans, [Decimal('2.34')]) def test_in2post_fix(self): in_tokens = str2in_tokens("2+3*4") ans = in2post_fix(in_tokens) self.assertEqual(ans, [2, 3, 4, op.mul, op.add]) in_tokens = str2in_tokens("2*3+4") ans = in2post_fix(in_tokens) self.assertEqual(ans, [2, 3, op.mul, 4, op.add]) def test_str2in_tokens_big_num(self): exp = "123 + 3" tok = str2in_tokens(exp) self.assertEqual(tok, [123, "+", 3]) def test_str2in_tokens_beg_minus(self): exp = "-123 + 3" tok = str2in_tokens(exp) self.assertEqual(tok, [-123, "+", 3]) def test_str2in_tokens_time_lack(self): exp = "(-3)(2)" tok = str2in_tokens(exp) self.assertEqual(tok, ["(", -3, ")", "*", "(", 2, ")"]) def test_str2tokens_poly(self): exp = "2x + 4" post = str2in_tokens(exp) self.assertEqual(post, [2, "*", Polynom([0, 1]), '+', 4]) def test_str2tokens_poly_double_x(self): exp = "xx + 4" post = str2in_tokens(exp) self.assertEqual(post, [Polynom([0, 1]), "*", Polynom([0, 1]), '+', 4]) def test_str2tokens_poly_par(self): exp = "x(2+1) + 4" post = str2in_tokens(exp) self.assertEqual(post, [Polynom([0, 1]), "*", "(", 2, "+", 1, ')', '+', 4]) def test_str2in_tokens_time_lack2(self): exp = "-3(2)" tok = str2in_tokens(exp) self.assertEqual(tok, [-3, "*", "(", 2, ")"]) def test_str2tokens_error(self): exp = "1 + $" self.assertRaises(ValueError, str2tokens, exp) if __name__ == '__main__': unittest.main() # ----------------------------- # Reglages pour 'vim' # vim:set autoindent expandtab tabstop=4 shiftwidth=4: # cursor: 16 del