|
2 | 2 |
|
3 | 3 | import org.commonmark.Extension; |
4 | 4 | import org.commonmark.parser.Parser; |
| 5 | +import org.commonmark.renderer.text.LineBreakRendering; |
5 | 6 | import org.commonmark.renderer.text.TextContentRenderer; |
6 | | -import org.commonmark.testutil.RenderingTestCase; |
| 7 | +import org.commonmark.testutil.Asserts; |
7 | 8 | import org.junit.Test; |
8 | 9 |
|
9 | 10 | import java.util.Set; |
10 | 11 |
|
11 | | -public class TablesTextContentTest extends RenderingTestCase { |
| 12 | +public class TablesTextContentTest { |
12 | 13 |
|
13 | 14 | private static final Set<Extension> EXTENSIONS = Set.of(TablesExtension.create()); |
14 | 15 | private static final Parser PARSER = Parser.builder().extensions(EXTENSIONS).build(); |
15 | 16 | private static final TextContentRenderer RENDERER = TextContentRenderer.builder().extensions(EXTENSIONS).build(); |
16 | 17 |
|
| 18 | + private static final TextContentRenderer COMPACT_RENDERER = TextContentRenderer.builder().extensions(EXTENSIONS).build(); |
| 19 | + private static final TextContentRenderer SEPARATE_RENDERER = TextContentRenderer.builder().extensions(EXTENSIONS) |
| 20 | + .lineBreakRendering(LineBreakRendering.SEPARATE_BLOCKS).build(); |
| 21 | + private static final TextContentRenderer STRIPPED_RENDERER = TextContentRenderer.builder().extensions(EXTENSIONS) |
| 22 | + .lineBreakRendering(LineBreakRendering.STRIP).build(); |
| 23 | + |
17 | 24 | @Test |
18 | 25 | public void oneHeadNoBody() { |
19 | | - assertRendering("Abc|Def\n---|---", "Abc| Def\n"); |
| 26 | + assertCompact("Abc|Def\n---|---", "Abc| Def"); |
20 | 27 | } |
21 | 28 |
|
22 | 29 | @Test |
23 | 30 | public void oneColumnOneHeadNoBody() { |
24 | | - String expected = "Abc\n"; |
25 | | - assertRendering("|Abc\n|---\n", expected); |
26 | | - assertRendering("|Abc|\n|---|\n", expected); |
27 | | - assertRendering("Abc|\n---|\n", expected); |
| 31 | + String expected = "Abc"; |
| 32 | + assertCompact("|Abc\n|---\n", expected); |
| 33 | + assertCompact("|Abc|\n|---|\n", expected); |
| 34 | + assertCompact("Abc|\n---|\n", expected); |
28 | 35 |
|
29 | 36 | // Pipe required on separator |
30 | | - assertRendering("|Abc\n---\n", "|Abc"); |
| 37 | + assertCompact("|Abc\n---\n", "|Abc"); |
31 | 38 | // Pipe required on head |
32 | | - assertRendering("Abc\n|---\n", "Abc\n|---"); |
| 39 | + assertCompact("Abc\n|---\n", "Abc\n|---"); |
33 | 40 | } |
34 | 41 |
|
35 | 42 | @Test |
36 | 43 | public void oneColumnOneHeadOneBody() { |
37 | | - String expected = "Abc\n1\n"; |
38 | | - assertRendering("|Abc\n|---\n|1", expected); |
39 | | - assertRendering("|Abc|\n|---|\n|1|", expected); |
40 | | - assertRendering("Abc|\n---|\n1|", expected); |
| 44 | + String expected = "Abc\n1"; |
| 45 | + assertCompact("|Abc\n|---\n|1", expected); |
| 46 | + assertCompact("|Abc|\n|---|\n|1|", expected); |
| 47 | + assertCompact("Abc|\n---|\n1|", expected); |
41 | 48 |
|
42 | 49 | // Pipe required on separator |
43 | | - assertRendering("|Abc\n---\n|1", "|Abc\n|1"); |
| 50 | + assertCompact("|Abc\n---\n|1", "|Abc\n|1"); |
44 | 51 | } |
45 | 52 |
|
46 | 53 | @Test |
47 | 54 | public void oneHeadOneBody() { |
48 | | - assertRendering("Abc|Def\n---|---\n1|2", "Abc| Def\n1| 2\n"); |
| 55 | + assertCompact("Abc|Def\n---|---\n1|2", "Abc| Def\n1| 2"); |
49 | 56 | } |
50 | 57 |
|
51 | 58 | @Test |
52 | 59 | public void separatorMustNotHaveLessPartsThanHead() { |
53 | | - assertRendering("Abc|Def|Ghi\n---|---\n1|2|3", "Abc|Def|Ghi\n---|---\n1|2|3"); |
| 60 | + assertCompact("Abc|Def|Ghi\n---|---\n1|2|3", "Abc|Def|Ghi\n---|---\n1|2|3"); |
54 | 61 | } |
55 | 62 |
|
56 | 63 | @Test |
57 | 64 | public void padding() { |
58 | | - assertRendering(" Abc | Def \n --- | --- \n 1 | 2 ", "Abc| Def\n1| 2\n"); |
| 65 | + assertCompact(" Abc | Def \n --- | --- \n 1 | 2 ", "Abc| Def\n1| 2"); |
59 | 66 | } |
60 | 67 |
|
61 | 68 | @Test |
62 | 69 | public void paddingWithCodeBlockIndentation() { |
63 | | - assertRendering("Abc|Def\n---|---\n 1|2", "Abc| Def\n1| 2\n"); |
| 70 | + assertCompact("Abc|Def\n---|---\n 1|2", "Abc| Def\n1| 2"); |
64 | 71 | } |
65 | 72 |
|
66 | 73 | @Test |
67 | 74 | public void pipesOnOutside() { |
68 | | - assertRendering("|Abc|Def|\n|---|---|\n|1|2|", "Abc| Def\n1| 2\n"); |
| 75 | + assertCompact("|Abc|Def|\n|---|---|\n|1|2|", "Abc| Def\n1| 2"); |
69 | 76 | } |
70 | 77 |
|
71 | 78 | @Test |
72 | 79 | public void inlineElements() { |
73 | | - assertRendering("*Abc*|Def\n---|---\n1|2", "Abc| Def\n1| 2\n"); |
| 80 | + assertCompact("*Abc*|Def\n---|---\n1|2", "Abc| Def\n1| 2"); |
74 | 81 | } |
75 | 82 |
|
76 | 83 | @Test |
77 | 84 | public void escapedPipe() { |
78 | | - assertRendering("Abc|Def\n---|---\n1\\|2|20", "Abc| Def\n1|2| 20\n"); |
| 85 | + assertCompact("Abc|Def\n---|---\n1\\|2|20", "Abc| Def\n1|2| 20"); |
79 | 86 | } |
80 | 87 |
|
81 | 88 | @Test |
82 | 89 | public void alignLeft() { |
83 | | - assertRendering("Abc|Def\n:---|---\n1|2", "Abc| Def\n1| 2\n"); |
| 90 | + assertCompact("Abc|Def\n:---|---\n1|2", "Abc| Def\n1| 2"); |
84 | 91 | } |
85 | 92 |
|
86 | 93 | @Test |
87 | 94 | public void alignRight() { |
88 | | - assertRendering("Abc|Def\n---:|---\n1|2", "Abc| Def\n1| 2\n"); |
| 95 | + assertCompact("Abc|Def\n---:|---\n1|2", "Abc| Def\n1| 2"); |
89 | 96 | } |
90 | 97 |
|
91 | 98 | @Test |
92 | 99 | public void alignCenter() { |
93 | | - assertRendering("Abc|Def\n:---:|---\n1|2", "Abc| Def\n1| 2\n"); |
| 100 | + assertCompact("Abc|Def\n:---:|---\n1|2", "Abc| Def\n1| 2"); |
94 | 101 | } |
95 | 102 |
|
96 | 103 | @Test |
97 | 104 | public void alignCenterSecond() { |
98 | | - assertRendering("Abc|Def\n---|:---:\n1|2", "Abc| Def\n1| 2\n"); |
| 105 | + assertCompact("Abc|Def\n---|:---:\n1|2", "Abc| Def\n1| 2"); |
99 | 106 | } |
100 | 107 |
|
101 | 108 | @Test |
102 | 109 | public void alignLeftWithSpaces() { |
103 | | - assertRendering("Abc|Def\n :--- |---\n1|2", "Abc| Def\n1| 2\n"); |
| 110 | + assertCompact("Abc|Def\n :--- |---\n1|2", "Abc| Def\n1| 2"); |
104 | 111 | } |
105 | 112 |
|
106 | 113 | @Test |
107 | 114 | public void alignmentMarkerMustBeNextToDashes() { |
108 | | - assertRendering("Abc|Def\n: ---|---", "Abc|Def\n: ---|---"); |
109 | | - assertRendering("Abc|Def\n--- :|---", "Abc|Def\n--- :|---"); |
110 | | - assertRendering("Abc|Def\n---|: ---", "Abc|Def\n---|: ---"); |
111 | | - assertRendering("Abc|Def\n---|--- :", "Abc|Def\n---|--- :"); |
| 115 | + assertCompact("Abc|Def\n: ---|---", "Abc|Def\n: ---|---"); |
| 116 | + assertCompact("Abc|Def\n--- :|---", "Abc|Def\n--- :|---"); |
| 117 | + assertCompact("Abc|Def\n---|: ---", "Abc|Def\n---|: ---"); |
| 118 | + assertCompact("Abc|Def\n---|--- :", "Abc|Def\n---|--- :"); |
112 | 119 | } |
113 | 120 |
|
114 | 121 | @Test |
115 | 122 | public void bodyCanNotHaveMoreColumnsThanHead() { |
116 | | - assertRendering("Abc|Def\n---|---\n1|2|3", "Abc| Def\n1| 2\n"); |
| 123 | + assertCompact("Abc|Def\n---|---\n1|2|3", "Abc| Def\n1| 2"); |
117 | 124 | } |
118 | 125 |
|
119 | 126 | @Test |
120 | 127 | public void bodyWithFewerColumnsThanHeadResultsInEmptyCells() { |
121 | | - assertRendering("Abc|Def|Ghi\n---|---|---\n1|2", "Abc| Def| Ghi\n1| 2| \n"); |
| 128 | + assertCompact("Abc|Def|Ghi\n---|---|---\n1|2", "Abc| Def| Ghi\n1| 2| "); |
122 | 129 | } |
123 | 130 |
|
124 | 131 | @Test |
125 | 132 | public void insideBlockQuote() { |
126 | | - assertRendering("> Abc|Def\n> ---|---\n> 1|2", "«\nAbc| Def\n1| 2\n»"); |
| 133 | + assertCompact("> Abc|Def\n> ---|---\n> 1|2", "«Abc| Def\n1| 2»"); |
127 | 134 | } |
128 | 135 |
|
129 | 136 | @Test |
130 | 137 | public void tableWithLazyContinuationLine() { |
131 | | - assertRendering("Abc|Def\n---|---\n1|2\nlazy", "Abc| Def\n1| 2\nlazy| \n"); |
| 138 | + assertCompact("Abc|Def\n---|---\n1|2\nlazy", "Abc| Def\n1| 2\nlazy| "); |
| 139 | + } |
| 140 | + |
| 141 | + @Test |
| 142 | + public void tableBetweenOtherBlocks() { |
| 143 | + var s = "Foo\n\nAbc|Def\n---|---\n1|2\n\nBar"; |
| 144 | + assertCompact(s, "Foo\nAbc| Def\n1| 2\nBar"); |
| 145 | + assertSeparate(s, "Foo\n\nAbc| Def\n1| 2\n\nBar"); |
| 146 | + assertStripped(s, "Foo Abc| Def 1| 2 Bar"); |
| 147 | + } |
| 148 | + |
| 149 | + private void assertCompact(String source, String expected) { |
| 150 | + var doc = PARSER.parse(source); |
| 151 | + var actualRendering = COMPACT_RENDERER.render(doc); |
| 152 | + Asserts.assertRendering(source, expected, actualRendering); |
| 153 | + } |
| 154 | + |
| 155 | + private void assertSeparate(String source, String expected) { |
| 156 | + var doc = PARSER.parse(source); |
| 157 | + var actualRendering = SEPARATE_RENDERER.render(doc); |
| 158 | + Asserts.assertRendering(source, expected, actualRendering); |
132 | 159 | } |
133 | 160 |
|
134 | | - @Override |
135 | | - protected String render(String source) { |
136 | | - return RENDERER.render(PARSER.parse(source)); |
| 161 | + private void assertStripped(String source, String expected) { |
| 162 | + var doc = PARSER.parse(source); |
| 163 | + var actualRendering = STRIPPED_RENDERER.render(doc); |
| 164 | + Asserts.assertRendering(source, expected, actualRendering); |
137 | 165 | } |
138 | 166 | } |
0 commit comments