예제 #1
0
    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())
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
    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))
예제 #5
0
    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())
예제 #6
0
    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])
예제 #7
0
 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))
예제 #8
0
    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())