def testSetOps(self): n = HashSet() a = HashSet(['a', 'b', 'c']) b = HashSet(['a', 'd', 'e', 'f']) c = HashSet(['g', 'h']) # union self.assertEqual(a.union(b), HashSet(['a','b','c','d','e','f']), "incorrect union") self.assertEqual(a.union(n), a, "incorrect union with empty set") # intersection self.assertEqual(a.intersection(b), HashSet(['a']), "incorrect intersection") self.assertEqual(a.intersection(c), HashSet(), "incorrect intersection") self.assertEqual(a.intersection(n), HashSet(), "incorrect intersection with empty set") # difference self.assertEqual(a.difference(b), HashSet(['b','c']), "incorrect difference") self.assertEqual(a.difference(c), HashSet(['a','b','c']), "incorrect difference") self.assertEqual(b.difference(a), HashSet(['d','e','f']), "incorrect difference") # cartesian product self.assertEqual(a.cartesian(c), HashSet([('a','g'),('a','h'), ('b','g'),('b','h'), ('c','g'),('c','h')]), "incorrect cartesian product") self.assertEqual(a.cartesian(n), HashSet(), "incorrect cartesian product")