aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-16 21:29:30 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-16 21:29:30 +0000
commit0ea271afbea406a9ebeb24712255a50cbbd5c83d (patch)
tree4e0229b754ed3aefde664acec049a86417a265be /src/test/java/org/zwobble
parent87527240deb25cc9b62b8aa43c8121344fc103f7 (diff)
Collapse nodes where appropriate
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/html/HtmlCollapseTests.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/mammoth/tests/html/HtmlCollapseTests.java b/src/test/java/org/zwobble/mammoth/tests/html/HtmlCollapseTests.java
index 18716c6..8a25385 100644
--- a/src/test/java/org/zwobble/mammoth/tests/html/HtmlCollapseTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/html/HtmlCollapseTests.java
@@ -6,6 +6,7 @@ import org.zwobble.mammoth.html.Html;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.zwobble.mammoth.tests.DeepReflectionMatcher.deepEquals;
import static org.zwobble.mammoth.util.MammothLists.list;
+import static org.zwobble.mammoth.util.MammothMaps.map;
public class HtmlCollapseTests {
@Test
@@ -14,4 +15,67 @@ public class HtmlCollapseTests {
Html.collapse(list(Html.text("Bluebells"))),
deepEquals(list(Html.text("Bluebells"))));
}
+
+ @Test
+ public void consecutiveFreshElementsAreNotCollapsed() {
+ assertThat(
+ Html.collapse(list(Html.element("p"), Html.element("p"))),
+ deepEquals(list(Html.element("p"), Html.element("p"))));
+ }
+
+ @Test
+ public void consecutiveCollapsibleElementsAreCollapsedIfTheyHaveTheSameTagAndAttributes() {
+ assertThat(
+ Html.collapse(list(
+ Html.collapsibleElement("p", list(Html.text("One"))),
+ Html.collapsibleElement("p", list(Html.text("Two"))))),
+
+ deepEquals(list(Html.collapsibleElement("p", list(Html.text("One"), Html.text("Two"))))));
+ }
+
+ @Test
+ public void elementsWithDifferentTagNamesAreNotCollapsed() {
+ assertThat(
+ Html.collapse(list(
+ Html.collapsibleElement("p", list(Html.text("One"))),
+ Html.collapsibleElement("div", list(Html.text("Two"))))),
+
+ deepEquals(list(
+ Html.collapsibleElement("p", list(Html.text("One"))),
+ Html.collapsibleElement("div", list(Html.text("Two"))))));
+ }
+
+ @Test
+ public void elementsWithDifferentAttributesAreNotCollapsed() {
+ // TODO: should there be some spacing when block-level elements are collapsed?
+ assertThat(
+ Html.collapse(list(
+ Html.collapsibleElement("p", map("id", "a"), list(Html.text("One"))),
+ Html.collapsibleElement("p", list(Html.text("Two"))))),
+
+ deepEquals(list(
+ Html.collapsibleElement("p", map("id", "a"), list(Html.text("One"))),
+ Html.collapsibleElement("p", list(Html.text("Two"))))));
+ }
+
+ @Test
+ public void childrenOfCollapsedElementCanCollapseWithChildrenOfPreviousElement() {
+ assertThat(
+ Html.collapse(list(
+ Html.collapsibleElement("blockquote", list(
+ Html.collapsibleElement("p", list(Html.text("One"))))),
+ Html.collapsibleElement("blockquote", list(
+ Html.collapsibleElement("p", list(Html.text("Two"))))))),
+
+ deepEquals(list(
+ Html.collapsibleElement("blockquote", list(
+ Html.collapsibleElement("p", list(Html.text("One"), Html.text("Two"))))))));
+ }
+
+ @Test
+ public void collapsibleElementCanCollapseIntoPreviousFreshElement() {
+ assertThat(
+ Html.collapse(list(Html.element("p"), Html.collapsibleElement("p"))),
+ deepEquals(list(Html.element("p"))));
+ }
}