Ejemplo n.º 1
0
    def test_weakest_list_order(self):
        """Test weakest list order"""
        solver = Solver()
        a = Variable(1, 30)
        b = Variable(2, 10)
        c = Variable(3, 10)

        c_eq = EquationConstraint(lambda a, b, c: a + b + c, a=a, b=b, c=c)
        solver.add_constraint(c_eq)

        weakest = [el for el in c_eq._weakest]
        a.value = 4

        self.assertEqual(c_eq._weakest, weakest) # does not change if non-weak variable changed

        b.value = 5
        self.assertEqual(c_eq.weakest(), c)

        b.value = 6
        self.assertEqual(c_eq.weakest(), c)

        # b changed above, now change a - all weakest variables changed
        # return the oldest changed variable then
        c.value = 6
        self.assertEqual(c_eq.weakest(), b)

        b.value = 6
        self.assertEqual(c_eq.weakest(), c)
Ejemplo n.º 2
0
 def __init__(self):
     self.solver = Solver()
     self.a = Variable(1, 30)
     self.b = Variable(2, 10)
     self.c = Variable(3, 10)
     self.c_eq = EquationConstraint(
         lambda a, b, c: a + b + c, a=self.a, b=self.b, c=self.c
     )
     self.solver.add_constraint(self.c_eq)
Ejemplo n.º 3
0
    def test_strength_change(self):
        """Test strength change"""
        solver = Solver()
        a = Variable(1, 30)
        b = Variable(2, 10)
        c = Variable(3, 10)

        c_eq = EquationConstraint(lambda a, b, c: a + b + c, a=a, b=b, c=c)
        solver.add_constraint(c_eq)

        b.strength = 9
        self.assertEqual(c_eq._weakest, [b])
Ejemplo n.º 4
0
    def test_weakest_list_order(self):
        """Test weakest list order"""
        solver = Solver()
        a = Variable(1, 30)
        b = Variable(2, 10)
        c = Variable(3, 10)

        c_eq = EquationConstraint(lambda a, b, c: a + b + c, a=a, b=b, c=c)
        solver.add_constraint(c_eq)

        weakest = [el for el in c_eq._weakest]
        a.value = 4

        self.assertEqual(
            c_eq._weakest,
            weakest)  # does not change if non-weak variable changed

        b.value = 5
        self.assertEqual(c_eq.weakest(), c)

        b.value = 6
        self.assertEqual(c_eq.weakest(), c)

        # b changed above, now change a - all weakest variables changed
        # return the oldest changed variable then
        c.value = 6
        self.assertEqual(c_eq.weakest(), b)

        b.value = 6
        self.assertEqual(c_eq.weakest(), c)
Ejemplo n.º 5
0
    def test_weakest_list(self):
        """Test weakest list"""
        solver = Solver()
        a = Variable(1, 30)
        b = Variable(2, 10)
        c = Variable(3, 10)

        c_eq = EquationConstraint(lambda a, b, c: a + b + c, a=a, b=b, c=c)
        solver.add_constraint(c_eq)

        # because of kwargs above we cannot test by the order of arguments
        self.assertTrue(b in c_eq._weakest)
        self.assertTrue(c in c_eq._weakest)
Ejemplo n.º 6
0
def test_weakest_list_order():
    solver = Solver()
    a = Variable(1, 30)
    b = Variable(2, 10)
    c = Variable(3, 10)
    c_eq = EquationConstraint(lambda a, b, c: a + b + c, a=a, b=b, c=c)
    solver.add_constraint(c_eq)
    a.value = 4

    b.value = 5
    assert c_eq.weakest() == c

    b.value = 6
    assert c_eq.weakest() == c

    # b changed above, now change a - all weakest variables changed return the
    # oldest changed variable
    c.value = 6
    assert c_eq.weakest() == b

    b.value = 6
    assert c_eq.weakest() == c