Commit 821c5062 authored by Taddeus Kroes's avatar Taddeus Kroes

Fixed multiplication sign omission when left node ends with a digit.

parent 43e674b5
...@@ -39,10 +39,6 @@ def is_id(node): ...@@ -39,10 +39,6 @@ def is_id(node):
return node.is_leaf and not node.title().isdigit() return node.is_leaf and not node.title().isdigit()
def is_int(node):
return node.is_leaf and node.title().isdigit()
def is_power(node): def is_power(node):
return not node.is_leaf and node.title() == '^' return not node.is_leaf and node.title() == '^'
...@@ -166,11 +162,11 @@ def generate_line(root): ...@@ -166,11 +162,11 @@ def generate_line(root):
# (a) * b -> (a)b # (a) * b -> (a)b
# (a) * (b) -> (a)(b) # (a) * (b) -> (a)(b)
# 2 * a -> 2a # 2 * a -> 2a
left_paren = e[0][-1] == ')' left_end = e[0][-1]
right_paren = e[1][0] == '(' right_begin = e[1][0]
left_suited = left_paren or is_id(left) or is_int(left) left_suited = left_end == ')' or left_end.isdigit() or is_id(left)
right_suited = right_paren right_suited = right_begin == '('
if not right_suited and not right.negated: if not right_suited and not right.negated:
right_suited = is_id(right) or is_power(right) right_suited = is_id(right) or is_power(right)
......
...@@ -3,7 +3,7 @@ import doctest ...@@ -3,7 +3,7 @@ import doctest
import line import line
from node import Node as N, Leaf as L from node import Node as N, Leaf as L
from line import generate_line, is_id, is_int, is_power from line import generate_line, is_id, is_power
class TestLine(unittest.TestCase): class TestLine(unittest.TestCase):
...@@ -152,6 +152,9 @@ class TestLine(unittest.TestCase): ...@@ -152,6 +152,9 @@ class TestLine(unittest.TestCase):
mul = N('*', l2, N('^', a, l2)) mul = N('*', l2, N('^', a, l2))
self.assertEquals(generate_line(mul), '2a ^ 2') self.assertEquals(generate_line(mul), '2a ^ 2')
mul = N('*', N('^', a, l2), N('+', a, b))
self.assertEquals(generate_line(mul), 'a ^ 2(a + b)')
def test_plus_to_minus(self): def test_plus_to_minus(self):
plus = N('+', L(1), -L(2)) plus = N('+', L(1), -L(2))
self.assertEquals(generate_line(plus), '1 - 2') self.assertEquals(generate_line(plus), '1 - 2')
...@@ -172,11 +175,6 @@ class TestLine(unittest.TestCase): ...@@ -172,11 +175,6 @@ class TestLine(unittest.TestCase):
self.assertFalse(is_id(neg)) self.assertFalse(is_id(neg))
self.assertFalse(is_id(plus)) self.assertFalse(is_id(plus))
self.assertTrue(is_int(l1))
self.assertTrue(is_int(neg))
self.assertFalse(is_int(neg_a))
self.assertFalse(is_int(plus))
self.assertTrue(is_power(power)) self.assertTrue(is_power(power))
self.assertFalse(is_power(l1)) self.assertFalse(is_power(l1))
self.assertFalse(is_power(plus)) self.assertFalse(is_power(plus))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment