Mapytex/test/test_str2tokens.py

87 lines
2.4 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
import unittest
from pymath.str2tokens import str2tokens, str2in_tokens, in2post_fix
from pymath.polynom import Polynom
class TestStr2tokens(unittest.TestCase):
"""Testing functions from pymath.str2tokens"""
def test_str2intokens(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])
def test_in2post_fix(self):
in_tokens = str2in_tokens("2+3*4")
ans = in2post_fix(in_tokens)
self.assertEqual(ans, [2, 3, 4, "*", "+"])
in_tokens = str2in_tokens("2*3+4")
ans = in2post_fix(in_tokens)
self.assertEqual(ans, [2, 3,"*", 4, "+"])
# TODO: Ajouter des tests pour les cas particuliers... |sam. nov. 8 17:39:18 CET 2014
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(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_float(self):
exp = "1 + 1.3"
self.assertRaises(ValueError, str2tokens, exp)
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