summaryrefslogtreecommitdiff
path: root/gerber/tests
diff options
context:
space:
mode:
Diffstat (limited to 'gerber/tests')
-rw-r--r--gerber/tests/test_primitives.py134
-rw-r--r--gerber/tests/tests.py9
2 files changed, 136 insertions, 7 deletions
diff --git a/gerber/tests/test_primitives.py b/gerber/tests/test_primitives.py
index 29036b4..4534484 100644
--- a/gerber/tests/test_primitives.py
+++ b/gerber/tests/test_primitives.py
@@ -6,7 +6,6 @@ from ..primitives import *
from tests import *
-
def test_line_angle():
""" Test Line primitive angle calculation
"""
@@ -22,7 +21,8 @@ def test_line_angle():
l = Line(start, end, 0)
line_angle = (l.angle + 2 * math.pi) % (2 * math.pi)
assert_almost_equal(line_angle, expected)
-
+
+
def test_line_bounds():
""" Test Line primitive bounding box calculation
"""
@@ -34,6 +34,7 @@ def test_line_bounds():
l = Line(start, end, 0)
assert_equal(l.bounding_box, expected)
+
def test_arc_radius():
""" Test Arc primitive radius calculation
"""
@@ -65,21 +66,144 @@ def test_arc_bounds():
((1, 0), (0, 1), (0, 0), 'counterclockwise', ((0, 1), (0, 1))),
#TODO: ADD MORE TEST CASES HERE
]
-
for start, end, center, direction, bounds in cases:
a = Arc(start, end, center, direction, 0)
assert_equal(a.bounding_box, bounds)
-
+
+
def test_circle_radius():
""" Test Circle primitive radius calculation
"""
c = Circle((1, 1), 2)
assert_equal(c.radius, 1)
-
+
+
def test_circle_bounds():
""" Test Circle bounding box calculation
"""
c = Circle((1, 1), 2)
assert_equal(c.bounding_box, ((0, 2), (0, 2)))
+
+
+def test_ellipse_ctor():
+ """ Test ellipse creation
+ """
+ e = Ellipse((2, 2), 3, 2)
+ assert_equal(e.position, (2, 2))
+ assert_equal(e.width, 3)
+ assert_equal(e.height, 2)
+
+
+def test_ellipse_bounds():
+ """ Test ellipse bounding box calculation
+ """
+ e = Ellipse((2, 2), 4, 2)
+ assert_equal(e.bounding_box, ((0, 4), (1, 3)))
+ e = Ellipse((2, 2), 4, 2, rotation=90)
+ assert_equal(e.bounding_box, ((1, 3), (0, 4)))
+ e = Ellipse((2, 2), 4, 2, rotation=180)
+ assert_equal(e.bounding_box, ((0, 4), (1, 3)))
+ e = Ellipse((2, 2), 4, 2, rotation=270)
+ assert_equal(e.bounding_box, ((1, 3), (0, 4)))
+
+def test_rectangle_ctor():
+ """ Test rectangle creation
+ """
+ test_cases = (((0,0), 1, 1), ((0, 0), 1, 2), ((1,1), 1, 2))
+ for pos, width, height in test_cases:
+ r = Rectangle(pos, width, height)
+ assert_equal(r.position, pos)
+ assert_equal(r.width, width)
+ assert_equal(r.height, height)
+
+def test_rectangle_bounds():
+ """ Test rectangle bounding box calculation
+ """
+ r = Rectangle((0,0), 2, 2)
+ xbounds, ybounds = r.bounding_box
+ assert_array_almost_equal(xbounds, (-1, 1))
+ assert_array_almost_equal(ybounds, (-1, 1))
+ r = Rectangle((0,0), 2, 2, rotation=45)
+ xbounds, ybounds = r.bounding_box
+ assert_array_almost_equal(xbounds, (-math.sqrt(2), math.sqrt(2)))
+ assert_array_almost_equal(ybounds, (-math.sqrt(2), math.sqrt(2)))
+
+def test_diamond_ctor():
+ """ Test diamond creation
+ """
+ test_cases = (((0,0), 1, 1), ((0, 0), 1, 2), ((1,1), 1, 2))
+ for pos, width, height in test_cases:
+ d = Diamond(pos, width, height)
+ assert_equal(d.position, pos)
+ assert_equal(d.width, width)
+ assert_equal(d.height, height)
+
+def test_diamond_bounds():
+ """ Test diamond bounding box calculation
+ """
+ d = Diamond((0,0), 2, 2)
+ xbounds, ybounds = d.bounding_box
+ assert_array_almost_equal(xbounds, (-1, 1))
+ assert_array_almost_equal(ybounds, (-1, 1))
+ d = Diamond((0,0), math.sqrt(2), math.sqrt(2), rotation=45)
+ xbounds, ybounds = d.bounding_box
+ assert_array_almost_equal(xbounds, (-1, 1))
+ assert_array_almost_equal(ybounds, (-1, 1))
+
+
+def test_chamfer_rectangle_ctor():
+ """ Test chamfer rectangle creation
+ """
+ test_cases = (((0,0), 1, 1, 0.2, (True, True, False, False)),
+ ((0, 0), 1, 2, 0.3, (True, True, True, True)),
+ ((1,1), 1, 2, 0.4, (False, False, False, False)))
+ for pos, width, height, chamfer, corners in test_cases:
+ r = ChamferRectangle(pos, width, height, chamfer, corners)
+ assert_equal(r.position, pos)
+ assert_equal(r.width, width)
+ assert_equal(r.height, height)
+ assert_equal(r.chamfer, chamfer)
+ assert_array_almost_equal(r.corners, corners)
+
+def test_chamfer_rectangle_bounds():
+ """ Test chamfer rectangle bounding box calculation
+ """
+ r = ChamferRectangle((0,0), 2, 2, 0.2, (True, True, False, False))
+ xbounds, ybounds = r.bounding_box
+ assert_array_almost_equal(xbounds, (-1, 1))
+ assert_array_almost_equal(ybounds, (-1, 1))
+ r = ChamferRectangle((0,0), 2, 2, 0.2, (True, True, False, False), rotation=45)
+ xbounds, ybounds = r.bounding_box
+ assert_array_almost_equal(xbounds, (-math.sqrt(2), math.sqrt(2)))
+ assert_array_almost_equal(ybounds, (-math.sqrt(2), math.sqrt(2)))
+
+
+def test_round_rectangle_ctor():
+ """ Test round rectangle creation
+ """
+ test_cases = (((0,0), 1, 1, 0.2, (True, True, False, False)),
+ ((0, 0), 1, 2, 0.3, (True, True, True, True)),
+ ((1,1), 1, 2, 0.4, (False, False, False, False)))
+ for pos, width, height, radius, corners in test_cases:
+ r = RoundRectangle(pos, width, height, radius, corners)
+ assert_equal(r.position, pos)
+ assert_equal(r.width, width)
+ assert_equal(r.height, height)
+ assert_equal(r.radius, radius)
+ assert_array_almost_equal(r.corners, corners)
+
+def test_round_rectangle_bounds():
+ """ Test round rectangle bounding box calculation
+ """
+ r = RoundRectangle((0,0), 2, 2, 0.2, (True, True, False, False))
+ xbounds, ybounds = r.bounding_box
+ assert_array_almost_equal(xbounds, (-1, 1))
+ assert_array_almost_equal(ybounds, (-1, 1))
+ r = RoundRectangle((0,0), 2, 2, 0.2, (True, True, False, False), rotation=45)
+ xbounds, ybounds = r.bounding_box
+ assert_array_almost_equal(xbounds, (-math.sqrt(2), math.sqrt(2)))
+ assert_array_almost_equal(ybounds, (-math.sqrt(2), math.sqrt(2)))
+
+ \ No newline at end of file
diff --git a/gerber/tests/tests.py b/gerber/tests/tests.py
index 222eea3..e7029e4 100644
--- a/gerber/tests/tests.py
+++ b/gerber/tests/tests.py
@@ -15,5 +15,10 @@ from nose.tools import raises
from nose import with_setup
__all__ = ['assert_in', 'assert_not_in', 'assert_equal', 'assert_not_equal',
- 'assert_almost_equal', 'assert_true', 'assert_false',
- 'assert_raises', 'raises', 'with_setup' ]
+ 'assert_almost_equal', 'assert_array_almost_equal', 'assert_true',
+ 'assert_false', 'assert_raises', 'raises', 'with_setup' ]
+
+def assert_array_almost_equal(arr1, arr2, decimal=6):
+ assert_equal(len(arr1), len(arr2))
+ for i in xrange(len(arr1)):
+ assert_almost_equal(arr1[i], arr2[i], decimal) \ No newline at end of file