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
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
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'])
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'])
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'])
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'])
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'])