test simple deletion commands
Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2SimpleEditingTest.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2SimpleEditingTest.java
index 6f0d5dc..f65fb59 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2SimpleEditingTest.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2SimpleEditingTest.java
@@ -60,7 +60,7 @@
}
@Test
- public void givenAnElementWithText_whenHittingBackspace_shouldDeleteLastCharacter() throws Exception {
+ public void givenAnElementWithText_whenAtEndOfTextAndHittingBackspace_shouldDeleteLastCharacter() throws Exception {
final Element titleElement = widget.insertElement(TITLE);
widget.insertText("Hello");
widget.deletePreviousChar();
@@ -69,7 +69,7 @@
}
@Test
- public void givenAnElementWithText_whenHittingPos1AndDelete_shouldDeleteFirstCharacter() throws Exception {
+ public void givenAnElementWithText_whenAtBeginningOfTextAndHittingDelete_shouldDeleteFirstCharacter() throws Exception {
final Element titleElement = widget.insertElement(TITLE);
widget.insertText("Hello");
widget.moveBy(-5);
@@ -90,7 +90,30 @@
}
@Test
- public void givenAnEmptyElement_whenCaretBeforeStartOffsetAndHittingDelete_shouldDeleteEmptyElement() throws Exception {
+ public void givenAnEmptyElement_whenCaretBetweenStartAndEndTagAndHittingDelete_shouldDeleteEmptyElement() throws Exception {
+ widget.insertElement(TITLE);
+ widget.moveBy(1);
+ final Element paraElement = widget.insertElement(PARA);
+ widget.deleteNextChar();
+ assertEquals(1, rootElement.getChildCount());
+ assertNull(paraElement.getParent());
+ assertFalse(paraElement.isAssociated());
+ }
+
+ @Test
+ public void givenAnEmptyElement_whenCaretAfterEndTagAndHittingDelete_shouldDeleteEmptyElement() throws Exception {
+ widget.insertElement(TITLE);
+ widget.moveBy(1);
+ final Element paraElement = widget.insertElement(PARA);
+ widget.moveBy(1);
+ widget.deletePreviousChar();
+ assertEquals(1, rootElement.getChildCount());
+ assertNull(paraElement.getParent());
+ assertFalse(paraElement.isAssociated());
+ }
+
+ @Test
+ public void givenAnEmptyElement_whenCaretBeforeStartTagAndHittingDelete_shouldDeleteEmptyElement() throws Exception {
widget.insertElement(TITLE);
widget.moveBy(1);
final Element paraElement = widget.insertElement(PARA);
@@ -100,4 +123,5 @@
assertNull(paraElement.getParent());
assertFalse(paraElement.isAssociated());
}
+
}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VexWidgetImpl.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VexWidgetImpl.java
index 28b6169..7d54c28 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VexWidgetImpl.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VexWidgetImpl.java
@@ -329,7 +329,7 @@
this.moveTo(offset + 1, true);
deleteSelection();
} else if (!doc.isElementAt(offset)) {
- deleteOffset();
+ deleteNextToCaret();
}
}
}
@@ -363,13 +363,13 @@
offset--;
if (!doc.isElementAt(offset)) {
moveBy(-1);
- deleteOffset();
+ deleteNextToCaret();
}
}
}
}
- private void deleteOffset() {
+ private void deleteNextToCaret() {
try {
applyEdit(new DeleteEdit(document, new Range(getCaretOffset(), getCaretOffset())), getCaretOffset());
this.moveTo(getSelectionStart());
@@ -1413,7 +1413,7 @@
}
final Element e1 = getDocument().getElementForInsertionAt(offset - 1);
final Element e2 = getDocument().getElementForInsertionAt(offset + 1);
- return e1 != e2 && e1.getParent() == e2.getParent() && e1.getQualifiedName().equals(e2.getQualifiedName());
+ return e1 != e2 && e1.getParent() == e2.getParent() && e1.isKindOf(e2);
}
/**