public void testShift() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "0123456789"); api.insert(4, new Image("id1", "caption")); api.insert(8, new Image("id1", "caption")); assertInSync(document, api); api.delete(2, 3); List<ElementInfo> elements = api.getElements(); assertEquals(3, elements.size()); api.delete(elements.get(1).apiPosition, elements.get(0).apiPosition + 1); assertInSync(document, api); api.delete(api.getElements().get(1).apiPosition, elements.get(0).apiPosition + 1); assertInSync(document, api); }
public void testShift() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "0123456789"); api.insert(4, new Image("id1", "caption")); api.insert(8, new Image("id1", "caption")); assertInSync(document, api); api.delete(2, 3); List<ElementInfo> elements = api.getElements(); assertEquals(3, elements.size()); api.delete(elements.get(1).apiPosition, elements.get(0).apiPosition + 1); assertInSync(document, api); api.delete(api.getElements().get(1).apiPosition, elements.get(0).apiPosition + 1); assertInSync(document, api); }
/** * Deletes ranges of elements from a document as specified by the iterator. * * @param operation the operation to execute. * @param view the view of the document. * @param hitIterator iterates over the ranges of elements to delete. * @throws InvalidRequestException if the specified range was invalid. */ private void delete(OperationRequest operation, ApiView view, DocumentHitIterator hitIterator) throws InvalidRequestException { Range range = hitIterator.next(); while (range != null) { int start = range.getStart(); int end = range.getEnd(); if (start == 0) { // Can't delete the first new line. start = 1; } if (start >= end) { throw new InvalidRequestException( "Invalid range specified, " + start + ">=" + end, operation); } // Delete using the view. view.delete(start, end); // Shift the iterator to match the updated document. hitIterator.shift(start, end - start); range = hitIterator.next(); } }
view.delete(replaceAt + numInserted, range.getEnd() + numInserted);
public void testDeleteString() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "helllo"); api.delete(3, 4); assertEquals("\nhello", api.apiContents()); assertInSync(document, api); api.delete(0, 2); assertEquals("ello", api.apiContents()); assertInSync(document, api); }
public void testDeleteString() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "helllo"); api.delete(3, 4); assertEquals("\nhello", api.apiContents()); assertInSync(document, api); api.delete(0, 2); assertEquals("ello", api.apiContents()); assertInSync(document, api); }
public void testStringReplace() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "22 a b 22 c d 22 e f"); while (true) { String contents = api.apiContents(); int p = contents.indexOf("22"); if (p < 0) { break; } api.insert(p, "q"); assertInSync(document, api); api.delete(p + 1, p + 3); assertInSync(document, api); } assertEquals("\nq a b q c d q e f", api.apiContents()); assertInSync(document, api); }
public void testTextMatcherDeletingTheFirstChar() { ApiView apiView = createApiViewFromXml("1 1 1"); DocumentHitIterator it = new DocumentHitIterator.TextMatcher(apiView, "1", -1); for (int i = 0; i < 3; i++) { Range r = it.next(); assertEquals(i + 1, r.getStart()); apiView.delete(1, 2); it.shift(1, -1); } assertNull(it.next()); }
public void testTextMatcherDeletingTheFirstChar() { ApiView apiView = createApiViewFromXml("1 1 1"); DocumentHitIterator it = new DocumentHitIterator.TextMatcher(apiView, "1", -1); for (int i = 0; i < 3; i++) { Range r = it.next(); assertEquals(i + 1, r.getStart()); apiView.delete(1, 2); it.shift(1, -1); } assertNull(it.next()); }
public void testInsertBeforeElementThenDeleteElement() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "0123456789"); api.insert(4, new Image("id1", "caption")); api.insert(4, "4"); assertInSync(document, api); api.delete(5, 6); assertEquals(1, api.getElements().size()); assertEquals("\n01243456789", api.apiContents()); assertInSync(document, api); }
public void testInsertBeforeElementThenDeleteElement() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "0123456789"); api.insert(4, new Image("id1", "caption")); api.insert(4, "4"); assertInSync(document, api); api.delete(5, 6); assertEquals(1, api.getElements().size()); assertEquals("\n01243456789", api.apiContents()); assertInSync(document, api); }
public void testStringReplace() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "22 a b 22 c d 22 e f"); while (true) { String contents = api.apiContents(); int p = contents.indexOf("22"); if (p < 0) { break; } api.insert(p, "q"); assertInSync(document, api); api.delete(p + 1, p + 3); assertInSync(document, api); } assertEquals("\nq a b q c d q e f", api.apiContents()); assertInSync(document, api); }
public void testInsertAndDeleteElementInString() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "hello"); api.insert(3, new Image("id", "caption")); assertEquals("\nhe llo", api.apiContents()); assertInSync(document, api); api.delete(3, 5); assertEquals("\nhelo", api.apiContents()); assertInSync(document, api); }
public void testInsertAndDeleteElementInString() { Document document = BasicFactories.documentProvider().parse(LineContainers.debugContainerWrap("")); ApiView api = new ApiView(document, mock(Wavelet.class)); api.insert(1, "hello"); api.insert(3, new Image("id", "caption")); assertEquals("\nhe llo", api.apiContents()); assertInSync(document, api); api.delete(3, 5); assertEquals("\nhelo", api.apiContents()); assertInSync(document, api); }