コード例 #1
0
ファイル: test_SegmentList.py プロジェクト: zongchangli/gat
    def testOverlap(self):
        '''test if number of segments intersection is correct.'''

        b = SegmentList(iter=((x, x + 10)
                              for x in range(5, 1000, 100)), normalize = True)
        self.assertEqual(self.a.intersectionWithSegments(b), len(b))
        self.assertEqual(b.intersectionWithSegments(self.a), len(b))

        # no intersection
        b = SegmentList(iter=((x, x + 10)
                              for x in range(10, 1000, 100)), normalize = True)
        self.assertEqual(self.a.intersectionWithSegments(b), 0)
        self.assertEqual(b.intersectionWithSegments(self.a), 0)

        # double the number of segments in b
        b = SegmentList(iter=[(x, x + 5) for x in range(0, 1000, 100)] +
                        [(x + 5, x + 10) for x in range(0, 1000, 100)],
                        normalize=True)
        self.assertEqual(self.a.intersectionWithSegments(b), 10)
        self.assertEqual(b.intersectionWithSegments(self.a), 20)
コード例 #2
0
ファイル: test_SegmentList.py プロジェクト: zongchangli/gat
class TestSegmentListIntersection(GatTest):

    def setUp(self):
        self.a = SegmentList(
            iter=((x, x + 10) for x in range(0, 1000, 100)), normalize=True)

    def testIntersectionFull(self):
        b = SegmentList(iter=[(0, 1000)], normalize=True)
        b.intersect(self.a)
        self.assertEqual(b.asList(), self.a.asList())

    def testIntersectionSelf(self):
        self.a.intersect(self.a)
        self.assertEqual(self.a.asList(), self.a.asList())

    def testIntersectionCopy(self):
        b = SegmentList(clone=self.a)
        b.intersect(self.a)
        self.assertEqual(b.asList(), self.a.asList())

    def testNoIntersection(self):
        b = SegmentList(iter=((x, x + 10)
                              for x in range(10, 1000, 100)), normalize = True)
        b.intersect(self.a)
        self.assertEqual(b.asList(), [])
        self.assertEqual(b.isEmpty, True)

    def testPartialIntersection(self):
        b = SegmentList(iter=((x, x + 10)
                              for x in range(5, 1000, 100)), normalize = True)
        b.intersect(self.a)
        self.assertEqual(len(b), len(self.a))
        self.assertEqual(b.sum(), self.a.sum() / 2)

    def testOverlap(self):
        '''test if number of segments intersection is correct.'''

        b = SegmentList(iter=((x, x + 10)
                              for x in range(5, 1000, 100)), normalize = True)
        self.assertEqual(self.a.intersectionWithSegments(b), len(b))
        self.assertEqual(b.intersectionWithSegments(self.a), len(b))

        # no intersection
        b = SegmentList(iter=((x, x + 10)
                              for x in range(10, 1000, 100)), normalize = True)
        self.assertEqual(self.a.intersectionWithSegments(b), 0)
        self.assertEqual(b.intersectionWithSegments(self.a), 0)

        # double the number of segments in b
        b = SegmentList(iter=[(x, x + 5) for x in range(0, 1000, 100)] +
                        [(x + 5, x + 10) for x in range(0, 1000, 100)],
                        normalize=True)
        self.assertEqual(self.a.intersectionWithSegments(b), 10)
        self.assertEqual(b.intersectionWithSegments(self.a), 20)

    def testFilter(self):

        b = SegmentList(iter=((x, x + 5)
                              for x in range(500, 2000, 100)), normalize=True)
        b.filter(self.a)
        self.assertEqual(b.asList(), [
            (500, 505), (600, 605), (700, 705), (800, 805),
            (900, 905)])

        b = SegmentList(iter=((0, 56), ))
        c = SegmentList(iter=[(0, 50), (75, 125)])
        b.filter(c)
        self.assertEqual(b.asList(), [(0, 56)])

        b = SegmentList(iter=((0, 56), ))
        c = SegmentList(iter=[(0, 10)])
        b.filter(c)
        self.assertEqual(b.asList(), [(0, 56)])