44import org .commonmark .node .*;
55import org .commonmark .parser .IncludeSourceSpans ;
66import org .commonmark .parser .Parser ;
7- import org .junit .Test ;
7+ import org .junit .jupiter . api . Test ;
88
99import java .util .ArrayList ;
1010import java .util .List ;
1111import java .util .Objects ;
1212import java .util .Set ;
1313
14- import static org .junit .Assert .assertEquals ;
15- import static org .junit .Assert .assertNull ;
14+ import static org .assertj .core .api .Assertions .assertThat ;
1615
1716public class FootnotesTest {
1817
@@ -24,13 +23,13 @@ public void testDefBlockStart() {
2423 for (var s : List .of ("1" , "a" , "^" , "*" , "\\ a" , "\uD83D \uDE42 " , "&0" )) {
2524 var doc = PARSER .parse ("[^" + s + "]: footnote\n " );
2625 var def = find (doc , FootnoteDefinition .class );
27- assertEquals ( s , def .getLabel ());
26+ assertThat ( def .getLabel ()). isEqualTo ( s );
2827 }
2928
3029 for (var s : List .of ("" , " " , "a b" , "]" , "\r " , "\n " , "\t " )) {
3130 var input = "[^" + s + "]: footnote\n " ;
3231 var doc = PARSER .parse (input );
33- assertNull ( "input: " + input , tryFind ( doc , FootnoteDefinition . class ) );
32+ assertThat ( tryFind ( doc , FootnoteDefinition . class )). as ( "input: " + input ). isNull ( );
3433 }
3534 }
3635
@@ -40,33 +39,33 @@ public void testDefBlockStartInterrupts() {
4039 var doc = PARSER .parse ("test\n [^1]: footnote\n " );
4140 var paragraph = find (doc , Paragraph .class );
4241 var def = find (doc , FootnoteDefinition .class );
43- assertEquals ( "test" , ((Text ) paragraph .getLastChild ()).getLiteral ());
44- assertEquals ( "1" , def .getLabel ());
42+ assertThat ( ((Text ) paragraph .getLastChild ()).getLiteral ()). isEqualTo ( "test" );
43+ assertThat ( def .getLabel ()). isEqualTo ( "1" );
4544 }
4645
4746 @ Test
4847 public void testDefBlockStartIndented () {
4948 var doc1 = PARSER .parse (" [^1]: footnote\n " );
50- assertEquals ( "1" , find (doc1 , FootnoteDefinition .class ).getLabel ());
49+ assertThat ( find (doc1 , FootnoteDefinition .class ).getLabel ()). isEqualTo ( "1" );
5150 var doc2 = PARSER .parse (" [^1]: footnote\n " );
52- assertNull ( tryFind ( doc2 , FootnoteDefinition .class ) );
51+ assertNone ( doc2 , FootnoteDefinition .class );
5352 }
5453
5554 @ Test
5655 public void testDefMultiple () {
5756 var doc = PARSER .parse ("[^1]: foo\n [^2]: bar\n " );
5857 var defs = findAll (doc , FootnoteDefinition .class );
59- assertEquals ( "1" , defs .get (0 ).getLabel ());
60- assertEquals ( "2" , defs .get (1 ).getLabel ());
58+ assertThat ( defs .get (0 ).getLabel ()). isEqualTo ( "1" );
59+ assertThat ( defs .get (1 ).getLabel ()). isEqualTo ( "2" );
6160 }
6261
6362 @ Test
6463 public void testDefBlockStartAfterLinkReferenceDefinition () {
6564 var doc = PARSER .parse ("[foo]: /url\n [^1]: footnote\n " );
6665 var linkReferenceDef = find (doc , LinkReferenceDefinition .class );
6766 var footnotesDef = find (doc , FootnoteDefinition .class );
68- assertEquals ( "foo" , linkReferenceDef .getLabel ());
69- assertEquals ( "1" , footnotesDef .getLabel ());
67+ assertThat ( linkReferenceDef .getLabel ()). isEqualTo ( "foo" );
68+ assertThat ( footnotesDef .getLabel ()). isEqualTo ( "1" );
7069 }
7170
7271 @ Test
@@ -90,14 +89,14 @@ public void testDefContainsIndentedCodeBlock() {
9089 var doc = PARSER .parse ("[^1]:\n code\n " );
9190 var def = find (doc , FootnoteDefinition .class );
9291 var codeBlock = (IndentedCodeBlock ) def .getFirstChild ();
93- assertEquals ( "code \n " , codeBlock .getLiteral ());
92+ assertThat ( codeBlock .getLiteral ()). isEqualTo ( "code \n " );
9493 }
9594
9695 @ Test
9796 public void testDefContainsMultipleLines () {
9897 var doc = PARSER .parse ("[^1]: footnote\n still\n " );
9998 var def = find (doc , FootnoteDefinition .class );
100- assertEquals ( "1" , def .getLabel ());
99+ assertThat ( def .getLabel ()). isEqualTo ( "1" );
101100 var paragraph = (Paragraph ) def .getFirstChild ();
102101 assertText ("footnote" , paragraph .getFirstChild ());
103102 assertText ("still" , paragraph .getLastChild ());
@@ -107,7 +106,7 @@ public void testDefContainsMultipleLines() {
107106 public void testDefContainsList () {
108107 var doc = PARSER .parse ("[^1]: - foo\n - bar\n " );
109108 var def = find (doc , FootnoteDefinition .class );
110- assertEquals ( "1" , def .getLabel ());
109+ assertThat ( def .getLabel ()). isEqualTo ( "1" );
111110 var list = (BulletList ) def .getFirstChild ();
112111 var item1 = (ListItem ) list .getFirstChild ();
113112 var item2 = (ListItem ) list .getLastChild ();
@@ -120,54 +119,54 @@ public void testDefInterruptedByOthers() {
120119 var doc = PARSER .parse ("[^1]: footnote\n # Heading\n " );
121120 var def = find (doc , FootnoteDefinition .class );
122121 var heading = find (doc , Heading .class );
123- assertEquals ( "1" , def .getLabel ());
122+ assertThat ( def .getLabel ()). isEqualTo ( "1" );
124123 assertText ("Heading" , heading .getFirstChild ());
125124 }
126125
127126 @ Test
128127 public void testReference () {
129128 var doc = PARSER .parse ("Test [^foo]\n \n [^foo]: /url\n " );
130129 var ref = find (doc , FootnoteReference .class );
131- assertEquals ( "foo" , ref .getLabel ());
130+ assertThat ( ref .getLabel ()). isEqualTo ( "foo" );
132131 }
133132
134133 @ Test
135134 public void testReferenceNoDefinition () {
136135 var doc = PARSER .parse ("Test [^foo]\n " );
137- assertNull ( tryFind ( doc , FootnoteReference .class ) );
136+ assertNone ( doc , FootnoteReference .class );
138137 }
139138
140139 @ Test
141140 public void testRefWithEmphasisInside () {
142141 // No emphasis inside footnote reference, should just be treated as text
143142 var doc = PARSER .parse ("Test [^*foo*]\n \n [^*foo*]: def\n " );
144143 var ref = find (doc , FootnoteReference .class );
145- assertEquals ( "*foo*" , ref .getLabel ());
146- assertNull (ref .getFirstChild ());
144+ assertThat ( ref .getLabel ()). isEqualTo ( "*foo*" );
145+ assertThat (ref .getFirstChild ()). isNull ( );
147146 var paragraph = doc .getFirstChild ();
148147 var text = (Text ) paragraph .getFirstChild ();
149- assertEquals ( "Test " , text .getLiteral ());
150- assertEquals ( ref , text .getNext ());
151- assertEquals ( ref , paragraph .getLastChild ());
148+ assertThat ( text .getLiteral ()). isEqualTo ( "Test " );
149+ assertThat ( text .getNext ()). isEqualTo ( ref );
150+ assertThat ( paragraph .getLastChild ()). isEqualTo ( ref );
152151 }
153152
154153 @ Test
155154 public void testRefWithEmphasisAround () {
156155 // Emphasis around footnote reference, the * inside needs to be removed from emphasis processing
157156 var doc = PARSER .parse ("Test *abc [^foo*] def*\n \n [^foo*]: def\n " );
158157 var ref = find (doc , FootnoteReference .class );
159- assertEquals ( "foo*" , ref .getLabel ());
158+ assertThat ( ref .getLabel ()). isEqualTo ( "foo*" );
160159 assertText ("abc " , ref .getPrevious ());
161160 assertText (" def" , ref .getNext ());
162161 var em = find (doc , Emphasis .class );
163- assertEquals ( em , ref .getParent ());
162+ assertThat ( ref .getParent ()). isEqualTo ( em );
164163 }
165164
166165 @ Test
167166 public void testRefAfterBang () {
168167 var doc = PARSER .parse ("Test![^foo]\n \n [^foo]: def\n " );
169168 var ref = find (doc , FootnoteReference .class );
170- assertEquals ( "foo" , ref .getLabel ());
169+ assertThat ( ref .getLabel ()). isEqualTo ( "foo" );
171170 var paragraph = doc .getFirstChild ();
172171 assertText ("Test!" , paragraph .getFirstChild ());
173172 }
@@ -178,7 +177,7 @@ public void testRefAsLabelOnly() {
178177 // resolve as footnotes. If `[foo][^bar]` fails to parse as a bracket, `[^bar]` by itself needs to be tried.
179178 var doc = PARSER .parse ("Test [foo][^bar]\n \n [^bar]: footnote\n " );
180179 var ref = find (doc , FootnoteReference .class );
181- assertEquals ( "bar" , ref .getLabel ());
180+ assertThat ( ref .getLabel ()). isEqualTo ( "bar" );
182181 var paragraph = doc .getFirstChild ();
183182 assertText ("Test [foo]" , paragraph .getFirstChild ());
184183 }
@@ -188,7 +187,7 @@ public void testRefWithEmptyLabel() {
188187 // [^bar] is a footnote but [] is just text, because collapsed reference links don't resolve as footnotes
189188 var doc = PARSER .parse ("Test [^bar][]\n \n [^bar]: footnote\n " );
190189 var ref = find (doc , FootnoteReference .class );
191- assertEquals ( "bar" , ref .getLabel ());
190+ assertThat ( ref .getLabel ()). isEqualTo ( "bar" );
192191 var paragraph = doc .getFirstChild ();
193192 assertText ("Test " , paragraph .getFirstChild ());
194193 assertText ("[]" , paragraph .getLastChild ());
@@ -198,38 +197,38 @@ public void testRefWithEmptyLabel() {
198197 public void testRefWithBracket () {
199198 // Not a footnote, [ needs to be escaped
200199 var doc = PARSER .parse ("Test [^f[oo]\n \n [^f[oo]: /url\n " );
201- assertNull ( tryFind ( doc , FootnoteReference .class ) );
200+ assertNone ( doc , FootnoteReference .class );
202201 }
203202
204203 @ Test
205204 public void testRefWithBackslash () {
206205 var doc = PARSER .parse ("[^\\ foo]\n \n [^\\ foo]: note\n " );
207206 var ref = find (doc , FootnoteReference .class );
208- assertEquals ( " \\ foo" , ref .getLabel ());
207+ assertThat ( ref .getLabel ()). isEqualTo ( " \\ foo" );
209208 var def = find (doc , FootnoteDefinition .class );
210- assertEquals ( " \\ foo" , def .getLabel ());
209+ assertThat ( def .getLabel ()). isEqualTo ( " \\ foo" );
211210 }
212211
213212 @ Test
214213 public void testPreferInlineLink () {
215214 var doc = PARSER .parse ("Test [^bar](/url)\n \n [^bar]: footnote\n " );
216- assertNull ( tryFind ( doc , FootnoteReference .class ) );
215+ assertNone ( doc , FootnoteReference .class );
217216 }
218217
219218 @ Test
220219 public void testPreferReferenceLink () {
221220 // This is tricky because `[^*foo*][foo]` is a valid link already. If `[foo]` was not defined, the first bracket
222221 // would be a footnote.
223222 var doc = PARSER .parse ("Test [^*foo*][foo]\n \n [^*foo*]: /url\n \n [foo]: /url" );
224- assertNull ( tryFind ( doc , FootnoteReference .class ) );
223+ assertNone ( doc , FootnoteReference .class );
225224 }
226225
227226 @ Test
228227 public void testReferenceLinkWithoutDefinition () {
229228 // Similar to previous test but there's no definition
230229 var doc = PARSER .parse ("Test [^*foo*][foo]\n \n [^*foo*]: def\n " );
231230 var ref = find (doc , FootnoteReference .class );
232- assertEquals ( "*foo*" , ref .getLabel ());
231+ assertThat ( ref .getLabel ()). isEqualTo ( "*foo*" );
233232 var paragraph = (Paragraph ) doc .getFirstChild ();
234233 assertText ("Test " , paragraph .getFirstChild ());
235234 assertText ("[foo]" , paragraph .getLastChild ());
@@ -249,12 +248,12 @@ public void testInlineFootnote() {
249248
250249 {
251250 var doc = parser .parse ("Test \\ ^[not inline footnote]" );
252- assertNull ( tryFind ( doc , InlineFootnote .class ) );
251+ assertNone ( doc , InlineFootnote .class );
253252 }
254253
255254 {
256255 var doc = parser .parse ("Test ^[not inline footnote" );
257- assertNull ( tryFind ( doc , InlineFootnote .class ) );
256+ assertNone ( doc , InlineFootnote .class );
258257 var t = doc .getFirstChild ().getFirstChild ();
259258 assertText ("Test ^[not inline footnote" , t );
260259 }
@@ -269,15 +268,15 @@ public void testInlineFootnote() {
269268 var fn = find (doc , InlineFootnote .class );
270269 assertText ("test " , fn .getFirstChild ());
271270 var code = fn .getFirstChild ().getNext ();
272- assertEquals ( "bla]" , ((Code ) code ).getLiteral ());
271+ assertThat ( ((Code ) code ).getLiteral ()). isEqualTo ( "bla]" );
273272 }
274273
275274 {
276275 var doc = parser .parse ("^[with a [link](url)]" );
277276 var fn = find (doc , InlineFootnote .class );
278277 assertText ("with a " , fn .getFirstChild ());
279278 var link = fn .getFirstChild ().getNext ();
280- assertEquals ( "url" , ((Link ) link ).getDestination ());
279+ assertThat ( ((Link ) link ).getDestination ()). isEqualTo ( "url" );
281280 }
282281 }
283282
@@ -287,10 +286,14 @@ public void testSourcePositions() {
287286
288287 var doc = parser .parse ("Test [^foo]\n \n [^foo]: /url\n " );
289288 var ref = find (doc , FootnoteReference .class );
290- assertEquals (ref .getSourceSpans (), List .of (SourceSpan .of (0 , 5 , 5 , 6 )));
289+ assertThat (ref .getSourceSpans ()). isEqualTo ( List .of (SourceSpan .of (0 , 5 , 5 , 6 )));
291290
292291 var def = find (doc , FootnoteDefinition .class );
293- assertEquals (def .getSourceSpans (), List .of (SourceSpan .of (2 , 0 , 13 , 12 )));
292+ assertThat (def .getSourceSpans ()).isEqualTo (List .of (SourceSpan .of (2 , 0 , 13 , 12 )));
293+ }
294+
295+ private static void assertNone (Node parent , Class <?> nodeClass ) {
296+ assertThat (tryFind (parent , nodeClass )).as (() -> "Node " + parent + " containing " + nodeClass ).isNull ();
294297 }
295298
296299 private static <T > T find (Node parent , Class <T > nodeClass ) {
@@ -315,6 +318,6 @@ private static <T> List<T> findAll(Node parent, Class<T> nodeClass) {
315318
316319 private static void assertText (String expected , Node node ) {
317320 var text = (Text ) node ;
318- assertEquals ( expected , text .getLiteral ());
321+ assertThat ( text .getLiteral ()). isEqualTo ( expected );
319322 }
320323}
0 commit comments