diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/FakeCursor.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/FakeCursor.java
new file mode 100644
index 0000000..9060e9f
--- /dev/null
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/FakeCursor.java
@@ -0,0 +1,95 @@
+package org.eclipse.vex.core.internal.widget;
+
+import java.util.LinkedList;
+
+import org.eclipse.vex.core.internal.core.Graphics;
+import org.eclipse.vex.core.internal.cursor.ContentTopology;
+import org.eclipse.vex.core.internal.cursor.ICursor;
+import org.eclipse.vex.core.internal.cursor.ICursorMove;
+import org.eclipse.vex.core.internal.cursor.ICursorPositionListener;
+import org.eclipse.vex.core.internal.layout.FakeGraphics;
+import org.eclipse.vex.core.provisional.dom.ContentRange;
+import org.eclipse.vex.core.provisional.dom.IDocument;
+
+public class FakeCursor implements ICursor {
+
+	private final LinkedList<ICursorPositionListener> cursorPositionListeners = new LinkedList<ICursorPositionListener>();
+	private final Graphics graphics = new FakeGraphics();
+	private final ContentTopology contentTopology;
+
+	private int offset;
+	private boolean hasSelection;
+	private int selectionStartOffset;
+	private int selectionEndOffset;
+
+	public FakeCursor(final IDocument document) {
+		contentTopology = new ContentTopology() {
+			@Override
+			public int getLastOffset() {
+				return document.getEndOffset();
+			}
+		};
+	}
+
+	@Override
+	public int getOffset() {
+		return offset;
+	}
+
+	@Override
+	public boolean hasSelection() {
+		return hasSelection;
+	}
+
+	@Override
+	public ContentRange getSelectedRange() {
+		if (hasSelection) {
+			return new ContentRange(selectionStartOffset, selectionEndOffset);
+		} else {
+			return new ContentRange(offset, offset);
+		}
+	}
+
+	@Override
+	public void addPositionListener(final ICursorPositionListener listener) {
+		cursorPositionListeners.add(listener);
+	}
+
+	@Override
+	public void removePositionListener(final ICursorPositionListener listener) {
+		cursorPositionListeners.remove(listener);
+	}
+
+	private void firePositionChanged(final int offset) {
+		for (final ICursorPositionListener listener : cursorPositionListeners) {
+			listener.positionChanged(offset);
+		}
+	}
+
+	private void firePositionAboutToChange() {
+		for (final ICursorPositionListener listener : cursorPositionListeners) {
+			listener.positionAboutToChange();
+		}
+	}
+
+	@Override
+	public void move(final ICursorMove move) {
+		firePositionAboutToChange();
+		offset = move.calculateNewOffset(graphics, contentTopology, offset, null, null, 0);
+		hasSelection = false;
+		firePositionChanged(offset);
+	}
+
+	@Override
+	public void select(final ICursorMove move) {
+		firePositionAboutToChange();
+		if (!hasSelection) {
+			selectionStartOffset = offset;
+		}
+		offset = move.calculateNewOffset(graphics, contentTopology, offset, null, null, 0);
+		hasSelection = true;
+		selectionEndOffset = offset;
+		firePositionChanged(offset);
+	}
+
+}
diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2CommentEditingTest.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2CommentEditingTest.java
index e039e5a..62a056e 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2CommentEditingTest.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2CommentEditingTest.java
@@ -23,6 +23,7 @@
 import static org.junit.Assert.assertTrue;
 
 import org.eclipse.vex.core.provisional.dom.IComment;
+import org.eclipse.vex.core.provisional.dom.IDocument;
 import org.eclipse.vex.core.provisional.dom.IDocumentFragment;
 import org.eclipse.vex.core.provisional.dom.IElement;
 import org.eclipse.vex.core.provisional.dom.INode;
@@ -39,8 +40,9 @@
 
 	@Before
 	public void setUp() throws Exception {
-		editor = new BaseVexWidget(new MockHostComponent());
-		editor.setDocument(createDocumentWithDTD(TEST_DTD, "section"));
+		final IDocument document = createDocumentWithDTD(TEST_DTD, "section");
+		editor = new DocumentEditor(new FakeCursor(document));
+		editor.setDocument(document);
 		rootElement = editor.getDocument().getRootElement();
 	}
 
