def test_intersection_returns_zero_area_rectangle_when_rectangles_do_not_intersect( self): expected = Rectangle.from_array([0, 0, 0, 0]) actual = Rectangle.from_array([1, 1, 2, 2]).intersection( Rectangle.from_array([5, 5, 6, 6])) self.failUnlessEqual(expected, actual) self.failUnlessEqual(actual.area(), 0)
def test_conversion_to_integer(self): expected = Rectangle.from_array([1, 3, 4, 5]) actual = Rectangle.from_array([1.4, 2.5, 3.7, 4.99]).intify() self.failUnlessEqual(expected, actual) self.failUnless(isinstance(actual.x1, int)) self.failUnless(isinstance(actual.x2, int)) self.failUnless(isinstance(actual.y1, int)) self.failUnless(isinstance(actual.y2, int))
def test_intersection_creates_new_rectangle_with_correct_corners(self): expected = Rectangle.from_array([-1, -1, 2, 2]) actual = Rectangle.from_array([-1, -1, 13, 8]).intersection( Rectangle.from_array([2, 2, -13, -7])) self.failUnlessEqual(expected, actual) actual = Rectangle.from_array([-1, 8, 13, -1]).intersection( Rectangle.from_array([2, -7, -13, 2])) self.failUnlessEqual(expected, actual)
def test_conversion_to_integer(self): expected = Rectangle.from_array([1, 3, 4, 5]) # rounding convention changed in python3 2.5 becomes 2 not 3 # see: # https://docs.python.org/3/library/functions.html#round # https://stackoverflow.com/questions/21839140/python-3-rounding-behavior-in-python-2 if sys.version_info[0] < 3: actual = Rectangle.from_array([1.4, 2.5, 3.7, 4.99]).intify() else: actual = Rectangle.from_array([1.4, 2.51, 3.7, 4.99]).intify() self.assertEqual(expected, actual) self.assertTrue(isinstance(actual.x1, int)) self.assertTrue(isinstance(actual.x2, int)) self.assertTrue(isinstance(actual.y1, int)) self.assertTrue(isinstance(actual.y2, int))
def test_create_rectangle_from_array(self): expected = Rectangle(Point(1, 2), Point(3, 4)) actual = Rectangle.from_array([1, 2, 3, 4]) self.failUnlessEqual(expected, actual)
def test_create_rectangle_from_corner(self): expected = Rectangle.from_array([-15, 22, 35, 95]) actual = Rectangle.from_corner(Point(-15, 22), 50, 73) self.failUnlessEqual(expected, actual)
def test_create_rectangle_from_centre(self): expected = Rectangle.from_array([-1, -1, 1, 1]) actual = Rectangle.from_center(Point(0, 0), 2, 2) self.failUnlessEqual(expected, actual)
def test_conversion_to_float(self): actual = Rectangle.from_array([1, 2, 3, 4]).floatify() self.failUnless(isinstance(actual.x1, float)) self.failUnless(isinstance(actual.x2, float)) self.failUnless(isinstance(actual.y1, float)) self.failUnless(isinstance(actual.y2, float))