You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2021/06/03 22:29:29 UTC

[maven-doxia] 01/02: [DOXIA-568] Introduce AssertJ

This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch DOXIA-568
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit a1173cc9ad00a8c5dd08ea026e35e699f0aabce2
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Sun May 30 18:06:26 2021 +0200

    [DOXIA-568] Introduce AssertJ
---
 doxia-core/pom.xml                                 |   6 +
 .../maven/doxia/parser/AbstractParserTest.java     |  17 +-
 doxia-modules/doxia-module-markdown/pom.xml        |   6 +
 .../module/markdown/MarkdownParserModuleTest.java  |   4 +-
 .../doxia/module/markdown/MarkdownParserTest.java  | 174 ++++++++++-----------
 5 files changed, 99 insertions(+), 108 deletions(-)

diff --git a/doxia-core/pom.xml b/doxia-core/pom.xml
index cbfc95d..b5285ff 100644
--- a/doxia-core/pom.xml
+++ b/doxia-core/pom.xml
@@ -86,6 +86,12 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>2.9.1</version><!-- for Java 7 projects -->
+      <scope>test</scope>
+    </dependency>
 
   </dependencies>
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTest.java
index 78d29d5..6729001 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTest.java
@@ -32,6 +32,8 @@ import java.io.Reader;
 import java.io.Writer;
 import java.util.Iterator;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * Test the parsing of sample input files.
  * <br>
@@ -115,20 +117,7 @@ public abstract class AbstractParserTest
 
     protected void assertEquals( Iterator<SinkEventElement> it, String... names )
     {
-        StringBuilder expected = new StringBuilder();
-        StringBuilder actual = new StringBuilder();
-
-        for ( String name : names )
-        {
-            expected.append( name ).append( '\n' );
-        }
-
-        while ( it.hasNext() )
-        {
-            actual.append( it.next().getName() ).append( '\n' );
-        }
-
-        assertEquals( expected.toString(), actual.toString() );
+        assertThat ( it ).extracting( "name" ).containsExactly( names );
     }
 
     protected void assertStartsWith( Iterator<SinkEventElement> it, String... names )
diff --git a/doxia-modules/doxia-module-markdown/pom.xml b/doxia-modules/doxia-module-markdown/pom.xml
index 81061bc..43e7b9e 100644
--- a/doxia-modules/doxia-module-markdown/pom.xml
+++ b/doxia-modules/doxia-module-markdown/pom.xml
@@ -76,6 +76,12 @@ under the License.
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>2.9.1</version><!-- for Java 7 projects -->
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
 
diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserModuleTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserModuleTest.java
index 4895969..c7451e8 100644
--- a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserModuleTest.java
+++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserModuleTest.java
@@ -22,6 +22,8 @@ package org.apache.maven.doxia.module.markdown;
 import org.apache.maven.doxia.parser.module.ParserModule;
 import org.codehaus.plexus.PlexusTestCase;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * Test MarkdownParserModule.
  */
@@ -46,6 +48,6 @@ public class MarkdownParserModuleTest
 
     public void testExtensions()
     {
-        assertEquals( 2, parserModule.getExtensions().length );
+        assertThat( parserModule.getExtensions() ).hasSize( 2 );
     }
 }
diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
index 11e4da5..242290f 100644
--- a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
+++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
@@ -1,10 +1,5 @@
 package org.apache.maven.doxia.module.markdown;
 
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Iterator;
-import java.util.List;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -32,6 +27,12 @@ import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 
+import java.io.IOException;
+import java.io.Reader;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * Tests for {@link MarkdownParser}.
  *
@@ -84,11 +85,10 @@ public class MarkdownParserTest
     public void testParagraphSinkEvent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "paragraph" ).getEventList().iterator();
