public void MarkdigServiceTest_ParseAndRender_Inclusion() { // -x // |- root.md // |- b // | |- linkAndRefRoot.md var root = @"[!include[linkAndRefRoot](~/x/b/linkAndRefRoot.md)]"; var linkAndRefRoot = @"Paragraph1"; TestUtility.WriteToFile("x/root.md", root); TestUtility.WriteToFile("x/b/linkAndRefRoot.md", linkAndRefRoot); var service = TestUtility.CreateMarkdownService(); var document = service.Parse(root, "x/root.md"); Assert.Single(document); Assert.IsType <InclusionBlock>(document[0]); var mr = service.Render(document); var expected = @"<p>Paragraph1</p>" + "\n"; Assert.Equal(expected, mr.Html); var expectedDependency = new List <string> { "~/x/b/linkAndRefRoot.md" }; Assert.Equal(expectedDependency.ToImmutableList(), mr.Dependency); }
public void TripleColonWithInMonikerTestBlockUnClosed() { var source = new StringBuilder() .AppendLine("::: moniker range=\"chromeless\"") .AppendLine("::: zone target=\"docs\"") .AppendLine("## Alt text") .AppendLine("::: moniker-end") .ToString(); var listener = TestLoggerListener.CreateLoggerListenerWithPhaseEqualFilter(LoggerPhase); Logger.RegisterListener(listener); using (new LoggerPhaseScope(LoggerPhase)) { var service = TestUtility.CreateMarkdownService(); var document = service.Parse(source, "fakepath.md"); var monikerBlock = document.OfType <MonikerRangeBlock>().FirstOrDefault(); Assert.NotNull(monikerBlock); var nestedZoneBlock = monikerBlock.OfType <TripleColonBlock>().FirstOrDefault(); Assert.NotNull(nestedZoneBlock); Assert.False(nestedZoneBlock.Closed); } Logger.UnregisterListener(listener); }
public void MarkdigServiceTest_ParseInline() { var content = @"# I am a heading"; var service = TestUtility.CreateMarkdownService(); var document = service.Parse(content, "topic.md", true); var result = service.Render(document, true).Html; Assert.Single(document); Assert.IsType <ParagraphBlock>(document[0]); Assert.Equal(content, result); }
public void TripleColonTestBlockClosed() { var source = @"::: zone target=""chromeless"" ::: form action=""create-resource"" submitText=""Create"" ::: ::: zone-end "; var expected = @"<div class=""zone has-target"" data-target=""chromeless""> <form class=""chromeless-form"" data-action=""create-resource""> <div></div> <button class=""button is-primary"" disabled=""disabled"" type=""submit"">Create</button> </form> </div> ".Replace("\r\n", "\n"); var listener = TestLoggerListener.CreateLoggerListenerWithPhaseEqualFilter(LoggerPhase); Logger.RegisterListener(listener); using (new LoggerPhaseScope(LoggerPhase)) { var service = TestUtility.CreateMarkdownService(); var document = service.Parse(source, "fakepath.md"); var blocks = new List <TripleColonBlock>(); var stack = new Stack <ContainerBlock>(); stack.Push(document); // Get all triplecolon blocks in the document using a depth-first iterative tree traversal strategy. do { var block = stack.Pop(); var children = block.Where(x => x.GetType() == typeof(TripleColonBlock)).Select(x => x as TripleColonBlock); blocks.AddRange(children); foreach (var child in children) { stack.Push(child); } } while (stack.Count > 0); foreach (var block in blocks) { Assert.True(block.Closed); Assert.False(block.IsOpen); } } Logger.UnregisterListener(listener); }
public void ImageBlockTestBlockClosed() { var source = @":::image source=""example.jpg"" type=""complex"" alt-text=""example"":::Lorem Ipsum :::image-end:::"; var listener = TestLoggerListener.CreateLoggerListenerWithPhaseEqualFilter(LoggerPhase); Logger.RegisterListener(listener); using (new LoggerPhaseScope(LoggerPhase)) { var service = TestUtility.CreateMarkdownService(); var document = service.Parse(source, "fakepath.md"); var imageBlock = document.OfType <TripleColonBlock>().FirstOrDefault(); Assert.NotNull(imageBlock); Assert.True(imageBlock.Closed); } Logger.UnregisterListener(listener); }
public void MarkdigServiceTest_ParseAndRender_Simple() { var markdown = @"# title ```yaml key: value ```"; var service = TestUtility.CreateMarkdownService(); var document = service.Parse(markdown, "topic.md"); Assert.Equal(2, document.Count); Assert.IsType <HeadingBlock>(document[0]); Assert.IsType <FencedCodeBlock>(document[1]); var mr = service.Render(document); var expected = @"<h1 id=""title"">title</h1> <pre><code class=""lang-yaml"">key: value </code></pre> "; Assert.Equal(expected.Replace("\r\n", "\n"), mr.Html); }
public void ImageTestNotImageBlock() { var source = @":::row::: :::column::: This is where your content goes. :::column-end::: :::row-end::: "; var listener = TestLoggerListener.CreateLoggerListenerWithPhaseEqualFilter(LoggerPhase); Logger.RegisterListener(listener); using (new LoggerPhaseScope(LoggerPhase)) { var service = TestUtility.CreateMarkdownService(); var document = service.Parse(source, "fakepath.md"); var imageBlock = document.OfType <TripleColonBlock>().FirstOrDefault(); Assert.Null(imageBlock); } Logger.UnregisterListener(listener); }