def setUp(self):
     self.ab_cd = Tree(Tree(Leaf("a"), Leaf("b")),
                       Tree(Leaf("c"), Leaf("d")))
     self.ab = self.ab_cd.left
     self.cd = self.ab_cd.right
     self.a = self.ab.left
     self.b = self.ab.right
     self.c = self.cd.left
     self.d = self.cd.right
     pass
 def test_tree_contains_all_subtrees(self):
     ab_c = Tree(self.ab, self.c)
     self.assertTrue(ab_c.contains(ab_c.left))
     self.assertTrue(ab_c.contains(ab_c.right))
 def test_trees_with_switched_branches_are_equal(self):
     cd_ba = Tree(self.cd, Tree(self.b, self.a))
     self.assertEqual(self.ab_cd, cd_ba)
 def test_unequal_trees_are_unequal(self):
     aa = Tree(self.a, self.a)
     self.assertNotEqual(aa, self.ab)