Beispiel #1
0
 def _combine_spans(self, y, spans):
     built = []
     test_prev = str(self._regions)
     delta = span_list_delta.get_delta(spans, self._regions)
     if self._verbose and delta.keys() and delta.keys() != ['same']:
         print('')
         print('* Y=%d Spans: %r, Regions: %r' % (y, spans, self._regions))
         print('* Zones: %r' % ([r.zones for r in self._regions]))
         print('* Delta: %r' % (delta, ))
     delta_include = delta.get('include')
     delta_exclude = delta.get('exclude')
     delta_same = delta.get('same')
     delta_merge = delta.get('merge')
     delta_split = delta.get('split')
     delta_diff = delta.get('diff')
     if delta_include:
         self._insert_spans_as_regions(y, delta_include)
     if delta_exclude:
         built += self._exclude_regions_and_make_zones(y, delta_exclude)
     if delta_same:
         pass
     if delta_merge:
         built += self._merge_region_changes(
             y,
             delta_merge,
         )
     if delta_split:
         raise NotImplementedError('TODO: split %r' % delta_split)
     if delta_diff:
         raise NotImplementedError('TODO: diff %r' % delta_diff)
     self._add_zones_to_empty_regions(y)
     built = self._fixup_edges(built)
     if self._verbose and len(built):
         print('> Built: %r' % built)
     return built
Beispiel #2
0
 def test_overlap_on_right(self):
   older = self.make_spans([(7,9)])
   newer = self.make_spans([(8,11)])
   delta = span_list_delta.get_delta(newer, older)
   self.assertEqual(delta['merge'], [{'new': [Span(8,11)],
                                      'old': [Span(7,9)]}])
   self.assertNull(delta, ['include', 'exclude', 'same', 'split', 'diff'])
 def _combine_spans(self, y, spans):
   built = []
   test_prev = str(self._regions)
   delta = span_list_delta.get_delta(spans, self._regions)
   if self._verbose and delta.keys() and delta.keys() != ['same']:
     print('')
     print('* Y=%d Spans: %r, Regions: %r' % (y, spans, self._regions))
     print('* Zones: %r' % ([r.zones for r in self._regions]))
     print('* Delta: %r' % (delta,))
   delta_include = delta.get('include')
   delta_exclude = delta.get('exclude')
   delta_same = delta.get('same')
   delta_merge = delta.get('merge')
   delta_split = delta.get('split')
   delta_diff = delta.get('diff')
   if delta_include:
     self._insert_spans_as_regions(y, delta_include)
   if delta_exclude:
     built += self._exclude_regions_and_make_zones(y, delta_exclude)
   if delta_same:
     pass
   if delta_merge:
     built += self._merge_region_changes(y, delta_merge, )
   if delta_split:
     raise NotImplementedError('TODO: split %r' % delta_split)
   if delta_diff:
     raise NotImplementedError('TODO: diff %r' % delta_diff)
   self._add_zones_to_empty_regions(y)
   built = self._fixup_edges(built)
   if self._verbose and len(built):
     print('> Built: %r' % built)
   return built
Beispiel #4
0
 def test_exclude_between(self):
   older = self.make_spans([(5,6)])
   newer = self.make_spans([(1,4),(7,9)])
   delta = span_list_delta.get_delta(newer, older)
   self.assertEqual(delta['include'], [Span(1,4), Span(7,9)])
   self.assertEqual(delta['exclude'], [Span(5,6)])
   self.assertNull(delta, ['same', 'merge', 'split', 'diff'])
Beispiel #5
0
 def test_change_middle_others_same(self):
   older = self.make_spans([(54,62),(103,111),(144,160)])
   newer = self.make_spans([(54,62),(103,117),(144,160)])
   delta = span_list_delta.get_delta(newer, older)
   self.assertEqual(delta['merge'], [{'new': [Span(103,117)],
                                      'old': [Span(103,111)]}])
   self.assertEqual(delta['same'], [Span(54,62), Span(144,160)])
   self.assertNull(delta, ['include', 'exclude', 'split', 'diff'])
Beispiel #6
0
 def test_two_merges(self):
   older = self.make_spans([(61,69),(76,84),(92,100),(107,115)])
   newer = self.make_spans([(64,84),(92,112)])
   delta = span_list_delta.get_delta(newer, older)
   self.assertEqual(delta['merge'], [{'new': [Span(64,84)],
                                      'old': [Span(61,69),Span(76,84)]},
                                     {'new': [Span(92,112)],
                                      'old': [Span(92,100),Span(107,115)]}])
   self.assertNull(delta, ['include', 'exclude', 'same', 'split', 'diff'])
Beispiel #7
0
 def test_overlap_multiple_old(self):
   older = self.make_spans([(1,4),(5,8),(10,12),(14,19),(24,26)])
   newer = self.make_spans([(7,16)])
   delta = span_list_delta.get_delta(newer, older)
   self.assertEqual(delta['merge'], [{'new': [Span(7,16)],
                                      'old':
                                     [Span(5,8), Span(10,12), Span(14,19)]}])
   self.assertEqual(delta['exclude'], [Span(1,4), Span(24,26)])
   self.assertNull(delta, ['include', 'same', 'split', 'diff'])
Beispiel #8
0
 def test_same_one(self):
   older = self.make_spans([(1,4)])
   newer = self.make_spans([(1,4)])
   delta = span_list_delta.get_delta(newer, older)
   self.assertEqual(delta['same'],    [Span(1,4)])
   self.assertNull(delta, ['include', 'exclude', 'merge', 'split', 'diff'])