@Override public DocInitialization asOperation() { return getDocument().asOperation(); }
/** * @param docHandler * @param annotationSetListener * @return a self-contained document context suitable for testing */ public static TestDocumentContext<Node, Element, Text> createTestPojoContext( final String initialInnerXml, final DocumentHandler<Node, Element, Text> docHandler, final AnnotationSetListener<Object> annotationSetListener, final MiscListener miscListener, final DocumentSchema schemaConstraints) { return createTestPojoContext( // FIXME(ohler): it's a bit weird that we parse into an IndexedDocument just to // get its asOperation(). DocProviders.POJO.parse(initialInnerXml).asOperation(), docHandler, annotationSetListener, miscListener, schemaConstraints); }
@Override public DocInitialization asOperation() { DocInitializationBuffer builder = new DocInitializationBuffer(); document.asOperation().apply(builder); return builder.finish(); }
@Override public ObservablePluggableMutableDocument create( String tagName, Map<String, String> attributes) { // FIXME(ohler): this is inefficient. return build(DocProviders.POJO.create(tagName, attributes).asOperation()); }
/** * Check the content of both indexed documents is as expected * @param expectedContent */ protected void assertResult(String expectedContent) { String result = DocOpUtil.toXmlString(indexed.asOperation()); // Check the paste happened correctly assertEquals(expectedContent, result); }
/** * Check the content of both indexed documents is as expected * @param expectedContent */ protected void assertResult(String expectedContent) { String result = DocOpUtil.toXmlString(indexed.asOperation()); // Check the paste happened correctly assertEquals(expectedContent, result); }
/** * Check the content of both indexed documents is as expected * @param expectedContent */ protected void assertOperationResult(String expectedContent) { String result = DocOpUtil.toXmlString(indexed.asOperation()); // Check the ops have been applied correctly assertEquals(expectedContent, result); }
@Override public ObservablePluggableMutableDocument parse(String text) { // FIXME(ohler): this is inefficient. return build(DocProviders.POJO.parse(text).asOperation()); }
/** * Check the content of both indexed documents is as expected * @param expectedContent */ protected void assertOperationResult(String expectedContent) { String result = DocOpUtil.toXmlString(indexed.asOperation()); // Check the ops have been applied correctly assertEquals(expectedContent, result); }
/** * Creates an observable mutable document with some schema, content, and sink. */ public static ObservableDocument createDocument(DocumentSchema schema, String initialContent, SilentOperationSink<? super DocOp> sink) { Preconditions.checkNotNull(sink, "Sink can't be null"); DocInitialization init = DocProviders.POJO.parse(initialContent).asOperation(); ObservablePluggableMutableDocument doc = new ObservablePluggableMutableDocument(schema, init); doc.init(sink); return doc; }
private void setupDoc() { ObservablePluggableMutableDocument doc = new ObservablePluggableMutableDocument( DocumentSchema.NO_SCHEMA_CONSTRAINTS, DocProviders.POJO.parse("").asOperation()); doc.init(SilentOperationSink.VOID); listener = mock(Listener.class); states = GadgetStateCollection.create(DefaultDocumentEventRouter.create(doc), doc.getDocumentElement(), listener); } }
private void setupDoc() { ObservablePluggableMutableDocument doc = new ObservablePluggableMutableDocument( DocumentSchema.NO_SCHEMA_CONSTRAINTS, DocProviders.POJO.parse("").asOperation()); doc.init(SilentOperationSink.VOID); listener = mock(Listener.class); states = GadgetStateCollection.create(DefaultDocumentEventRouter.create(doc), doc.getDocumentElement(), listener); } }
public void testOrdering() { String initialContent = "abc"; TestDocumentContext<Node, Element, Text> test = ContextProviders.createTestPojoContext( DocProviders.POJO.parse(initialContent).asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); RangeTracker tracker = new RangeTracker(test.localAnnotations()); tracker.trackRange(new FocusedRange(2, 1)); assertEquals(new Range(1, 2), tracker.getRange()); assertEquals(new FocusedRange(2, 1), tracker.getFocusedRange()); } }
public void testOrdering() { String initialContent = "abc"; TestDocumentContext<Node, Element, Text> test = ContextProviders.createTestPojoContext( DocProviders.POJO.parse(initialContent).asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); RangeTracker tracker = new RangeTracker(test.localAnnotations()); tracker.trackRange(new FocusedRange(2, 1)); assertEquals(new Range(1, 2), tracker.getRange()); assertEquals(new FocusedRange(2, 1), tracker.getFocusedRange()); } }
/** Check that a collapsed range at 0 behaves correctly. */ public void testCollapsedStartRange() { String initialContent = "abc"; TestDocumentContext<Node, Element, Text> test = ContextProviders.createTestPojoContext( DocProviders.POJO.parse(initialContent).asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); MutableDocument<Node, Element, Text> doc = test.document(); RangeTracker tracker = new RangeTracker(test.localAnnotations()); // collapsed at the start, through mutation: tracker.trackRange(new Range(0, 0)); assertEquals(new Range(0, 0), tracker.getRange()); doc.insertText(doc.locate(3), "a"); assertEquals(new Range(0, 0), tracker.getRange()); doc.insertText(doc.locate(0), "x"); assertEquals(new Range(1, 1), tracker.getRange()); }
/** Check that a collapsed range at 0 behaves correctly. */ public void testCollapsedStartRange() { String initialContent = "abc"; TestDocumentContext<Node, Element, Text> test = ContextProviders.createTestPojoContext( DocProviders.POJO.parse(initialContent).asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); MutableDocument<Node, Element, Text> doc = test.document(); RangeTracker tracker = new RangeTracker(test.localAnnotations()); // collapsed at the start, through mutation: tracker.trackRange(new Range(0, 0)); assertEquals(new Range(0, 0), tracker.getRange()); doc.insertText(doc.locate(3), "a"); assertEquals(new Range(0, 0), tracker.getRange()); doc.insertText(doc.locate(0), "x"); assertEquals(new Range(1, 1), tracker.getRange()); }
/** Check that a collapsed range at doc.size() behaves correctly. */ public void testCollapsedEndRange() { String initialContent = "abc"; TestDocumentContext<Node, Element, Text> test = ContextProviders.createTestPojoContext( DocProviders.POJO.parse(initialContent).asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); MutableDocument<Node, Element, Text> doc = test.document(); RangeTracker tracker = new RangeTracker(test.localAnnotations()); int end = doc.size(); // collapsed at the start, through mutation: tracker.trackRange(new Range(end, end)); assertEquals(new Range(end, end), tracker.getRange()); doc.insertText(doc.locate(3), "a"); assertEquals(new Range(end + 1, end + 1), tracker.getRange()); doc.insertText(doc.locate(doc.size()), "x"); assertEquals(new Range(end + 2, end + 2), tracker.getRange()); }
/** Check that a collapsed range at doc.size() behaves correctly. */ public void testCollapsedEndRange() { String initialContent = "abc"; TestDocumentContext<Node, Element, Text> test = ContextProviders.createTestPojoContext( DocProviders.POJO.parse(initialContent).asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); MutableDocument<Node, Element, Text> doc = test.document(); RangeTracker tracker = new RangeTracker(test.localAnnotations()); int end = doc.size(); // collapsed at the start, through mutation: tracker.trackRange(new Range(end, end)); assertEquals(new Range(end, end), tracker.getRange()); doc.insertText(doc.locate(3), "a"); assertEquals(new Range(end + 1, end + 1), tracker.getRange()); doc.insertText(doc.locate(doc.size()), "x"); assertEquals(new Range(end + 2, end + 2), tracker.getRange()); }
/** Check that a collapsed range in the middle behaves correctly. */ public void testCollapsedRange() { String initialContent = "abc"; TestDocumentContext<Node, Element, Text> test = ContextProviders.createTestPojoContext( DocProviders.POJO.parse(initialContent).asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); MutableDocument<Node, Element, Text> doc = test.document(); RangeTracker tracker = new RangeTracker(test.localAnnotations()); // collapsed at the start, through mutation: tracker.trackRange(new Range(2, 2)); assertEquals(new Range(2, 2), tracker.getRange()); doc.insertText(doc.locate(0), "a"); assertEquals(new Range(3, 3), tracker.getRange()); doc.insertText(doc.locate(4), "b"); assertEquals(new Range(3, 3), tracker.getRange()); doc.insertText(doc.locate(3), "c"); assertEquals(new Range(4, 4), tracker.getRange()); }
public void testSplitTextNeverReturnsSibling() { TestDocumentContext<Node, Element, Text> cxt = ContextProviders.createTestPojoContext( DocProviders.POJO.parse("ab").asOperation(), null, null, null, DocumentSchema.NO_SCHEMA_CONSTRAINTS); TextNodeOrganiser<Text> organiser = cxt.textNodeOrganiser(); MutableDocument<Node, Element, Text> doc = cxt.document(); Text first = (Text) doc.getFirstChild(doc.getDocumentElement()); Text text = organiser.splitText(first, 1); LocalDocument<Node, Element, Text> local = cxt.annotatableContent(); Element tr = local.transparentCreate("l", Attributes.EMPTY_MAP, doc.getDocumentElement(), text); local.transparentMove(tr, text, null, null); assertNull(cxt.getIndexedDoc().splitText(first, 1)); assertNull(organiser.splitText(first, 1)); assertSame(first, organiser.splitText(first, 0)); assertSame(first, organiser.splitText(first, 0)); assertEquals("a<l>b</l>", XmlStringBuilder.innerXml(local).toString()); assertEquals("ab", XmlStringBuilder.innerXml(doc).toString()); }