Ejemplo n.º 1
0
 def testThreeItemInsert(self):
     """
     Three Item insertion 
     Rotation = False
     """
     I = item.Item(1, 1)
     I2 = item.Item(4, 2)
     I3 = item.Item(1, 1)
     F0 = maximal_rectangles.FreeRectangle(8, 2, 0, 2)
     F1 = maximal_rectangles.FreeRectangle(3, 4, 5, 0)
     self.M.contact_point(I)
     self.M.contact_point(I2)
     self.M.contact_point(I3)
     with self.subTest():
         self.assertCountEqual(self.M.freerects, [F0, F1])
     with self.subTest():
         self.assertEqual(I.x, 0)
         self.assertEqual(I.y, 0)
     with self.subTest():
         self.assertEqual(I2.x, 1)
         self.assertEqual(I2.y, 0)
     with self.subTest():
         self.assertEqual(I3.x, 0)
         self.assertEqual(I3.y, 1)
     with self.subTest():
         self.assertEqual(self.M.free_area, 22)
Ejemplo n.º 2
0
    def testFindOverlap(self):
        """
        Returns the area of overlap of two
        intersected rectangles
        """
        F0 = maximal_rectangles.FreeRectangle(4, 4, 0, 0)
        F1 = maximal_rectangles.FreeRectangle(4, 2, 3, 0)
        B = (3, 0, 7, 2)

        self.assertEqual(self.M.findOverlap(F0, B), (3, 0, 4, 2))
Ejemplo n.º 3
0
    def testPruneOverlaps(self):
        F0 = maximal_rectangles.FreeRectangle(4, 4, 0, 0)
        F1 = maximal_rectangles.FreeRectangle(1, 1, 0, 0)
        self.M.freerects = [F0, F1]
        itemBounds = (0, 0, 2, 2)
        self.M.prune_overlaps(itemBounds)

        F2 = maximal_rectangles.FreeRectangle(2, 4, 2, 0)
        F3 = maximal_rectangles.FreeRectangle(4, 2, 0, 2)
        self.assertCountEqual(self.M.freerects, [F2, F3])
Ejemplo n.º 4
0
 def testRemoveRedundent(self):
     """
     F1 should be removed from freerects
     """
     F0 = maximal_rectangles.FreeRectangle(3, 3, 0, 0)
     F1 = maximal_rectangles.FreeRectangle(1, 1, 1, 1)
     F2 = maximal_rectangles.FreeRectangle(2, 1, 5, 1)
     F3 = maximal_rectangles.FreeRectangle(1, 1, 5, 1)
     self.M.freerects = [F0, F1, F2, F3]
     self.M.remove_redundent()
     self.assertCountEqual(self.M.freerects, [F0, F2])
Ejemplo n.º 5
0
    def testSplitRectangle(self):
        """
        Split a rectangle into two maximal rectangles
        """
        I = item.Item(2, 2)
        F = maximal_rectangles.FreeRectangle(4, 4, 0, 0)

        Ft = maximal_rectangles.FreeRectangle(4, 2, 0, 2)
        Fr = maximal_rectangles.FreeRectangle(2, 4, 2, 0)

        remainders = self.M.split_rectangle(F, I)
        self.assertCountEqual(remainders, [Ft, Fr])
Ejemplo n.º 6
0
    def testEncapsulates(self):
        """
        Returns a boolean if the second rectangle
        is fully encapsulated in the first
        """
        F0 = maximal_rectangles.FreeRectangle(3, 3, 0, 0)
        F1 = maximal_rectangles.FreeRectangle(1, 1, 1, 1)
        F2 = maximal_rectangles.FreeRectangle(2, 1, 5, 1)

        with self.subTest():
            self.assertTrue(self.M.encapsulates(F0, F1))
        with self.subTest():
            self.assertFalse(self.M.encapsulates(F0, F2))
Ejemplo n.º 7
0
 def testCheckIntersectionFalse(self):
     """
     Two items with no overlap
     """
     F0 = maximal_rectangles.FreeRectangle(4, 4, 0, 0)
     B = (5, 0, 9, 2)
     self.assertFalse(self.M.checkInstersection(F0, B))
