示例#1
0
    def test_edge(self):
        e = geometry.Edge(DIR_DOWN, 15, 4, 15, 32)
        self.assertEqual('%s' % e, '#<Edge facing=down y=15 x0=4 x1=32>')
        self.assertEqual(e.length, 28)
        self.assertEqual('%s' % e.get_endpoints(),
                         '[#<Point y=15 x=4>, #<Point y=15 x=32>]')
        self.assertEqual('%s' % e.dim_to_range(), '#<Range p0=4 p1=32>')

        f = geometry.Edge(DIR_RIGHT, 29, 58, 45, 58)
        self.assertEqual('%s' % f, '#<Edge facing=right y0=29 y1=45 x=58>')
        self.assertEqual(f.length, 16)
        self.assertEqual('%s' % f.get_endpoints(),
                         '[#<Point y=29 x=58>, #<Point y=45 x=58>]')
        self.assertEqual('%s' % f.dim_to_range(), '#<Range p0=29 p1=45>')

        self.assertEqual('%s' % e.calc_uncovered(),
                         '#<Edge facing=down y=15 x0=4 x1=32>')
        self.assertFalse(e.done)

        e.mark_done(num_range.NumRange(4, 10))
        self.assertEqual('%s' % e.calc_uncovered(),
                         '#<Edge facing=down y=15 x0=10 x1=32>')
        self.assertFalse(e.done)

        e.mark_done(num_range.NumRange(25, 32))
        self.assertEqual('%s' % e.calc_uncovered(),
                         '#<Edge facing=down y=15 x0=10 x1=25>')
        self.assertFalse(e.done)

        e.mark_done(num_range.NumRange(10, 25))
        self.assertEqual('%s' % e.calc_uncovered(), 'None')
        self.assertTrue(e.done)
示例#2
0
 def test_intersect_outside_same_left(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(4, 23)
     self.assertEqual(a.intersect(b), num_range.NumRange(4, 9))
示例#3
0
 def test_intersect_inside_same_right(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(6, 9)
     self.assertEqual(a.intersect(b), num_range.NumRange(6, 9))
示例#4
0
 def test_intersect_one_point_right(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(9, 23)
     self.assertEqual(a.intersect(b), 9)
示例#5
0
 def test_multi_range_combine_many(self):
     a = num_range.MultiRange([[5, 10], [20, 30], [40, 50], [60, 70]])
     b = num_range.NumRange(25, 64)
     self.assertEqual(a.add(b), num_range.MultiRange([[5, 10], [20, 70]]))
示例#6
0
 def x_to_range(self):
   return num_range.NumRange(self.x0, self.x1)
示例#7
0
 def test_multi_range_before_first(self):
     a = num_range.MultiRange([[5, 10], [20, 30]])
     b = num_range.NumRange(2, 3)
     self.assertEqual(a.add(b),
                      num_range.MultiRange([[2, 3], [5, 10], [20, 30]]))
示例#8
0
 def test_multi_range_combine(self):
     a = num_range.MultiRange([[5, 10], [20, 30]])
     b = num_range.NumRange(8, 16)
     self.assertEqual(a.add(b), num_range.MultiRange([[5, 16], [20, 30]]))
示例#9
0
 def test_intersect_within(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(1, 23)
     self.assertEqual(a.intersect(b), num_range.NumRange(4, 9))
示例#10
0
 def test_multi_range_complment_outside(self):
     a = num_range.MultiRange([[5, 10]])
     b = num_range.NumRange(2, 20)
     self.assertEqual(a.subtract_from(b),
                      num_range.MultiRange([[2, 5], [10, 20]]))
示例#11
0
 def test_multi_range_complment_middle(self):
     a = num_range.MultiRange([[5, 10], [20, 30]])
     b = num_range.NumRange(5, 30)
     self.assertEqual(a.subtract_from(b), num_range.MultiRange([[10, 20]]))
示例#12
0
 def test_intersect_fully_left(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(20, 23)
     self.assertEqual(a.intersect(b), None)
示例#13
0
 def test_multi_range_complment_right(self):
     a = num_range.MultiRange([[5, 10]])
     b = num_range.NumRange(7, 20)
     self.assertEqual(a.subtract_from(b), num_range.MultiRange([[10, 20]]))
示例#14
0
 def test_multi_range_complment_left(self):
     a = num_range.MultiRange([[5, 10]])
     b = num_range.NumRange(2, 7)
     self.assertEqual(a.subtract_from(b), num_range.MultiRange([[2, 5]]))
示例#15
0
 def test_construct(self):
     r = num_range.NumRange(4, 9)
     self.assertEqual(r.p0, 4)
     self.assertEqual(r.p1, 9)
示例#16
0
 def test_intersect_exactly_same(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(4, 9)
     self.assertEqual(a.intersect(b), num_range.NumRange(4, 9))
示例#17
0
 def test_intersect_contains(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(5, 7)
     self.assertEqual(a.intersect(b), num_range.NumRange(5, 7))
示例#18
0
 def test_multi_range_between(self):
     a = num_range.MultiRange([[5, 10], [20, 30]])
     b = num_range.NumRange(13, 16)
     self.assertEqual(a.add(b),
                      num_range.MultiRange([[5, 10], [13, 16], [20, 30]]))
示例#19
0
 def test_intersect_right_side(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(5, 23)
     self.assertEqual(a.intersect(b), num_range.NumRange(5, 9))
示例#20
0
 def test_multi_range_after_last(self):
     a = num_range.MultiRange([[5, 10], [20, 30]])
     b = num_range.NumRange(60, 66)
     self.assertEqual(a.add(b),
                      num_range.MultiRange([[5, 10], [20, 30], [60, 66]]))
示例#21
0
 def test_intersect_fully_right(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(1, 2)
     self.assertEqual(a.intersect(b), None)
示例#22
0
 def y_to_range(self):
   return num_range.NumRange(self.y0, self.y1)
示例#23
0
 def test_intersect_one_point_left(self):
     a = num_range.NumRange(4, 9)
     b = num_range.NumRange(1, 4)
     self.assertEqual(a.intersect(b), 4)