|
| 1 | +package org.commonmark.renderer.markdown; |
| 2 | + |
| 3 | +import static org.assertj.core.api.Assertions.assertThat; |
| 4 | + |
| 5 | +import org.commonmark.text.CharMatcher; |
| 6 | +import org.junit.jupiter.api.Test; |
| 7 | + |
| 8 | +public class MarkdownWriterTest { |
| 9 | + |
| 10 | + private static final CharMatcher STAR = c -> c == '*'; |
| 11 | + private static final CharMatcher NEWLINE = c -> c == '\n'; |
| 12 | + private static final CharMatcher PIPE = c -> c == '|'; |
| 13 | + |
| 14 | + @Test |
| 15 | + public void testTextEscaping() { |
| 16 | + assertThat(text("abc", STAR)).isEqualTo("abc"); |
| 17 | + assertThat(text("*abc", STAR)).isEqualTo("\\*abc"); |
| 18 | + assertThat(text("abc*", STAR)).isEqualTo("abc\\*"); |
| 19 | + assertThat(text("a*b*c", STAR)).isEqualTo("a\\*b\\*c"); |
| 20 | + assertThat(text("a**b", STAR)).isEqualTo("a\\*\\*b"); |
| 21 | + assertThat(text("***", STAR)).isEqualTo("\\*\\*\\*"); |
| 22 | + assertThat(text("*", STAR)).isEqualTo("\\*"); |
| 23 | + } |
| 24 | + |
| 25 | + @Test |
| 26 | + public void testTextEscapingNewline() { |
| 27 | + assertThat(text("a\nb\nc", NEWLINE)).isEqualTo("a b c"); |
| 28 | + assertThat(text("\n", NEWLINE)).isEqualTo(" "); |
| 29 | + } |
| 30 | + |
| 31 | + @Test |
| 32 | + public void testRawEscaping() { |
| 33 | + StringBuilder sb = new StringBuilder(); |
| 34 | + MarkdownWriter writer = new MarkdownWriter(sb); |
| 35 | + writer.pushRawEscape(PIPE); |
| 36 | + writer.raw("a|b|c"); |
| 37 | + writer.popRawEscape(); |
| 38 | + writer.raw("d|e"); |
| 39 | + assertThat(sb.toString()).isEqualTo("a\\|b\\|cd|e"); |
| 40 | + } |
| 41 | + |
| 42 | + @Test |
| 43 | + public void testLastCharAndLineStart() { |
| 44 | + StringBuilder sb = new StringBuilder(); |
| 45 | + MarkdownWriter writer = new MarkdownWriter(sb); |
| 46 | + writer.text("a*", STAR); |
| 47 | + assertThat(writer.getLastChar()).isEqualTo('*'); |
| 48 | + assertThat(writer.isAtLineStart()).isFalse(); |
| 49 | + writer.line(); |
| 50 | + assertThat(writer.isAtLineStart()).isTrue(); |
| 51 | + } |
| 52 | + |
| 53 | + private static String text(String s, CharMatcher escape) { |
| 54 | + StringBuilder sb = new StringBuilder(); |
| 55 | + MarkdownWriter writer = new MarkdownWriter(sb); |
| 56 | + writer.text(s, escape); |
| 57 | + return sb.toString(); |
| 58 | + } |
| 59 | +} |
0 commit comments