class BodyTests(unittest.TestCase): """ The tests of the core module body feature """ def setUp(self): """ Setup the test case. """ self.bod = Body() def tearDown(self): """ Teardown the test case. """ self.bod = Body() def test_create_new_body(self): """ Test the creation of a new empty body. """ assert len(self.bod.shapes) == 0 assert len(self.bod.pins) == 0 def test_empty_bounds(self): '''Test that an empty body only bounds the local origin''' top_left, bottom_right = self.bod.bounds() self.assertEqual(top_left.x, 0) self.assertEqual(top_left.y, 0) self.assertEqual(bottom_right.x, 0) self.assertEqual(bottom_right.y, 0) def test_bounds_pins(self): '''Test bounds() with just pins included''' pins = [Pin(str(i), Point(0, 0), Point(0, 0)) for i in range(4)] # checking body.bounds(), not the pins, so override their bounds() # methods for i, pin in enumerate(pins): bounds = [3, 3, 3, 3] bounds[i] = 2 * i mkbounds(pin, bounds[0], bounds[1], bounds[2], bounds[3]) self.bod.add_pin(pin) top_left, bottom_right = self.bod.bounds() self.assertEqual(top_left.x, 0) self.assertEqual(top_left.y, 2) self.assertEqual(bottom_right.x, 4) self.assertEqual(bottom_right.y, 6) def test_bounds_shapes(self): '''Test Body.bounds() when the body only consists of shapes''' shapes = [Shape() for i in range(4)] for i, shape in enumerate(shapes): bounds = [3, 3, 3, 3] bounds[i] = 2 * i mkbounds(shape, bounds[0], bounds[1], bounds[2], bounds[3]) self.bod.add_shape(shape) top_left, bottom_right = self.bod.bounds() self.assertEqual(top_left.x, 0) self.assertEqual(top_left.y, 2) self.assertEqual(bottom_right.x, 4) self.assertEqual(bottom_right.y, 6) def test_bounds_pins_shapes(self): '''Test Body.bounds() when some extremes are from pins, others shapes''' point = Point(0, 0) pin1 = Pin('foo', point, point) pin2 = Pin('bar', point, point) sh1 = Shape() sh2 = Shape() mkbounds(pin1, 3, 2, 3, 3) mkbounds(pin2, 3, 3, 5, 3) mkbounds(sh1, 3, 3, 3, 4) mkbounds(sh2, 1, 3, 3, 3) self.bod.add_pin(pin1) self.bod.add_pin(pin2) self.bod.add_shape(sh1) self.bod.add_shape(sh2) top_left, bottom_right = self.bod.bounds() self.assertEqual(top_left.x, 1) self.assertEqual(top_left.y, 2) self.assertEqual(bottom_right.x, 5) self.assertEqual(bottom_right.y, 4)