/test/Microsoft.DocAsCode.MarkdownRewriters.Tests/MarkdigMarkdownRewritersTests.cs

https://github.com/dotnet/docfx · C# · 321 lines · 276 code · 43 blank · 2 comment · 0 complexity · a9d4d8c7c731571555bea99bfd9bbe59 MD5 · raw file

  1. // Copyright (c) Microsoft. All rights reserved.
  2. // Licensed under the MIT license. See LICENSE file in the project root for full license information.
  3. namespace Microsoft.DocAsCode.MarkdownRewriters.Tests
  4. {
  5. using Microsoft.DocAsCode.Dfm;
  6. using Microsoft.DocAsCode.MarkdigMarkdownRewriters;
  7. using Xunit;
  8. public class MarkdigMarkdownRewritersTests
  9. {
  10. private DfmEngine _engine;
  11. public MarkdigMarkdownRewritersTests()
  12. {
  13. var option = DocfxFlavoredMarked.CreateDefaultOptions();
  14. option.LegacyMode = true;
  15. var builder = new DfmEngineBuilder(option);
  16. _engine = builder.CreateDfmEngine(new MarkdigMarkdownRenderer());
  17. }
  18. [Fact]
  19. [Trait("Related", "MarkdigMarkdownRewriters")]
  20. public void TestMarkdigMarkdownRewriters_Resloved_ShortcutXref()
  21. {
  22. var source = "@System.String";
  23. var expected = "@\"System.String\"\n\n";
  24. var result = Rewrite(source, "topic.md");
  25. Assert.Equal(expected, result);
  26. }
  27. [Fact]
  28. [Trait("Related", "MarkdigMarkdownRewriters")]
  29. public void TestMarkdigMarkdownRewriters_Unresloved_ShortcutXref()
  30. {
  31. var source = "@outlook.com";
  32. var expected = "@outlook.com\n\n";
  33. var result = Rewrite(source, "topic.md");
  34. Assert.Equal(expected, result);
  35. }
  36. [Fact]
  37. [Trait("Related", "MarkdigMarkdownRewriters")]
  38. public void TestMarkdigMarkdownRewriters_AutoLinkXref()
  39. {
  40. var source = "<xref:system.string>";
  41. var expected = "<xref:system.string>\n\n";
  42. var result = Rewrite(source, "topic.md");
  43. Assert.Equal(expected, result);
  44. }
  45. [Fact]
  46. [Trait("Related", "MarkdigMarkdownRewriters")]
  47. public void TestMarkdigMarkdownRewriters_NormalizeVideo()
  48. {
  49. var source = @"> [!VIDEO https://channel9.msdn.com]
  50. >
  51. >
  52. ";
  53. var expected = @"> [!VIDEO https://channel9.msdn.com]
  54. ";
  55. var result = Rewrite(source, "topic.md");
  56. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  57. }
  58. [Fact]
  59. [Trait("Related", "MarkdigMarkdownRewriters")]
  60. public void TestMarkdigMarkdownRewriters_NormalizeMultipleVideo()
  61. {
  62. var source = @"> Video Sample
  63. > [!VIDEO https://channel9.msdn.com]
  64. >
  65. >[!VIDEO https://channel9.msdn.com]
  66. >
  67. > *abc*
  68. ";
  69. var expected = @"> Video Sample
  70. >
  71. > [!VIDEO https://channel9.msdn.com]
  72. >
  73. > [!VIDEO https://channel9.msdn.com]
  74. >
  75. > *abc*
  76. >
  77. >
  78. ";
  79. var result = Rewrite(source, "topic.md");
  80. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  81. }
  82. [Fact]
  83. [Trait("Related", "MarkdigMarkdownRewriters")]
  84. public void TestMarkdigMarkdownRewriters_MailTo()
  85. {
  86. var source = "<Mailto:docs@microsoft.com>";
  87. var expected = "<docs@microsoft.com>\n\n";
  88. var result = Rewrite(source, "topic.md");
  89. Assert.Equal(expected, result);
  90. result = Rewrite(result, "topic.md");
  91. Assert.Equal(expected, result);
  92. }
  93. [Fact]
  94. [Trait("Related", "MarkdigMarkdownRewriters")]
  95. public void TestMarkdigMarkdownRewriters_InlineLink()
  96. {
  97. var source = "[cool **text**](this%20is%20a%20link)";
  98. var expected = "[cool **text**](this%20is%20a%20link)\n\n";
  99. var result = Rewrite(source, "topic.md");
  100. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  101. }
  102. [Fact]
  103. [Trait("Related", "MarkdigMarkdownRewriters")]
  104. public void TestMarkdigMarkdownRewriters_InlineExternalLink()
  105. {
  106. var source = "[cool](https://dotnet.github.io/docfx)";
  107. var expected = "[cool](https://dotnet.github.io/docfx)\n\n";
  108. var result = Rewrite(source, "topic.md");
  109. Assert.Equal(expected, result);
  110. }
  111. [Fact]
  112. [Trait("Related", "MarkdigMarkdownRewriters")]
  113. public void TestMarkdigMarkdownRewriters_InlineRelativeLink()
  114. {
  115. var source = "[cool](~/a.txt)";
  116. var expected = "[cool](~/a.txt)\n\n";
  117. var result = Rewrite(source, "topic.md");
  118. Assert.Equal(expected, result);
  119. }
  120. [Fact]
  121. [Trait("Related", "MarkdigMarkdownRewriters")]
  122. public void TestMarkdigMarkdownRewriters_InlineEscapedLink()
  123. {
  124. var source = "[cool **text**](this%20is%20a%20link)";
  125. var expected = "[cool **text**](this%20is%20a%20link)\n\n";
  126. var result = Rewrite(source, "topic.md");
  127. Assert.Equal(expected, result);
  128. }
  129. [Fact]
  130. [Trait("Related", "MarkdigMarkdownRewriters")]
  131. public void TestMarkdigMarkdownRewriters_Html()
  132. {
  133. var source = @"
  134. **markdown**
  135. <div>
  136. This is **markdown** content.
  137. </div>
  138. # header";
  139. var expected = @"**markdown**
  140. <div>
  141. This is <strong>markdown</strong> content.
  142. </div>
  143. # header";
  144. var result = Rewrite(source, "topic.md");
  145. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  146. }
  147. [Fact]
  148. [Trait("Related", "MarkdigMarkdownRewriters")]
  149. public void TestMarkdigMarkdownRewriters_HeadingWithWhitespace()
  150. {
  151. var source = @" # Heading with whitespace #
  152. content...";
  153. var expected = @" # Heading with whitespace #
  154. content...
  155. ";
  156. var result = Rewrite(source, "topic.md");
  157. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  158. }
  159. [Fact]
  160. [Trait("Related", "MarkdigMarkdownRewriters")]
  161. public void TestMarkdigMarkdownRewriters_HeadingWithoutWhitespace()
  162. {
  163. var source = @" #Heading with whitespace
  164. content...";
  165. var expected = @" # Heading with whitespace
  166. content...
  167. ";
  168. var result = Rewrite(source, "topic.md");
  169. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  170. }
  171. [Fact]
  172. [Trait("Related", "MarkdigMarkdownRewriters")]
  173. public void TestMarkdigMarkdownRewriters_LHeading()
  174. {
  175. var source = @"Heading with whitespace
  176. ===
  177. content...";
  178. var expected = @"Heading with whitespace
  179. ===
  180. content...
  181. ";
  182. var result = Rewrite(source, "topic.md");
  183. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  184. }
  185. [Fact]
  186. [Trait("Related", "MarkdigMarkdownRewriters")]
  187. public void TestMarkdigMarkdownRewriters_StrongAndEm()
  188. {
  189. var source = "__a__ and _b_ and **a** and **b** and *__ab__*";
  190. var expected = "__a__ and _b_ and **a** and **b** and *__ab__*\n\n";
  191. var result = Rewrite(source, "topic.md");
  192. Assert.Equal(expected, result);
  193. }
  194. [Fact]
  195. [Trait("Related", "MarkdigMarkdownRewriters")]
  196. public void TestMarkdigMarkdownRewriters_Table()
  197. {
  198. var source = @"|Tables|Are|Cool|
  199. |---|:--:|--:|
  200. |col 1 is| left-aligned | $1600 |
  201. | col 2 is | centered | $12 |
  202. | col 3 is | right-aligned |$1|";
  203. var expected = @"| Tables | Are | Cool |
  204. |----------|:-------------:|------:|
  205. | col 1 is | left-aligned | $1600 |
  206. | col 2 is | centered | $12 |
  207. | col 3 is | right-aligned | $1 |
  208. ";
  209. var result = Rewrite(source, "topic.md");
  210. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  211. }
  212. [Fact]
  213. [Trait("Related", "MarkdigMarkdownRewriters")]
  214. public void TestMarkdigMarkdownRewriters_UnalignedTable00()
  215. {
  216. var source = @"|Tables|Are|Cool|
  217. |---|:--:|--:|
  218. |col 1 is| left-aligned | $1600 |
  219. | col 2 is | centered
  220. | col 3 is";
  221. var expected = @"| Tables | Are | Cool |
  222. |----------|:------------:|------:|
  223. | col 1 is | left-aligned | $1600 |
  224. | col 2 is | centered | |
  225. | col 3 is | | |
  226. ";
  227. var result = Rewrite(source, "topic.md");
  228. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  229. }
  230. [Fact]
  231. [Trait("Related", "MarkdigMarkdownRewriters")]
  232. public void TestMarkdigMarkdownRewriters_UnalignedTable01()
  233. {
  234. var source = @"| | a |
  235. |---|---|
  236. | |a| ";
  237. var expected = @"| | a |
  238. |---|---|
  239. | | a |
  240. ";
  241. var result = Rewrite(source, "topic.md");
  242. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  243. }
  244. [Fact]
  245. [Trait("Related", "MarkdigMarkdownRewriters")]
  246. public void TestMarkdigMarkdownRewriters_InclusionPath()
  247. {
  248. var source = @"[!INCLUDE [title](.\..\..\..\includes\a.md)]";
  249. var expected = @"[!INCLUDE [title](./../../../includes/a.md)]
  250. ";
  251. var result = Rewrite(source, "topic.md");
  252. Assert.Equal(expected.Replace("\r\n", "\n"), result);
  253. }
  254. private string Rewrite(string source, string filePath)
  255. {
  256. return _engine.Markup(source, filePath);
  257. }
  258. }
  259. }