Ejemplo n.º 1
0
    def test_solution_comparison_maximization(self):
        sol1 = SolutionTuple(SOLUTIONS[0][0], SOLUTIONS[0][1])
        sol2 = SolutionTuple(SOLUTIONS[1][0], SOLUTIONS[1][1])
        sol3 = SolutionTuple(SOLUTIONS[2][0], SOLUTIONS[2][1])

        # test ordering
        self.assertEqual(sol1.__cmp__(sol2), -1)
        self.assertEqual(sol1.__cmp__(sol1), 0)
        self.assertEqual(sol1.__cmp__(sol3), 1)

        self.assertTrue(sol1 < sol2)
        self.assertTrue(sol1 == sol1)
        self.assertTrue(sol1 > sol3)

        # test gt and lt
        self.assertTrue(sol1.__lt__(sol2))
        self.assertTrue(sol1.__gt__(sol3))
        self.assertFalse(sol1.__lt__(sol1))
        self.assertFalse(sol1.__gt__(sol1))
        self.assertFalse(sol2.__lt__(sol1))
        self.assertFalse(sol3.__gt__(sol1))


        # testing issubset
        self.assertTrue(sol1.issubset(sol2), msg="Solution 1 is subset of Solution 2")
        self.assertFalse(sol2.issubset(sol1), msg="Solution 2 is not subset of Solution 1")
        self.assertTrue(sol3.issubset(sol2), msg="Solution 3 is subset of Solution 2")
        self.assertFalse(sol2.issubset(sol3), msg="Solution 2 is not subset of Solution 3")
        self.assertFalse(sol1.issubset(sol3), msg="Solution 1 is subset of Solution 3")
        self.assertFalse(sol2.issubset(sol3), msg="Solution 3 is not subset of Solution 1")

        # test difference
        l = len(sol2.symmetric_difference(sol1))
        self.assertEqual(l, 1, msg="Difference between Solution 2 and 1 is (%s)" % sol2.symmetric_difference(sol1))
        l = len(sol3.symmetric_difference(sol2))
        self.assertEqual(l, 1, msg="Difference between Solution 3 and 1 is (%s)" % sol3.symmetric_difference(sol2))
        l = len(sol3.symmetric_difference(sol1))
        self.assertEqual(l, 2, msg="Difference between Solution 1 and 3 is (%s)" % sol3.symmetric_difference(sol1))

        self.assertTrue(sol1.improves(sol2), msg="Solution 1 is better than Solution 2")
        self.assertTrue(sol3.improves(sol2), msg="Solution 3 is better than Solution 2")
        self.assertFalse(sol3.improves(sol1), msg="Solution 3 does not improve Solution 1")
        self.assertFalse(sol2.improves(sol1), msg="Solution 2 does not improve Solution 1")
        self.assertFalse(sol2.improves(sol3), msg="Solution 2 does not improve Solution 3")