Beispiel #1
0
  def test_adding_iterative_should_be_in_the_right_order(self):
    cs = ConstraintSystem()

    all_vars = cs.create_variables(["a", "b", "c"], [1, 2, 3])
    a, b, c = all_vars

    m1 = Method([a, c], [b], lambda a,c: a + c)
    m2 = Method([b, c], [a], lambda b,c: b - c)

    cn = Constraint(lambda a,b,c: a + c == b, Strength.STRONG, [a, b, c], [m1, m2], "cn1")

    self.cs.add_constraint(cn)

    a.stay()
    a_stay_cn = a.stay_constraint

    c.set_value(8)
    c_set_cn = cs.forced_constraint

    cs.exec_roots = [c_set_cn, a_stay_cn]
    self.assertEqual([cn, c_set_cn, a_stay_cn], cs.exec_pplan_create())
Beispiel #2
0
class ExecFromRootTests(TestCase):

  def setUp(self):
    self.cs = ConstraintSystem()

  def test_exec_pplan_create_with_empty_input(self):
    pplan = self.cs.exec_pplan_create()
    self.assertEqual([], pplan)

  def test_exec_pplan_create_with_one_cn(self):
    v = Variable("v", 1, self.cs)
    cn = Constraint(lambda x: x == 5, Strength.STRONG, v, Method([], v, lambda: 5))
    self.cs.add_constraint(cn)
    self.cs.exec_roots = [cn]
    self.assertEqual([cn], self.cs.exec_pplan_create())

  def test_exec_pplan_create_with_one_unmarked_cn(self):
    v = Variable("v", 1, self.cs)
    cn = Constraint(lambda x: x == 5, Strength.STRONG, v, Method([], v, lambda: 5))
    self.cs.add_constraint(cn)
    self.cs.exec_roots = [cn]
    self.assertEqual([cn], self.cs.exec_pplan_create())

  def test_exec_pplan_create_with_one_marked_cn(self):
    v = Variable("v", 1, self.cs)
    cn = Constraint(lambda x: x == 5, Strength.STRONG, v, Method([], v, lambda: 5))
    self.cs.add_constraint(cn)
    cn.mark = self.cs.mark
    self.cs.exec_roots = [cn]
    self.assertEqual([], self.cs.exec_pplan_create())

  @skip("Broken test.")
  def test_exec_pplan_create_with_one_undetermined_var(self):
    v = Variable("v", 1, self.cs)
    cn = Constraint(lambda x: x == 5, Strength.STRONG, v, Method([], v, lambda: 5))
    self.cs.add_constraint(cn)
    v.determined_by = None
    self.cs.exec_roots = [v]
    self.assertEqual([cn], self.cs.exec_pplan_create())

  def test_exec_pplan_create_with_one_determined_var(self):
    v = Variable("v", 1, self.cs)
    cn = Constraint(lambda x: x == 5, Strength.STRONG, v, Method([], v, lambda: 5))
    self.cs.add_constraint(cn)
    self.cs.exec_roots = [v]
    self.assertEqual([], self.cs.exec_pplan_create())