from sourcing.span import Span from sourcing.edit import apply_edits import pytest def test_xanadoc_apply_delete_start(): spans = [Span('http://test/test', 0, 11)] edits = [{'op': 'delete', 'start': 0, 'old': 'aaa'}] spans = apply_edits(spans, edits) assert spans == [Span('http://test/test', 3, 8)] def test_xanadoc_apply_delete_start_offset(): offset = 14 spans = [Span('http://test/test', offset, 11)] edits = [{'op': 'delete', 'start': 0, 'old': 'aaa'}] spans = apply_edits(spans, edits) assert spans == [Span('http://test/test', offset + 3, 8)] def test_xanadoc_apply_delete_middle(): spans = [Span('http://test/test', 0, 11)] edits = [{'op': 'delete', 'start': 4, 'old': 'bbb'}] spans = apply_edits(spans, edits) assert spans == [Span('http://test/test', 0, 4), Span('http://test/test', 7, 4)] def test_xanadoc_apply_delete_end(): spans = [Span('http://test/test', 0, 11)] edits = [{'op': 'delete', 'start': 8, 'old': 'ccc'}] spans = apply_edits(spans, edits) assert spans == [Span('http://test/test', 0, 8)] def test_xanadoc_apply_delete_all(): spans = [Span('http://test/test', 0, 3)] edits = [{'op': 'delete', 'start': 0, 'old': 'aaa'}] spans = apply_edits(spans, edits) assert spans == [] def test_xanadoc_apply_insert_start(): existing_span = Span('http://test/test', 0, 8) new_span = Span('http://test/new_span', 10, 4) edits = [{'op': 'insert', 'start': 0, 'span': new_span}] spans = apply_edits([existing_span], edits) assert spans == [new_span, existing_span] def test_xanadoc_apply_insert_end(): existing_span = Span('http://test/test', 0, 8) new_span = Span('http://test/new_span', 10, 4) edits = [{'op': 'insert', 'start': 8, 'span': new_span}] spans = apply_edits([existing_span], edits) assert spans == [existing_span, new_span]