|
@@ -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
|
|
|
|
|
|
|
+from line import generate_line, is_id, is_int, is_power
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestLine(unittest.TestCase):
|
|
class TestLine(unittest.TestCase):
|
|
@@ -105,6 +105,13 @@ class TestLine(unittest.TestCase):
|
|
|
node_mul = N('*', a, node_pow)
|
|
node_mul = N('*', a, node_pow)
|
|
|
self.assertEquals(generate_line(node_mul), 'a(b + c) ^ (d + e)')
|
|
self.assertEquals(generate_line(node_mul), 'a(b + c) ^ (d + e)')
|
|
|
|
|
|
|
|
|
|
+ def test_pow_negated_root(self):
|
|
|
|
|
+ a, l2 = L('a'), L(2)
|
|
|
|
|
+ power = -N('^', a, l2)
|
|
|
|
|
+ self.assertEquals(generate_line(power), '-a ^ 2')
|
|
|
|
|
+ power = N('^', -a, l2)
|
|
|
|
|
+ self.assertEquals(generate_line(power), '(-a) ^ 2')
|
|
|
|
|
+
|
|
|
def test_multiplication_sign(self):
|
|
def test_multiplication_sign(self):
|
|
|
a, b, c, l2 = L('a'), L('b'), L('c'), L(2)
|
|
a, b, c, l2 = L('a'), L('b'), L('c'), L(2)
|
|
|
mul = N('*', a, b)
|
|
mul = N('*', a, b)
|
|
@@ -136,7 +143,7 @@ class TestLine(unittest.TestCase):
|
|
|
self.assertEquals(generate_line(mul), 'a * 2')
|
|
self.assertEquals(generate_line(mul), 'a * 2')
|
|
|
|
|
|
|
|
mul = N('*', l2, N('^', a, l2))
|
|
mul = N('*', l2, N('^', a, l2))
|
|
|
- self.assertEquals(generate_line(mul), '2 * a ^ 2')
|
|
|
|
|
|
|
+ self.assertEquals(generate_line(mul), '2a ^ 2')
|
|
|
|
|
|
|
|
def test_plus_to_minus(self):
|
|
def test_plus_to_minus(self):
|
|
|
plus = N('+', L(1), -L(2))
|
|
plus = N('+', L(1), -L(2))
|
|
@@ -151,6 +158,7 @@ class TestLine(unittest.TestCase):
|
|
|
neg = -l1
|
|
neg = -l1
|
|
|
neg_a = -a
|
|
neg_a = -a
|
|
|
plus = N('+', l1, a)
|
|
plus = N('+', l1, a)
|
|
|
|
|
+ power = N('^', a, l1)
|
|
|
|
|
|
|
|
self.assertTrue(is_id(a))
|
|
self.assertTrue(is_id(a))
|
|
|
self.assertTrue(is_id(neg_a))
|
|
self.assertTrue(is_id(neg_a))
|
|
@@ -162,6 +170,10 @@ class TestLine(unittest.TestCase):
|
|
|
self.assertFalse(is_int(neg_a))
|
|
self.assertFalse(is_int(neg_a))
|
|
|
self.assertFalse(is_int(plus))
|
|
self.assertFalse(is_int(plus))
|
|
|
|
|
|
|
|
|
|
+ self.assertTrue(is_power(power))
|
|
|
|
|
+ self.assertFalse(is_power(l1))
|
|
|
|
|
+ self.assertFalse(is_power(plus))
|
|
|
|
|
+
|
|
|
def test_negated_operator(self):
|
|
def test_negated_operator(self):
|
|
|
neg = -N('+', L(1), L(2))
|
|
neg = -N('+', L(1), L(2))
|
|
|
self.assertEquals(generate_line(neg), '-(1 + 2)')
|
|
self.assertEquals(generate_line(neg), '-(1 + 2)')
|