final CaptureInlineTagsAction action = new CaptureInlineTagsAction();
final CaptureInlineTagsAction action = new CaptureInlineTagsAction();
@Test public void multipleFragmentsContinuation() { final MarkwonHtmlParserImpl impl = MarkwonHtmlParserImpl.create(new HtmlEmptyTagReplacement()); final StringBuilder output = new StringBuilder(); impl.processFragment(output, "<i>"); output.append("italic "); impl.processFragment(output, "</i>"); final CaptureInlineTagsAction action = new CaptureInlineTagsAction(); impl.flushInlineTags(output.length(), action); assertTrue(action.called); final List<HtmlTag.Inline> inlines = action.tags; assertEquals(inlines.toString(), 1, inlines.size()); final HtmlTag.Inline inline = inlines.get(0); assertEquals("i", inline.name()); assertEquals(0, inline.start()); assertEquals(output.length(), inline.end()); assertEquals("italic ", output.toString()); }
final CaptureInlineTagsAction inlineTagsAction = new CaptureInlineTagsAction(); final CaptureBlockTagsAction blockTagsAction = new CaptureBlockTagsAction();
impl.processFragment(output, "<DiV><I>italic <eM>emphasis</Em> italic</i></dIv>"); final CaptureInlineTagsAction inlineTagsAction = new CaptureInlineTagsAction(); final CaptureBlockTagsAction blockTagsAction = new CaptureBlockTagsAction();
final CaptureInlineTagsAction inlineTagsAction = new CaptureInlineTagsAction(); final CaptureBlockTagsAction blockTagsAction = new CaptureBlockTagsAction();
@Test public void flushDoesNotCloseTagsIfNoEndRequested() { final MarkwonHtmlParserImpl impl = MarkwonHtmlParserImpl.create(); final StringBuilder output = new StringBuilder(); impl.processFragment(output, "<div><i><b><em><strong>divibemstrong"); final CaptureInlineTagsAction inlineTagsAction = new CaptureInlineTagsAction(); final CaptureBlockTagsAction blockTagsAction = new CaptureBlockTagsAction(); impl.flushInlineTags(HtmlTag.NO_END, inlineTagsAction); impl.flushBlockTags(HtmlTag.NO_END, blockTagsAction); assertTrue(inlineTagsAction.called); assertTrue(blockTagsAction.called); with(inlineTagsAction.tags, new Action<List<HtmlTag.Inline>>() { @Override public void apply(@NonNull List<HtmlTag.Inline> inlines) { assertEquals(4, inlines.size()); for (HtmlTag.Inline inline : inlines) { assertFalse(inline.isClosed()); assertEquals(HtmlTag.NO_END, inline.end()); } } }); assertEquals(1, blockTagsAction.tags.size()); with(blockTagsAction.tags.get(0), new Action<HtmlTag.Block>() { @Override public void apply(@NonNull HtmlTag.Block block) { assertFalse(block.isClosed()); assertEquals(HtmlTag.NO_END, block.end()); } }); }
@Test public void flushClearsInternalState() { final MarkwonHtmlParserImpl impl = MarkwonHtmlParserImpl.create(); final StringBuilder output = new StringBuilder(); impl.processFragment(output, "<p><i>italic <b>bold italic</b></i></p><p>paragraph</p><div>and a div</div>"); final CaptureInlineTagsAction inlineTagsAction = new CaptureInlineTagsAction(); final CaptureBlockTagsAction blockTagsAction = new CaptureBlockTagsAction(); impl.flushInlineTags(output.length(), inlineTagsAction); impl.flushBlockTags(output.length(), blockTagsAction); assertTrue(inlineTagsAction.called); assertTrue(blockTagsAction.called); assertEquals(2, inlineTagsAction.tags.size()); assertEquals(3, blockTagsAction.tags.size()); final CaptureInlineTagsAction captureInlineTagsAction = new CaptureInlineTagsAction(); final CaptureBlockTagsAction captureBlockTagsAction = new CaptureBlockTagsAction(); impl.flushInlineTags(output.length(), captureInlineTagsAction); impl.flushBlockTags(output.length(), captureBlockTagsAction); assertTrue(captureInlineTagsAction.called); assertTrue(captureBlockTagsAction.called); assertEquals(0, captureInlineTagsAction.tags.size()); assertEquals(0, captureBlockTagsAction.tags.size()); }
@Test public void attributesAreLowerCase() { final MarkwonHtmlParserImpl impl = MarkwonHtmlParserImpl.create(); final StringBuilder output = new StringBuilder(); impl.processFragment(output, "<i CLASS=\"my-class\" dIsAbLeD @HeLLo=\"there\">"); final CaptureInlineTagsAction action = new CaptureInlineTagsAction(); impl.flushInlineTags(output.length(), action); assertTrue(action.called); assertEquals(1, action.tags.size()); with(action.tags.get(0), new Action<HtmlTag.Inline>() { @Override public void apply(@NonNull HtmlTag.Inline inline) { assertEquals("i", inline.name()); with(inline.attributes(), new Action<Map<String, String>>() { @Override public void apply(@NonNull Map<String, String> map) { assertEquals(3, map.size()); assertEquals("my-class", map.get("class")); assertEquals("", map.get("disabled")); assertEquals("there", map.get("@hello")); } }); } }); }
@Test public void resetClearsBothInlinesAndBlocks() { final MarkwonHtmlParserImpl impl = MarkwonHtmlParserImpl.create(); final StringBuilder output = new StringBuilder(); impl.processFragment(output, "<p>paragraph <i>italic</i></p><div>div</div>"); impl.reset(); final CaptureInlineTagsAction inlineTagsAction = new CaptureInlineTagsAction(); final CaptureBlockTagsAction blockTagsAction = new CaptureBlockTagsAction(); impl.flushInlineTags(output.length(), inlineTagsAction); impl.flushBlockTags(output.length(), blockTagsAction); assertTrue(inlineTagsAction.called); assertTrue(blockTagsAction.called); assertEquals(0, inlineTagsAction.tags.size()); assertEquals(0, blockTagsAction.tags.size()); }