package de.neuland.jade4j.parser; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; import org.junit.Test; import de.neuland.jade4j.parser.node.BlockNode; import de.neuland.jade4j.parser.node.Node; import de.neuland.jade4j.parser.node.TagNode; public class ComplexIndentOutdentParserTest extends ParserTest { private Node head; private Node body; private Node div1; private Node div2; private Node div3; private Node div4; private Node div5; private Node div6; private Node div7; private Node div8; private Node ul1; private Node ul2; private Node span; private Node em; private Node block; @Test public void shouldReturnABlockWithTokens2() { loadInParser("complex_indent_outdent_file.jade"); block = (BlockNode) root; assertThat(block.getNodes(), notNullValue()); head = block.pollNode(); body = block.pollNode(); assertThat(head.getValue(), equalTo("head")); assertThat(body.getValue(), equalTo("body")); assertThat(block.hasNodes(), equalTo(false)); block = ((TagNode) head).getBlock(); assertThat(block.pollNode().getValue(), equalTo("meta")); assertThat(block.pollNode().getValue(), equalTo("meta")); assertThat(block.hasNodes(), equalTo(false)); block = ((TagNode) body).getBlock(); assertThat(block.pollNode().getValue(), equalTo("div0")); div1 = block.pollNode(); assertThat(div1.getValue(), equalTo("div1")); div2 = block.pollNode(); assertThat(div2.getValue(), equalTo("div2")); div3 = block.pollNode(); assertThat(div3.getValue(), equalTo("div3")); div4 = block.pollNode(); assertThat(div4.getValue(), equalTo("div4")); div5 = block.pollNode(); assertThat(div5.getValue(), equalTo("div5")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) div1).getBlock(); assertThat(block.pollNode().getValue(), equalTo("span")); assertThat(block.pollNode().getValue(), equalTo("span")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) div2).getBlock(); ul1 = block.pollNode(); assertThat(ul1.getValue(), equalTo("ul1")); ul2 = block.pollNode(); assertThat(ul2.getValue(), equalTo("ul2")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) div3).getBlock(); assertThat(block.pollNode().getValue(), equalTo("span")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) div4).getBlock(); assertThat(block.pollNode().getValue(), equalTo("h1")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) div5).getBlock(); div6 = block.pollNode(); assertThat(div6.getValue(), equalTo("div6")); div7 = block.pollNode(); assertThat(div7.getValue(), equalTo("div7")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) div6).getBlock(); div8 = block.pollNode(); assertThat(div8.getValue(), equalTo("div8")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) div8).getBlock(); span = block.pollNode(); assertThat(span.getValue(), equalTo("span")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) span).getBlock(); em = block.pollNode(); assertThat(em.getValue(), equalTo("em")); assertThat(block.hasNodes(), equalTo(false)); // =============================================== block = ((TagNode) div7).getBlock(); assertThat(block.pollNode().getValue(), equalTo("span")); assertThat(block.hasNodes(), equalTo(false)); } }