summaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org')
-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"))));
+ }
}