Ejemplo n.º 1
0
 def testOneItemInsert(self):
     """
     Single Item Fits
     """
     I = item.Item(2, 2)
     self.S.insert(I)
     S1 = skyline.SkylineSegment(0, 2, 2)
     S2 = skyline.SkylineSegment(2, 0, 6)
     self.assertCountEqual(self.S.skyline, [S1, S2])
Ejemplo n.º 2
0
    def testClipSegmentExtendsRight(self):
        """
        Segmented hangs over left
        """
        I = item.Item(4, 1, CornerPoint=[0, 0])
        S = skyline.SkylineSegment(2, 0, 4)
        res = self.S._clip_segment(S, I)

        self.assertEqual(res, [skyline.SkylineSegment(4, 0, 2)])
Ejemplo n.º 3
0
    def testClipSegmentExtendsBoth(self):
        """
        Segmented hangs over left
        """
        I = item.Item(2, 1, CornerPoint=[2,0])
        S = skyline.SkylineSegment(0, 0, 6) 
        res = self.S.clip_segment(S, I)

        self.assertCountEqual(res, [skyline.SkylineSegment(0, 0, 2), skyline.SkylineSegment(4,0,2)])
Ejemplo n.º 4
0
 def testCheckFitTrue(self):
     """
     Assert item does fit above line segment
     """
     I = item.Item(2, 2, CornerPoint=[0, 0])
     S1 = skyline.SkylineSegment(0, 1, 2)
     S2 = skyline.SkylineSegment(2, 0, 6)
     self.S.skyline.pop()
     self.S.skyline.update([S1, S2])
     self.assertEqual(self.S._check_fit(I.width, I.height, 0), (True, 1))
Ejemplo n.º 5
0
 def testCheckFitFalse(self):
     """
     Assert item does fit above line segment
     """
     I = item.Item(2, 2, CornerPoint=[0,0])
     S1 = skyline.SkylineSegment(0, 0, 1)
     S2 = skyline.SkylineSegment(1, 3, 7)
     self.S.skyline.pop()
     self.S.skyline.extend([S1, S2])
     self.assertEqual(self.S.check_fit(I.width, I.height, 1), (False, None))
Ejemplo n.º 6
0
 def testMergeSegments(self):
     """
     Two segment merge
     """
     S1 = skyline.SkylineSegment(0, 0, 2)
     S2 = skyline.SkylineSegment(2, 0, 6)
     S3 = skyline.SkylineSegment(0, 0, 8)
     self.S.skyline.pop()
     self.S.skyline.update([S1, S2])
     self.S._merge_segments()
     self.assertEqual(self.S.skyline, [S3])
Ejemplo n.º 7
0
    def testUpdateSegment(self):
        """
        Clip initial (0,0,8) segment
        with a (2,2) item at (0,0)
        """
        I = item.Item(2, 2, CornerPoint=[0, 0])
        S1 = skyline.SkylineSegment(0, 2, 2)
        S2 = skyline.SkylineSegment(2, 0, 6)

        res = self.S._update_segment(self.S.skyline[0], 0, I)
        self.assertCountEqual(res, [S1, S2])
Ejemplo n.º 8
0
 def testMergeThreeSegments(self):
     """
     Three segment merge
     """
     S1 = skyline.SkylineSegment(0, 0, 2)
     S2 = skyline.SkylineSegment(2, 0, 4)
     S3 = skyline.SkylineSegment(6, 0, 2)
     S4 = skyline.SkylineSegment(0, 0, 8)
     self.S.skyline.pop()
     self.S.skyline.update([S1, S2, S3])
     self.S._merge_segments()
     self.assertEqual(self.S.skyline, [S4])
Ejemplo n.º 9
0
    def testClipSegmentFullOverlap(self):
        """
        Segmented fully adjacent to item
        """
        I = item.Item(4, 1, CornerPoint=[0, 0])
        S = skyline.SkylineSegment(0, 0, 4)
        res = self.S._clip_segment(S, I)

        self.assertEqual(res, [])
Ejemplo n.º 10
0
    def testMultiItemInsert(self):
        """
        5 item insertion
        """
        I0 = item.Item(2, 2)
        I1 = item.Item(2, 1)
        I2 = item.Item(3, 3)
        I3 = item.Item(3, 2)
        I4 = item.Item(4, 2)
        self.S.insert(I0)
        self.S.insert(I1)
        self.S.insert(I2)
        self.S.insert(I3)
        self.S.insert(I4)

        S0 = skyline.SkylineSegment(0, 2, 2)
        S1 = skyline.SkylineSegment(2, 4, 2)
        with self.subTest():
            self.assertCountEqual(self.S.skyline, [S1, S0])
        with self.subTest():
            self.assertEqual(self.S.free_area, 11)
Ejemplo n.º 11
0
 def testMultiItemInsert(self):
     """
     5 item insertion to match Figure 7 from
     Jukka's article.
     """
     I0 = item.Item(2, 2)
     I1 = item.Item(2, 1)
     I2 = item.Item(3, 3)
     I3 = item.Item(3, 2)
     I4 = item.Item(4, 2)
     self.S.insert(I0)
     self.S.insert(I1)
     self.S.insert(I2)
     self.S.insert(I3)
     self.S.insert(I4)
     S0 = skyline.SkylineSegment(0, 4, 3)
     S1 = skyline.SkylineSegment(7, 0, 1)
     with self.subTest():
         self.assertCountEqual(self.S.skyline, [S1, S0])
     with self.subTest():
         self.assertEqual(self.S.free_area, 11)