def test_is_free_corner(self): a = Area(Rectangle(Field(0, 0), Field(7, 7)), 1) r = Rectangle(Field(2, 1), Field(5, 5)) for c in r.corners(): with self.assertRaises(Exception): c.is_free_corner() a += r for c in r.corners(): self.assertTrue(c.is_free_corner()) # We will add a new rectangle which is in contact with the former r2 = Rectangle(Field(1, 6), Field(5, 7)) a += r2 self.assertTrue(r.bottom_left.is_free_corner()) self.assertTrue(r.bottom_right.is_free_corner()) # Not free anymore self.assertFalse(r.top_left.is_free_corner()) self.assertFalse(r.top_right.is_free_corner()) # Now for the second self.assertFalse(r2.bottom_left.is_free_corner()) self.assertFalse(r2.bottom_right.is_free_corner()) self.assertTrue(r2.top_left.is_free_corner()) self.assertTrue(r2.top_right.is_free_corner())
def test_init_one_by_one(self): f = Field(4, 4) rect = Rectangle(f, f) for c in rect.corners(): self.assertEqual(c.x, f.x) self.assertEqual(c.y, f.y) self.assertEqual(c.rectangle, rect)
def test_init_area(self): a = Area(Rectangle(Field(0, 0), Field(31, 31)), 2) rect = Rectangle(Field(5, 5), Field(10, 10)) a += rect for c in rect.corners(): self.assertEqual(c.rectangle.area, a)
def test_conversion2(self): r = Rectangle(Field(1, 1), Field(5, 5)) results = { "(1,1)": (0.5, 0.5), "(1,5)": (0.5, 5.5), "(5,1)": (5.5, 0.5), "(5,5)": (5.5, 5.5) } for c in r.corners(): r = results[c.__str__()] self.assertEqual(Point(r[0], r[1]), Point.corner_to_point(c))
def test_is_free_corner_diagonally(self): a = Area(Rectangle(Field(0, 0), Field(15, 15)), 1) base = Rectangle(Field(5, 5), Field(8, 8)) for c in base.corners(): with self.assertRaises(Exception): c.is_free_corner_diagonally() a += base for c in base.corners(): self.assertTrue(c.is_free_corner_diagonally()) r1 = Rectangle(Field(1, 1), Field(4, 4)) r2 = Rectangle(Field(9, 9), Field(13, 14)) r3 = Rectangle(Field(4, 9), Field(1, 12)) r4 = Rectangle(Field(6, 4), Field(10, 2)) rs = [r1, r2, r3, r4] for r in rs: # We will add a new rectangle which is in contact with the former a += r for c in base.corners(): if c.is_free_corner(): self.assertTrue(c.is_free_corner_diagonally()) else: self.assertFalse(not c.is_free_corner_diagonally()) # Now for the second for c in r.corners(): if c.is_free_corner(): self.assertTrue(c.is_free_corner_diagonally()) else: self.assertFalse(not c.is_free_corner_diagonally())
def test_init(self): f1 = Field(0, 0) f2 = Field(10, 0) f3 = Field(10, 10) f4 = Field(0, 10) rectangle = Rectangle(f1, f3) real = [f1, f2, f3, f4] testing = rectangle.corners() for i in range(0, 4): self.assertTrue(real[i] == testing[i])
def test_corner(self): r = Rectangle(Field(1, 1), Field(4, 4)) for c in r.corners(): if r.top_right == c: self.assertEqual(c.corner_type, CornerType.top_right) self.assertEqual(c.corner_type.value, (0.5, 0.5)) if r.top_left == c: self.assertEqual(c.corner_type, CornerType.top_left) self.assertEqual(c.corner_type.value, (-0.5, 0.5)) if r.bottom_right == c: self.assertEqual(c.corner_type, CornerType.bottom_right) self.assertEqual(c.corner_type.value, (0.5, -0.5)) if r.bottom_left == c: self.assertEqual(c.corner_type, CornerType.bottom_left) self.assertEqual(c.corner_type.value, (-0.5, -0.5))
def test_free_corners(self): a = Area(Rectangle(Field(0, 0), Field(63, 63)), 4) r = Rectangle(Field(2, 1), Field(5, 5)) for c in r.corners(): with self.assertRaises(Exception): c.is_free_corner() a += r for c in r.corners(): if c in r.free_corners(): self.assertTrue(c.is_free_corner()) else: self.assertFalse(c.is_free_corner()) # We will add a new rectangle which is in contact with the former r2 = Rectangle(Field(1, 6), Field(5, 7)) a += r2 for c in r.corners(): if c in r.free_corners(): self.assertTrue(c.is_free_corner()) else: self.assertFalse(c.is_free_corner()) # Second rectangle for c in r2.corners(): if c in r2.free_corners(): self.assertTrue(c.is_free_corner()) else: self.assertFalse(c.is_free_corner())