- added missing tests (commented out for now)
This commit is contained in:
parent
38e8caaff1
commit
e7f18d6891
165
gaphas/tests/test_canvas.py
Normal file
165
gaphas/tests/test_canvas.py
Normal file
@ -0,0 +1,165 @@
|
||||
import unittest
|
||||
|
||||
from gaphas.canvas import Canvas
|
||||
from gaphas.examples import Box
|
||||
from gaphas.item import Line, Handle
|
||||
from gaphas.constraint import BalanceConstraint, EqualsConstraint
|
||||
|
||||
# fixme: what about multiple constraints for a handle?
|
||||
# what about 1d projection?
|
||||
|
||||
###class ConstraintProjectionTestCase(unittest.TestCase):
|
||||
### def test_line_projection(self):
|
||||
### """Test projection with line's handle on element's side"""
|
||||
### line = Line()
|
||||
### line.matrix.translate(15, 50)
|
||||
### h1, h2 = line.handles()
|
||||
### h1.x, h1.y = 0, 0
|
||||
### h2.x, h2.y = 20, 20
|
||||
###
|
||||
### box = Box()
|
||||
### box.matrix.translate(10, 10)
|
||||
### box.width = 40
|
||||
### box.height = 20
|
||||
### h_nw, h_ne, h_se, h_sw = box.handles()
|
||||
###
|
||||
###
|
||||
### canvas = Canvas()
|
||||
### canvas.add(line)
|
||||
### canvas.add(box)
|
||||
###
|
||||
### # move line's second handle on box side
|
||||
### h2.x, h2.y = 5, -20
|
||||
###
|
||||
### bc = BalanceConstraint(band=(h_sw.x, h_se.x), v=h2.x, balance=0.25)
|
||||
### canvas.projector(bc, x={h_sw.x: box, h_se.x: box, h2.x: line})
|
||||
### canvas._solver.add_constraint(bc)
|
||||
###
|
||||
### eq = EqualsConstraint(a=h_se.y, b=h2.y)
|
||||
### canvas.projector(eq, y={h_se.y: box, h2.y: line})
|
||||
### canvas._solver.add_constraint(eq)
|
||||
###
|
||||
### box.request_update()
|
||||
### line.request_update()
|
||||
###
|
||||
### canvas.update()
|
||||
###
|
||||
### box.width = 60
|
||||
### box.height = 30
|
||||
###
|
||||
### canvas.update()
|
||||
###
|
||||
### # expect h2.x to be moved due to balance constraint
|
||||
### self.assertEquals(10, h2.x)
|
||||
### self.assertEquals(-10, h2.y)
|
||||
|
||||
|
||||
###class CanvasConstraintTestCase(unittest.TestCase):
|
||||
### def test_adding_constraint(self):
|
||||
### """Test adding canvas constraint"""
|
||||
### canvas = Canvas()
|
||||
### cons = canvas._canvas_constraints
|
||||
###
|
||||
### l1 = Line()
|
||||
### canvas.add(l1)
|
||||
###
|
||||
### h1, h2 = l1.handles()
|
||||
### h = Handle()
|
||||
###
|
||||
### eq1 = EqualsConstraint(h1.x, h.x)
|
||||
### canvas.add_canvas_constraint(l1, h1, eq1)
|
||||
### self.assertTrue(l1 in cons)
|
||||
### self.assertTrue(h1 in cons[l1])
|
||||
### self.assertTrue(eq1 in cons[l1][h1])
|
||||
###
|
||||
### l2 = Line()
|
||||
### canvas.add(l2)
|
||||
###
|
||||
### h1, h2 = l2.handles()
|
||||
### h = Handle()
|
||||
###
|
||||
### eq2 = EqualsConstraint(h1.x, h.x)
|
||||
### canvas.add_canvas_constraint(l2, h1, eq2)
|
||||
### self.assertTrue(l2 in cons)
|
||||
### self.assertTrue(h1 in cons[l2])
|
||||
### self.assertTrue(eq2 in cons[l2][h1])
|
||||
###
|
||||
###
|
||||
### def test_adding_constraint_ex(self):
|
||||
### """Test adding canvas constraint for non-existing item"""
|
||||
### canvas = Canvas()
|
||||
### l1 = Line()
|
||||
### h1, h2 = l1.handles()
|
||||
### h = Handle()
|
||||
###
|
||||
### eq = EqualsConstraint(h1.x, h.x)
|
||||
### self.assertRaises(ValueError, canvas.add_canvas_constraint, l1, h1, eq)
|
||||
###
|
||||
###
|
||||
### def test_removing_constraint(self):
|
||||
### """Test removing canvas constraint"""
|
||||
### canvas = Canvas()
|
||||
### cons = canvas._canvas_constraints
|
||||
###
|
||||
### l1 = Line()
|
||||
### canvas.add(l1)
|
||||
###
|
||||
### h1, h2 = l1.handles()
|
||||
### h = Handle()
|
||||
###
|
||||
### eq1 = EqualsConstraint(h1.x, h.x)
|
||||
### canvas.add_canvas_constraint(l1, h1, eq1)
|
||||
###
|
||||
### # test preconditions
|
||||
### assert l1 in cons
|
||||
### assert h1 in cons[l1]
|
||||
### assert eq1 in cons[l1][h1]
|
||||
###
|
||||
### canvas.remove_canvas_constraint(l1, h1, eq1)
|
||||
### self.assertTrue(l1 in cons)
|
||||
### self.assertTrue(h1 in cons[l1])
|
||||
### self.assertFalse(eq1 in cons[l1][h1])
|
||||
###
|
||||
### eq1 = EqualsConstraint(h1.x, h.x)
|
||||
### eq2 = EqualsConstraint(h1.y, h.y)
|
||||
### canvas.add_canvas_constraint(l1, h1, eq1)
|
||||
### canvas.add_canvas_constraint(l1, h1, eq2)
|
||||
###
|
||||
### # test preconditions
|
||||
### assert l1 in cons
|
||||
### assert h1 in cons[l1]
|
||||
### assert eq1 in cons[l1][h1]
|
||||
### assert eq2 in cons[l1][h1]
|
||||
###
|
||||
### canvas.remove_canvas_constraint(l1, h1)
|
||||
###
|
||||
### self.assertTrue(l1 in cons)
|
||||
### self.assertTrue(h1 in cons[l1])
|
||||
### self.assertFalse(eq1 in cons[l1][h1])
|
||||
### self.assertFalse(eq2 in cons[l1][h1])
|
||||
###
|
||||
###
|
||||
### def test_fetching_constraints(self):
|
||||
### """Test fetching canvas constraints"""
|
||||
### canvas = Canvas()
|
||||
### cons = canvas._canvas_constraints
|
||||
###
|
||||
### l1 = Line()
|
||||
### canvas.add(l1)
|
||||
###
|
||||
### h1, h2 = l1.handles()
|
||||
### h = Handle()
|
||||
###
|
||||
### eq1 = EqualsConstraint(h1.x, h.x)
|
||||
### eq2 = EqualsConstraint(h1.y, h.y)
|
||||
### canvas.add_canvas_constraint(l1, h1, eq1)
|
||||
### canvas.add_canvas_constraint(l1, h1, eq2)
|
||||
###
|
||||
### # test preconditions
|
||||
### assert l1 in cons
|
||||
### assert h1 in cons[l1]
|
||||
### assert eq1 in cons[l1][h1]
|
||||
### assert eq2 in cons[l1][h1]
|
||||
###
|
||||
### self.assertTrue(eq1 in canvas.canvas_constraints(l1))
|
||||
### self.assertTrue(eq2 in canvas.canvas_constraints(l1))
|
Loading…
x
Reference in New Issue
Block a user