import unittest import doctest import node from node import Node, Leaf from line import generate_line class TestNode(unittest.TestCase): def test_doctest(self): self.assertEqual(doctest.testmod(m=node)[0], 0) def setUp(self): self.l0 = Leaf('leaf 1') self.l1 = Leaf('leaf 2') self.node = Node('node', self.l0, self.l1) def test_getitem(self): assert self.node[0] == self.l0 def test_setitem(self): self.node[0] = Leaf('leaf 3') assert self.node[0] != self.l0 def test_iter(self): s = '' for leaf in self.node: s += leaf.title() assert s == 'leaf 1leaf 2' def test_len(self): assert len(self.node) == 2 def test_title(self): assert self.node.title() == 'node' assert self.l0.title() == 'leaf 1' def test____str__(self): l1 = Leaf(1) self.assertEqual(str(l1), '1') l1 = -l1 self.assertEqual(str(l1), '-1') l1 = -l1 self.assertEqual(str(l1), '--1') def test_kwargs_constructor(self): l1, l2 = Leaf(1), Leaf(2) self.assertEqual(Node('+', l1, l2, negated=1).negated, 1) self.assertEqual(Leaf(1, negated=2).negated, 2) def test_negated_int_constructor(self): self.assertEquals(-Leaf(2), Leaf(-2))