Пример #1
0
 def _update_method_graph(self):
   while self.unenforced_constraints:
     constraint = self._remove_strongest_constraint()
     self.redetermined_variables.clear()
     if not Mvine(self.marker).build(constraint, self.redetermined_variables):
       continue
     self._propagate_walk_strength(self.redetermined_variables.union([constraint]))
     self._collect_unenforced(constraint.strength, False)
     self.exec_roots.append(constraint)
     self.exec_roots.extend([var_constraint \
       for var in self.redetermined_variables \
         for var_constraint in var.constraints \
           if var.determined_by is None and \
             var_constraint.is_enforced()])
Пример #2
0
class MVineTests(TestCase):

  def setUp(self):
    self.marker = marker
    self.mvine = Mvine(self.marker)
    self.constraint_system = ConstraintSystem()

  def test_build_mvine(self):
    v1, v2, v3 = self.constraint_system.create_variables(["v1", "v2", "v3"], [3, 4, 5])

    method1 = Method(
        [v1, v2],
        [v3],
        lambda v1, v2: (v1 + v2) / 2)

    method2 = Method(
        [v3, v2],
        [v1],
        lambda v3, v2: 2 * v3 - v2)

    method3 = Method([v3, v1], [v2], lambda v3, v1: 2 * v3 - v1)
    cn = Constraint(
        lambda v1, v2, v3: True,
        Strength.STRONG,
        [v1, v2, v3],
        [method1, method2, method3])

    self.assertIsNone(v1.determined_by)
    self.assertIsNone(v2.determined_by)
    self.assertIsNone(v3.determined_by)

    self.assertEqual(3, v1.get_value())
    self.assertEqual(4, v2.get_value())
    self.assertEqual(5, v3.get_value())

    redetermined_varariables = set()
    self.assertTrue(self.mvine.build(cn, redetermined_varariables))

    self.assertEqual(set([v3]), redetermined_varariables)
    self.assertIsNone(v1.determined_by)
    self.assertIsNone(v2.determined_by)
    self.assertEqual(cn, v3.determined_by)
    self.assertIsNotNone(cn.mark)
Пример #3
0
 def setUp(self):
   self.marker = marker
   self.mvine = Mvine(self.marker)
   self.cs = ConstraintSystem()
Пример #4
0
 def setUp(self):
   self.marker = marker
   self.mvine = Mvine(self.marker)
   self.constraint_system = ConstraintSystem()