+        List<SinkEventElement> list = parseFileToEventTestingSink( "paragraph" ).getEventList();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "body_" );
-
-        assertFalse( it.hasNext() );
+        assertThat ( list ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "text", "paragraph_", "body_" );
     }
 
     /**
@@ -101,11 +101,9 @@ public class MarkdownParserTest
     {
         //System.out.println( parseFileToHtml( "font-bold" ) );
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "font-bold" ).getEventList();
-        Iterator<SinkEventElement> it = eventList.iterator();
-
-        assertEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
 
-        assertFalse( it.hasNext() );
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
 
         SinkEventElement inline = eventList.get( 4 );
         assertEquals( "inline", inline.getName() );
@@ -123,11 +121,10 @@ public class MarkdownParserTest
     {
         //System.out.println( parseFileToHtml( "font-italic" ) );
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "font-italic" ).getEventList();
-        Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
 
-        assertFalse( it.hasNext() );
         SinkEventElement inline = eventList.get( 4 );
         assertEquals( "inline", inline.getName() );
         SinkEventAttributeSet atts = (SinkEventAttributeSet) inline.getArgs()[0];
@@ -142,13 +139,11 @@ public class MarkdownParserTest
     public void testFontMonospacedSinkEvent()
         throws Exception
     {
-        //System.out.println( parseFileToHtml( "font-monospaced" ) );
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "font-monospaced" ).getEventList();
-        Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
 
-        assertFalse( it.hasNext() );
         SinkEventElement inline = eventList.get( 4 );
         assertEquals( "inline", inline.getName() );
         SinkEventAttributeSet atts = (SinkEventAttributeSet) inline.getArgs()[0];
@@ -163,11 +158,10 @@ public class MarkdownParserTest
     public void testCodeSinkEvent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "code" ).getEventList().iterator();
-
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "code" ).getEventList();
 
-        assertFalse( it.hasNext() );
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
     }
 
     /**
@@ -179,11 +173,9 @@ public class MarkdownParserTest
         throws Exception
     {
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "fenced-code-block" ).getEventList();
-        Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
-
-        assertFalse( it.hasNext() );
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
 
         // PRE element must be a "verbatim" Sink event that specifies
         // BOXED = true
@@ -209,11 +201,10 @@ public class MarkdownParserTest
     public void testImageSinkEvent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "image" ).getEventList().iterator();
-
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "figureGraphics", "text", "paragraph_", "body_" );
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "image" ).getEventList();
 
-        assertFalse( it.hasNext() );
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "text", "figureGraphics", "text", "paragraph_", "body_" );
     }
 
     /**
@@ -224,11 +215,10 @@ public class MarkdownParserTest
     public void testLinkSinkEvent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "link" ).getEventList().iterator();
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "link" ).getEventList();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "link", "text", "link_", "text", "paragraph_", "body_" );
-
-        assertFalse( it.hasNext() );
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "text", "link", "text", "link_", "text", "paragraph_", "body_" );
     }
 
     /**
@@ -241,23 +231,20 @@ public class MarkdownParserTest
     {
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "link_rewrite" ).getEventList();
 
-        Iterator<SinkEventElement> it = eventList.iterator();
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "link", "text", "link_", "text", "link", "text",
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "text", "link", "text", "link_", "text", "link", "text",
                       "link_", "text", "paragraph_", "body_" );
 
-        assertFalse( it.hasNext() );
-
         assertEquals( "doc.html", eventList.get( 5 ).getArgs()[0] );
         assertEquals( "ftp://doc.md", eventList.get( 9 ).getArgs()[0] );
     }
 
     public void testLinkWithAnchorAndQuery() throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "link_anchor_query" ).getEventList().iterator();
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "link_anchor_query" ).getEventList();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "link", "text", "link_", "paragraph_", "body_" );
-
-        assertFalse( it.hasNext() );
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "paragraph", "link", "text", "link_", "paragraph_", "body_" );
     }
 
     /**
@@ -268,12 +255,11 @@ public class MarkdownParserTest
     public void testListSinkEvent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "list" ).getEventList().iterator();
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "list" ).getEventList();
 
-        assertEquals( it, "head", "head_", "body", "list", "text", "listItem", "text", "listItem_", "listItem", "text",
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "list", "text", "listItem", "text", "listItem_", "listItem", "text",
                       "listItem_", "text", "list_", "body_" );
-
-        assertFalse( it.hasNext() );
     }
 
     /**
@@ -284,12 +270,11 @@ public class MarkdownParserTest
     public void testNumberedListSinkEvent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "numbered-list" ).getEventList().iterator();
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "numbered-list" ).getEventList();
 
-        assertEquals( it, "head", "head_", "body", "numberedList", "text", "numberedListItem", "text", "numberedListItem_",
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "numberedList", "text", "numberedListItem", "text", "numberedListItem_",
                       "numberedListItem", "text", "numberedListItem_", "text", "numberedList_", "body_" );
-
-        assertFalse( it.hasNext() );
     }
 
     /**
@@ -301,15 +286,13 @@ public class MarkdownParserTest
         throws Exception
     {
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "metadata" ).getEventList();
-        Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "title", "text", "text", "text", "title_", "author", "text", "author_", "date", "text", "date_",
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "title", "text", "text", "text", "title_", "author", "text", "author_", "date", "text", "date_",
                       "unknown", "head_", "body", "unknown", "text", "unknown", "paragraph", "text", "paragraph_", "section1",
                       "sectionTitle1", "text", "sectionTitle1_", "paragraph", "text", "paragraph_", "section1_",
                       "body_" );
 
-        assertFalse( it.hasNext() );
-
         // Title must be "A Title & a Test"
         assertEquals( "A Title ", eventList.get( 2 ).getArgs()[0]);
         assertEquals( "&", eventList.get( 3 ).getArgs()[0]);
@@ -340,14 +323,13 @@ public class MarkdownParserTest
     public void testFirstHeadingSinkEvent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "first-heading" ).getEventList().iterator();
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "first-heading" ).getEventList();
 
         // NOTE: H1 is rendered as "unknown" and H2 is "section1" (see DOXIA-203)
-        assertEquals( it, "head", "title", "text", "title_", "head_", "body", "comment", "text",
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "title", "text", "title_", "head_", "body", "comment", "text",
                 "section1", "sectionTitle1", "text", "sectionTitle1_", "paragraph", "text",
                 "paragraph_", "section1_", "body_" );
-
-        assertFalse( it.hasNext() );
     }
 
     /**
@@ -358,13 +340,12 @@ public class MarkdownParserTest
     public void testCommentBeforeHeadingSinkEvent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "comment-before-heading" ).getEventList().iterator();
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "comment-before-heading" ).getEventList();
 
         // NOTE: H1 is rendered as "unknown" and H2 is "section1" (see DOXIA-203)
-        assertEquals( it, "head", "title", "text", "title_", "head_", "body", "comment", "text", "unknown", "text",
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "title", "text", "title_", "head_", "body", "comment", "text", "unknown", "text",
                       "unknown", "paragraph", "text", "link", "text", "link_", "text", "paragraph_", "body_" );
-
-        assertFalse( it.hasNext() );
     }
 
     /**
@@ -375,17 +356,16 @@ public class MarkdownParserTest
     public void testHtmlContent()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "html-content" ).getEventList().iterator();
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "html-content" ).getEventList();
 
         // NOTE: H1 and DIV are rendered as "unknown" and H2 is "section1" (see DOXIA-203)
-        assertEquals( it, "head", "head_", "body", "unknown", "text", "paragraph", "inline", "text",
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "head_", "body", "unknown", "text", "paragraph", "inline", "text",
                       "inline_", "text", "inline", "text", "inline_", "text", "paragraph_", "text", "unknown", "text", "horizontalRule", "unknown",
                 "text", "unknown", "paragraph", "text", "paragraph_", "text", "table", "tableRows", "text", "tableRow",
                 "tableHeaderCell", "text", "tableHeaderCell_", "tableRow_", "text", "tableRow",
                                 "tableCell", "text", "tableCell_", "tableRow_", "text", "tableRows_", "table_",
                 "body_" );
-
-        assertFalse( it.hasNext() );
     }
 
     /**
@@ -408,7 +388,7 @@ public class MarkdownParserTest
         return sink;
     }
 
-    protected String parseFileToHtml( String file ) throws ParseException, IOException
+    protected String parseFileToHtml( String file ) throws IOException
     {
         try ( Reader reader = getTestReader( file ) )
         {
@@ -416,12 +396,19 @@ public class MarkdownParserTest
         }
     }
 
+    public void testTocMacro2() throws IOException
+    {
+        String html = parseFileToHtml( "macro-toc" );
+        assertThat( html ).contains( "<!-- MACRO{toc|fromDepth=1|toDepth=2} -->" );
+    }
+
     public void testTocMacro()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "macro-toc" ).getEventList().iterator();
+        List<SinkEventElement> eventList = parseFileToEventTestingSink( "macro-toc" ).getEventList();
 
-        assertEquals( it, "head", "title", "text", "title_", "head_",
+        assertThat( eventList ).extracting( "name" ).containsExactly(
+                "head", "title", "text", "title_", "head_",
                       "body",
                       "list", // TOC start
                       "listItem", "link", "text", "link_", // emtpy section 2 TOC entry
@@ -443,28 +430,29 @@ public class MarkdownParserTest
     public void testTocMacroDoxia559()
         throws Exception
     {
-        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "macro-toc-DOXIA-559" ).getEventList().iterator();
-
-        assertEquals( it, "head", "title", "text", "title_", "head_",
-                      "body",
-                      "list", // TOC start
-                      "listItem", "link", "text", "link_", // first section 2 TOC entry
-                      "list", // sections 3 list start
-                      "listItem", "link", "text", "link_", "listItem_", // empty section 3 TOC entry
-                      "list_", // sections 3 list end
-                      "listItem_", // first section 2 TOC entry end
-                      "listItem", "link", "text", "link_", "listItem_", // second section 2 TOC entry
-                      "list_", // TOC end
-                      "text",
-                      "section1", "sectionTitle1", "text", "sectionTitle1_",
-                      "section2",
-                      "section3", "sectionTitle3", "text", "sectionTitle3_",
-                      "section3_",
-                      "section2_",
-                      "section1_",
-                      "section1", "sectionTitle1", "text", "sectionTitle1_",
-                      "section1_",
-                      "body_" );
+        List<SinkEventElement> list = parseFileToEventTestingSink( "macro-toc-DOXIA-559" ).getEventList();
+
+        assertThat( list ).extracting( "name" ).containsExactly(
+              "head", "title", "text", "title_", "head_",
+              "body",
+              "list", // TOC start
+              "listItem", "link", "text", "link_", // first section 2 TOC entry
+              "list", // sections 3 list start
+              "listItem", "link", "text", "link_", "listItem_", // empty section 3 TOC entry
+              "list_", // sections 3 list end
+              "listItem_", // first section 2 TOC entry end
+              "listItem", "link", "text", "link_", "listItem_", // second section 2 TOC entry
+              "list_", // TOC end
+              "text",
+              "section1", "sectionTitle1", "text", "sectionTitle1_",
+              "section2",
+              "section3", "sectionTitle3", "text", "sectionTitle3_",
+              "section3_",
+              "section2_",
+              "section1_",
+              "section1", "sectionTitle1", "text", "sectionTitle1_",
+              "section1_",
+              "body_" );
     }
 
     // test fix for https://github.com/vsch/flexmark-java/issues/384