Ejemplo n.º 8
0
 def testCheckIntersectionTrue(self):
     """
     Two items with partial overlap
     """
     F0 = maximal_rectangles.FreeRectangle(4, 4, 0, 0)
     B = (0, 0, 2, 2)
     self.assertTrue(self.M.checkInstersection(F0, B))
Ejemplo n.º 9
0
 def testInsert(self):
     """
     Item Insertion
     Rotation = False
     """
     I = item.Item(2, 2)
     F0 = maximal_rectangles.FreeRectangle(8, 4, 0, 0)
     self.assertTrue(self.M.insert(I, 'best_shortside'))
Ejemplo n.º 10
0
 def testBadInsert(self):
     """
     Item too Big
     Rotation = False
     """
     I = item.Item(9, 4)
     F0 = maximal_rectangles.FreeRectangle(8, 4, 0, 0)
     self.M.best_shortside(I)
     self.assertCountEqual(self.M.freerects, [F0])
Ejemplo n.º 11
0
    def testItemDoesntFitsRect(self):
        """
        Single Item Fits the FreeRectangle
        Rotation == False
        """
        I = item.Item(2, 4)
        F = maximal_rectangles.FreeRectangle(2, 3, 0, 0)

        self.assertFalse(self.M.item_fits_rect(I, F))
Ejemplo n.º 12
0
 def testTwoItemInsert(self):
     """
     Two Item insertion 
     Rotation = False
     """
     I = item.Item(2, 2)
     I2 = item.Item(4, 2)
     F0 = maximal_rectangles.FreeRectangle(6, 2, 2, 0)
     F1 = maximal_rectangles.FreeRectangle(4, 4, 4, 0)
     self.M.best_area(I)
     self.M.best_area(I2)
     with self.subTest():
         self.assertCountEqual(self.M.freerects, [F0, F1])
     with self.subTest():
         self.assertEqual(I.x, 0)
         self.assertEqual(I.y, 0)
     with self.subTest():
         self.assertEqual(I2.x, 0)
         self.assertEqual(I2.y, 2)
     with self.subTest():
         self.assertEqual(self.M.free_area, 20)
Ejemplo n.º 13
0
 def testTwoItemInsert(self):
     """
     Two Item insertion 
     Rotation = False
     """
     I = item.Item(1, 1)
     I2 = item.Item(2, 2)
     F0 = maximal_rectangles.FreeRectangle(5, 4, 3, 0)
     F1 = maximal_rectangles.FreeRectangle(1, 3, 0, 1)
     F2 = maximal_rectangles.FreeRectangle(8, 2, 0, 2)
     self.M.best_longside(I)
     self.M.best_longside(I2)
     with self.subTest():
         self.assertCountEqual(self.M.freerects, [F0, F1, F2])
     with self.subTest():
         self.assertEqual(I.x, 0)
         self.assertEqual(I.y, 0)
     with self.subTest():
         self.assertEqual(I2.x, 1)
         self.assertEqual(I2.y, 0)
     with self.subTest():
         self.assertEqual(self.M.free_area, 27)
Ejemplo n.º 14
0
    def testClipOverlap(self):
        """
        Returns maximal rectangle remainders of a rectangle
        fully overlapping a bounding box
        """
        F0 = maximal_rectangles.FreeRectangle(3, 3, 0, 0)
        F1 = maximal_rectangles.FreeRectangle(1, 1, 1, 1)
        B = (1, 1, 2, 2)

        overlap = self.M.findOverlap(F0, B)
        remainders = self.M.clipOverlap(F0, overlap)

        Fl = maximal_rectangles.FreeRectangle(1, 3, 0, 0)
        Fr = maximal_rectangles.FreeRectangle(1, 3, 2, 0)
        Fb = maximal_rectangles.FreeRectangle(3, 1, 0, 0)
        Ft = maximal_rectangles.FreeRectangle(3, 1, 0, 2)

        self.assertCountEqual(remainders, [Fl, Fr, Fb, Ft])