Added tests for the calculation of positions on content modifications.

Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/dom/ContentTest.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/dom/ContentTest.java
index a1e1166..af8f5ee 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/dom/ContentTest.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/dom/ContentTest.java
@@ -116,4 +116,54 @@
 		content.insertText(6, "Cut Out");

 		assertEquals("Hello Cut Out World", content.getText());

 	}

+

+	@Test

+	public void shouldIncreasePositionsOnInsertText() throws Exception {

+		content.insertText(0, "Hello World");

+		final Position helloPosition = content.createPosition(0);

+		final Position worldPosition = content.createPosition(6);

+		assertEquals("Hello", content.getText(helloPosition.getOffset(), 5));

+		assertEquals("World", content.getText(worldPosition.getOffset(), 5));

+

+		content.insertText(6, "New ");

+		assertEquals(0, helloPosition.getOffset());

+		assertEquals(10, worldPosition.getOffset());

+		assertEquals("Hello", content.getText(helloPosition.getOffset(), 5));

+		assertEquals("World", content.getText(worldPosition.getOffset(), 5));

+	}

+

+	@Test

+	public void shouldIncreasePositionsOnInsertElementMarker() throws Exception {

+		content.insertText(0, "Hello World");

+		final Position worldStartPosition = content.createPosition(6);

+		final Position worldEndPosition = content.createPosition(10);

+		assertEquals("d", content.getText(worldEndPosition.getOffset(), 1));

+		assertEquals("World", content.getText(worldStartPosition.getOffset(), worldEndPosition.getOffset() - worldStartPosition.getOffset() + 1));

+

+		content.insertElementMarker(11);

+		content.insertElementMarker(6);

+		assertEquals(7, worldStartPosition.getOffset());

+		assertEquals(11, worldEndPosition.getOffset());

+		assertEquals("d", content.getText(worldEndPosition.getOffset(), 1));

+		assertEquals("World", content.getText(worldStartPosition.getOffset(), worldEndPosition.getOffset() - worldStartPosition.getOffset() + 1));

+		assertTrue(content.isElementMarker(worldStartPosition.getOffset() - 1));

+		assertTrue(content.isElementMarker(worldEndPosition.getOffset() + 1));

+	}

+

+	@Test

+	public void shouldDecreasePositionOnRemove() throws Exception {

+		content.insertText(0, "Hello New World");

+		content.insertElementMarker(8);

+		content.insertElementMarker(6);

+		final Position worldStartPosition = content.createPosition(12);

+		final Position worldEndPosition = content.createPosition(16);

+		assertEquals("d", content.getText(worldEndPosition.getOffset(), 1));

+		assertEquals("World", content.getText(worldStartPosition.getOffset(), worldEndPosition.getOffset() - worldStartPosition.getOffset() + 1));

+

+		content.remove(6, 6);

+		assertEquals("d", content.getText(worldEndPosition.getOffset(), 1));

+		assertEquals("World", content.getText(worldStartPosition.getOffset(), worldEndPosition.getOffset() - worldStartPosition.getOffset() + 1));

+		assertEquals(6, worldStartPosition.getOffset());

+		assertEquals(10, worldEndPosition.getOffset());

+	}

 }