public void testCompositeTagWithDeadlock() throws ParserException {
    createParser(
        "<custom>"
            + "<another>something"
            + "</custom>"
            + "<custom>"
            + "<another>else</another>"
            + "</custom>");
    parser.setNodeFactory(
        new PrototypicalNodeFactory(
            new Tag[] {
              new CustomTag(), new AnotherTag(true),
            }));
    parseAndAssertNodeCount(2);
    assertType("node", CustomTag.class, node[0]);
    CustomTag customTag = (CustomTag) node[0];

    assertEquals("child count", 1, customTag.getChildCount());
    assertFalse("custom tag should not be xml end tag", customTag.isEmptyXmlTag());
    assertEquals("starting loc", 0, customTag.getStartPosition());
    assertEquals("ending loc", 8, customTag.getEndPosition());
    assertEquals("starting line position", 0, customTag.getStartingLineNumber());
    assertEquals("ending line position", 0, customTag.getEndingLineNumber());
    AnotherTag anotherTag = (AnotherTag) customTag.childAt(0);
    assertEquals("anotherTag child count", 1, anotherTag.getChildCount());
    Text stringNode = (Text) anotherTag.childAt(0);
    assertStringEquals("anotherTag child text", "something", stringNode.toPlainTextString());
    assertStringEquals(
        "first custom tag html",
        "<custom><another>something</another></custom>",
        customTag.toHtml());
    customTag = (CustomTag) node[1];
    assertStringEquals(
        "second custom tag html", "<custom><another>else</another></custom>", customTag.toHtml());
  }
 public void testEmptyCompositeTagAnotherStyle() throws ParserException {
   String html = "<Custom></Custom>";
   createParser(html);
   CustomTag customTag = parseCustomTag(1);
   assertEquals("child count", 0, customTag.getChildCount());
   assertFalse("custom tag should not be xml end tag", customTag.isEmptyXmlTag());
   assertEquals("starting loc", 0, customTag.getStartPosition());
   assertEquals("ending loc", 8, customTag.getEndPosition());
   assertEquals("starting line position", 0, customTag.getStartingLineNumber());
   assertEquals("ending line position", 0, customTag.getEndingLineNumber());
   assertEquals("html", html, customTag.toHtml());
 }
 public void testErroneousCompositeTagWithChildren() throws ParserException {
   String html = "<custom>" + "<firstChild>" + "<secondChild>";
   createParser(html);
   CustomTag customTag = parseCustomTag(1);
   assertEquals("child count", 2, customTag.getChildCount());
   assertFalse("custom tag should not be xml end tag", customTag.isEmptyXmlTag());
   assertEquals("starting loc", 0, customTag.getStartPosition());
   assertEquals("ending loc", 8, customTag.getEndPosition());
   assertEquals("starting line position", 0, customTag.getStartingLineNumber());
   assertEquals("ending line position", 0, customTag.getEndingLineNumber());
   assertStringEquals("html", html + "</custom>", customTag.toHtml());
 }
 public void testCompositeTagWithOneTextChild() throws ParserException {
   String html = "<Custom>" + "Hello" + "</Custom>";
   createParser(html);
   CustomTag customTag = parseCustomTag(1);
   assertEquals("child count", 1, customTag.getChildCount());
   assertFalse("custom tag should not be xml end tag", customTag.isEmptyXmlTag());
   assertEquals("starting loc", 0, customTag.getStartPosition());
   assertEquals("ending loc", 8, customTag.getEndPosition());
   assertEquals("starting line position", 0, customTag.getStartingLineNumber());
   assertEquals("ending line position", 0, customTag.getEndingLineNumber());
   Node child = customTag.childAt(0);
   assertType("child", Text.class, child);
   assertStringEquals("child text", "Hello", child.toPlainTextString());
 }
 public void testCompositeTagWithErroneousAnotherTag() throws ParserException {
   createParser("<custom>" + "<another>" + "</custom>");
   parser.setNodeFactory(
       new PrototypicalNodeFactory(
           new Tag[] {
             new CustomTag(), new AnotherTag(true),
           }));
   parseAndAssertNodeCount(1);
   assertType("node", CustomTag.class, node[0]);
   CustomTag customTag = (CustomTag) node[0];
   assertEquals("child count", 1, customTag.getChildCount());
   assertFalse("custom tag should be xml end tag", customTag.isEmptyXmlTag());
   assertEquals("starting loc", 0, customTag.getStartPosition());
   assertEquals("ending loc", 8, customTag.getEndPosition());
   AnotherTag anotherTag = (AnotherTag) customTag.childAt(0);
   assertEquals("another tag ending loc", 17, anotherTag.getEndPosition());
   assertEquals("starting line position", 0, customTag.getStartingLineNumber());
   assertEquals("ending line position", 0, customTag.getEndingLineNumber());
   assertStringEquals("html", "<custom><another></another></custom>", customTag.toHtml());
 }