Author: epunzalan
Date: Wed Apr 12 00:30:54 2006
New Revision: 393405

URL: http://svn.apache.org/viewcvs?rev=393405&view=rev
Log:
PR: MPIR-43

Promoted inner class listener to a separate class so I can add unit tests for 
it. Also, disabled the other httpunit tests which fails.

Added:
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/ReportResolutionListener.java
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/ReportResolutionListenerTest.java
Modified:
    maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java

Modified: maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml?rev=393405&r1=393404&r2=393405&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml Wed Apr 12 
00:30:54 2006
@@ -27,7 +27,11 @@
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
-          <skip>true</skip>
+          <excludes>
+            <exclude>**/Abstract*Test.java</exclude>
+            <exclude>**/Abstract*TestCase.java</exclude>
+            <exclude>**/*ReportTest.java</exclude>
+          </excludes>
         </configuration>
       </plugin>
     </plugins>

Modified: 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java?rev=393405&r1=393404&r2=393405&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
 (original)
+++ 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
 Wed Apr 12 00:30:54 2006
@@ -23,7 +23,6 @@
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.artifact.resolver.ResolutionListener;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.doxia.sink.Sink;
@@ -572,248 +571,4 @@
 
     }
 
-    private class ReportResolutionListener
-        implements ResolutionListener
-    {
-        private Map directDep = new HashMap();
-
-        private Map transitiveDep = new HashMap();
-
-        private Map replacedDep = new HashMap();
-
-        private List parents = new ArrayList();
-
-        private Map depTree = new HashMap();
-
-        private Map depMap = new HashMap();
-
-        private Map depthMap = new HashMap();
-
-        public void testArtifact( Artifact node )
-        {
-
-        }
-
-        public void startProcessChildren( Artifact artifact )
-        {
-            parents.add( artifact );
-        }
-
-        public void endProcessChildren( Artifact artifact )
-        {
-            parents.remove( artifact );
-        }
-
-        public void includeArtifact( Artifact artifact )
-        {
-            addToDepMap( artifact );
-
-            if ( depthMap.containsKey( artifact.getId() ) )
-            {
-                Integer depth = (Integer) depthMap.get( artifact.getId() );
-                if ( depth.intValue() <= parents.size() )
-                {
-                    return;
-                }
-            }
-
-            //remove from tree the artifact which is farther down the 
dependency trail
-            removeFromDepTree( artifact );
-
-            depthMap.put( artifact.getId(), new Integer( parents.size() ) );
-
-            addDependency( artifact );
-
-            addToDepTree( artifact );
-        }
-
-        private void removeFromDepTree( Artifact artifact )
-        {
-            for ( Iterator artifactDeps = depTree.values().iterator(); 
artifactDeps.hasNext(); )
-            {
-                List depList = (List) artifactDeps.next();
-                for ( Iterator artifacts = depList.iterator(); 
artifacts.hasNext(); )
-                {
-                    Artifact dep = (Artifact) artifacts.next();
-
-                    if ( dep.getId().equals( artifact.getId() ) )
-                    {
-                        depList.remove( dep );
-                        break;
-                    }
-                }
-            }
-        }
-
-        private void addToDepTree( Artifact artifact )
-        {
-            if ( parents.size() > 0 )
-            {
-                Artifact parent = (Artifact) parents.get( parents.size() - 1 );
-
-                if ( depTree.containsKey( parent.getId() ) )
-                {
-                    List deps = (List) depTree.get( parent.getId() );
-
-                    deps.add( artifact );
-                }
-                else
-                {
-                    List deps = new ArrayList();
-                    deps.add( artifact );
-                    depTree.put( parent.getId(), deps );
-                }
-            }
-        }
-
-        private void addToDepMap( Artifact artifact )
-        {
-            if ( parents.size() > 0 )
-            {
-                Artifact parent = (Artifact) parents.get( parents.size() - 1 );
-
-                if ( depMap.containsKey( parent.getId() ) )
-                {
-                    List deps = (List) depMap.get( parent.getId() );
-
-                    deps.add( artifact );
-                }
-                else
-                {
-                    List deps = new ArrayList();
-                    deps.add( artifact );
-                    depMap.put( parent.getId(), deps );
-                }
-            }
-        }
-
-        public void omitForNearer( Artifact omitted, Artifact kept )
-        {
-            String key = omitted.getId();
-
-            replacedDep.put( key, omitted );
-
-            if ( directDep.containsKey( key ) )
-            {
-                directDep.remove( key );
-            }
-            else if ( transitiveDep.containsKey( key ) )
-            {
-                transitiveDep.remove( key );
-            }
-
-            addDependency( kept );
-        }
-
-        private void addDependency( Artifact artifact )
-        {
-            if ( parents.size() == 0 )
-            {
-                //do nothing... artifact is current project
-            }
-            else if ( parents.size() == 1 )
-            {
-                if ( !directDep.containsKey( artifact.getId() ) )
-                {
-                    if ( artifact.getScope() == null )
-                    {
-                        artifact.setScope( Artifact.SCOPE_COMPILE );
-                    }
-                    directDep.put( artifact.getId(), artifact );
-                }
-            }
-            else
-            {
-                if ( !transitiveDep.containsKey( artifact.getId() ) )
-                {
-                    if ( artifact.getScope() == null )
-                    {
-                        Artifact parent = (Artifact) parents.get(  
parents.size() - 1 );
-
-                        artifact.setScope( parent.getScope() );
-                    }
-
-                    transitiveDep.put( artifact.getId(), artifact );
-                }
-            }
-        }
-
-        public void updateScope( Artifact artifact, String scope )
-        {
-            if ( directDep.containsKey( artifact.getId() ) )
-            {
-                Artifact depArtifact = (Artifact) directDep.get( 
artifact.getId() );
-
-                depArtifact.setScope( scope );
-            }
-
-            if ( transitiveDep.containsKey( artifact.getId() ) )
-            {
-                Artifact depArtifact = (Artifact) transitiveDep.get( 
artifact.getId() );
-
-                depArtifact.setScope( scope );
-            }
-        }
-
-        public void manageArtifact( Artifact artifact, Artifact replacement )
-        {
-            omitForNearer( artifact, replacement );
-        }
-
-        public void omitForCycle( Artifact artifact )
-        {
-            replacedDep.put( artifact.getId(), artifact );
-        }
-
-        public void updateScopeCurrentPom( Artifact artifact, String scope )
-        {
-            updateScope( artifact, scope );
-        }
-
-        public void selectVersionFromRange( Artifact artifact )
-        {
-
-        }
-
-        public void restrictRange( Artifact artifact, Artifact replacement, 
VersionRange newRange )
-        {
-
-        }
-
-        public Set getArtifacts()
-        {
-            Set all = new HashSet();
-
-            all.addAll( directDep.values() );
-
-            all.addAll( transitiveDep.values() );
-
-            return all;
-        }
-
-        public Map getTransitiveDependencies()
-        {
-            return Collections.unmodifiableMap( transitiveDep );
-        }
-
-        public Map getDirectDependencies()
-        {
-            return Collections.unmodifiableMap( directDep );
-        }
-
-        public Map getOmittedArtifacts()
-        {
-            return Collections.unmodifiableMap( replacedDep );
-        }
-
-        public Map getDepTree()
-        {
-            return depTree;
-        }
-
-        public Map getDepMap()
-        {
-            return depMap;
-        }
-    }
 }

Added: 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/ReportResolutionListener.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/ReportResolutionListener.java?rev=393405&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/ReportResolutionListener.java
 (added)
+++ 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/ReportResolutionListener.java
 Wed Apr 12 00:30:54 2006
@@ -0,0 +1,278 @@
+package org.apache.maven.report.projectinfo;
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.artifact.resolver.ResolutionListener;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.VersionRange;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Collections;
+
+/**
+ * @author Edwin Punzalan
+ */
+public class ReportResolutionListener
+    implements ResolutionListener
+{
+    private Map directDep = new HashMap();
+
+    private Map transitiveDep = new HashMap();
+
+    private Map replacedDep = new HashMap();
+
+    private List parents = new ArrayList();
+
+    private Map depTree = new HashMap();
+
+    private Map depMap = new HashMap();
+
+    private Map depthMap = new HashMap();
+
+    public void testArtifact( Artifact node )
+    {
+
+    }
+
+    public void startProcessChildren( Artifact artifact )
+    {
+        parents.add( artifact );
+    }
+
+    public void endProcessChildren( Artifact artifact )
+    {
+        parents.remove( artifact );
+    }
+
+    public void includeArtifact( Artifact artifact )
+    {
+        addToDepMap( artifact );
+
+        if ( depthMap.containsKey( artifact.getId() ) )
+        {
+            Integer depth = (Integer) depthMap.get( artifact.getId() );
+            if ( depth.intValue() <= parents.size() )
+            {
+                return;
+            }
+        }
+
+        //remove from tree the artifact which is farther down the dependency 
trail
+        removeFromDepTree( artifact );
+
+        depthMap.put( artifact.getId(), new Integer( parents.size() ) );
+
+        addDependency( artifact );
+
+        addToDepTree( artifact );
+    }
+
+    private void removeFromDepTree( Artifact artifact )
+    {
+        for ( Iterator artifactDeps = depTree.values().iterator(); 
artifactDeps.hasNext(); )
+        {
+            List depList = (List) artifactDeps.next();
+            for ( Iterator artifacts = depList.iterator(); 
artifacts.hasNext(); )
+            {
+                Artifact dep = (Artifact) artifacts.next();
+
+                if ( dep.getId().equals( artifact.getId() ) )
+                {
+                    depList.remove( dep );
+                    break;
+                }
+            }
+        }
+    }
+
+    private void addToDepTree( Artifact artifact )
+    {
+        if ( parents.size() > 0 )
+        {
+            Artifact parent = (Artifact) parents.get( parents.size() - 1 );
+
+            if ( depTree.containsKey( parent.getId() ) )
+            {
+                List deps = (List) depTree.get( parent.getId() );
+
+                deps.add( artifact );
+            }
+            else
+            {
+                List deps = new ArrayList();
+                deps.add( artifact );
+                depTree.put( parent.getId(), deps );
+            }
+        }
+    }
+
+    private void addToDepMap( Artifact artifact )
+    {
+        if ( parents.size() > 0 )
+        {
+            Artifact parent = (Artifact) parents.get( parents.size() - 1 );
+
+            if ( depMap.containsKey( parent.getId() ) )
+            {
+                List deps = (List) depMap.get( parent.getId() );
+
+                deps.add( artifact );
+            }
+            else
+            {
+                List deps = new ArrayList();
+                deps.add( artifact );
+                depMap.put( parent.getId(), deps );
+            }
+        }
+    }
+
+    public void omitForNearer( Artifact omitted, Artifact kept )
+    {
+        String key = omitted.getId();
+
+        replacedDep.put( key, omitted );
+
+        if ( directDep.containsKey( key ) )
+        {
+            directDep.remove( key );
+        }
+        else if ( transitiveDep.containsKey( key ) )
+        {
+            transitiveDep.remove( key );
+        }
+
+        addDependency( kept );
+    }
+
+    private void addDependency( Artifact artifact )
+    {
+        if ( parents.size() == 0 )
+        {
+            //do nothing... artifact is current project
+        }
+        else if ( parents.size() == 1 )
+        {
+            if ( !directDep.containsKey( artifact.getId() ) )
+            {
+                if ( artifact.getScope() == null )
+                {
+                    artifact.setScope( Artifact.SCOPE_COMPILE );
+                }
+                directDep.put( artifact.getId(), artifact );
+            }
+        }
+        else
+        {
+            if ( !transitiveDep.containsKey( artifact.getId() ) )
+            {
+                if ( artifact.getScope() == null )
+                {
+                    Artifact parent = (Artifact) parents.get(  parents.size() 
- 1 );
+
+                    artifact.setScope( parent.getScope() );
+                }
+
+                transitiveDep.put( artifact.getId(), artifact );
+            }
+        }
+    }
+
+    public void updateScope( Artifact artifact, String scope )
+    {
+        if ( directDep.containsKey( artifact.getId() ) )
+        {
+            Artifact depArtifact = (Artifact) directDep.get( artifact.getId() 
);
+
+            depArtifact.setScope( scope );
+        }
+
+        if ( transitiveDep.containsKey( artifact.getId() ) )
+        {
+            Artifact depArtifact = (Artifact) transitiveDep.get( 
artifact.getId() );
+
+            depArtifact.setScope( scope );
+        }
+    }
+
+    public void manageArtifact( Artifact artifact, Artifact replacement )
+    {
+        omitForNearer( artifact, replacement );
+    }
+
+    public void omitForCycle( Artifact artifact )
+    {
+        replacedDep.put( artifact.getId(), artifact );
+    }
+
+    public void updateScopeCurrentPom( Artifact artifact, String scope )
+    {
+        updateScope( artifact, scope );
+    }
+
+    public void selectVersionFromRange( Artifact artifact )
+    {
+
+    }
+
+    public void restrictRange( Artifact artifact, Artifact replacement, 
VersionRange newRange )
+    {
+
+    }
+
+    public Set getArtifacts()
+    {
+        Set all = new HashSet();
+
+        all.addAll( directDep.values() );
+
+        all.addAll( transitiveDep.values() );
+
+        return all;
+    }
+
+    public Map getTransitiveDependencies()
+    {
+        return Collections.unmodifiableMap( transitiveDep );
+    }
+
+    public Map getDirectDependencies()
+    {
+        return Collections.unmodifiableMap( directDep );
+    }
+
+    public Map getOmittedArtifacts()
+    {
+        return Collections.unmodifiableMap( replacedDep );
+    }
+
+    public Map getDepTree()
+    {
+        return depTree;
+    }
+
+    public Map getDepMap()
+    {
+        return depMap;
+    }
+}

Added: 
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/ReportResolutionListenerTest.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/ReportResolutionListenerTest.java?rev=393405&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/ReportResolutionListenerTest.java
 (added)
+++ 
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/ReportResolutionListenerTest.java
 Wed Apr 12 00:30:54 2006
@@ -0,0 +1,308 @@
+package org.apache.maven.report.projectinfo;
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.handler.DefaultArtifactHandler;
+import org.apache.maven.artifact.versioning.VersionRange;
+
+import java.util.Set;
+import java.util.Map;
+import java.util.List;
+
+/**
+ * @author Edwin Punzalan
+ */
+public class ReportResolutionListenerTest
+    extends TestCase
+{
+    private ReportResolutionListener listener;
+
+    public void testSimpleDependencyTree()
+    {
+        Artifact projectArtifact = createArtifact( "test-project", 
"project-artifact", "1.0" );
+
+        listener.startProcessChildren( projectArtifact );
+
+        Artifact depArtifact01 = createArtifact( "test-dep", "dependency-one", 
"1.0" );
+        listener.includeArtifact( depArtifact01 );
+
+        Artifact depArtifact02 = createArtifact( "test-dep", "dependency-two", 
"1.0" );
+        listener.includeArtifact( depArtifact02 );
+
+        Artifact depArtifact03 = createArtifact( "test-dep", 
"dependency-three", "1.0" );
+        listener.includeArtifact( depArtifact03 );
+
+        listener.endProcessChildren( projectArtifact );
+
+        Set artifacts = listener.getArtifacts();
+        assertEquals( "Test total artifacts", 3, artifacts.size() );
+        assertTrue( "Test dependency one", artifacts.contains( depArtifact01 ) 
);
+        assertTrue( "Test dependency two", artifacts.contains( depArtifact02 ) 
);
+        assertTrue( "Test dependency three", artifacts.contains( depArtifact03 
) );
+
+        Map depMap = listener.getDepMap();
+        assertEquals( "Test total artifacts in dependency map", 1, 
depMap.size() );
+        assertTrue( "Test dependency map key", depMap.containsKey( 
projectArtifact.getId() ) );
+        List dependencies = (List) depMap.get( projectArtifact.getId() );
+        assertEquals( "Test dependency total", 3, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact01 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact02 ) );
+        assertTrue( "Test dependency content 3", dependencies.contains( 
depArtifact03 ) );
+
+        Map depTree = listener.getDepTree();
+        assertEquals( "Test total artifacts in dependency map", 1, 
depTree.size() );
+        assertTrue( "Test dependency map key", depTree.containsKey( 
projectArtifact.getId() ) );
+        dependencies = (List) depTree.get( projectArtifact.getId() );
+        assertEquals( "Test dependency total", 3, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact01 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact02 ) );
+        assertTrue( "Test dependency content 3", dependencies.contains( 
depArtifact03 ) );
+
+        Map directDeps = listener.getDirectDependencies();
+        assertEquals( "Test total direct dependencies", 3, directDeps.size() );
+        assertTrue( "Test dependency content 1", directDeps.containsValue( 
depArtifact01 ) );
+        assertTrue( "Test dependency content 2", directDeps.containsValue( 
depArtifact02 ) );
+        assertTrue( "Test dependency content 3", directDeps.containsValue( 
depArtifact03 ) );
+
+        Map omittedDeps = listener.getOmittedArtifacts();
+        assertEquals( "Test total omitted dependencies", 0, omittedDeps.size() 
);
+
+        Map transDeps = listener.getTransitiveDependencies();
+        assertEquals( "Test total transitive dependencies", 0, 
transDeps.size() );
+    }
+
+    public void testSimpleDepTreeWithTransitiveDeps()
+    {
+        Artifact projectArtifact = createArtifact( "test-project", 
"project-artifact", "1.0" );
+
+        listener.startProcessChildren( projectArtifact );
+
+        Artifact depArtifact1 = createArtifact( "test-dep", "dependency-one", 
"1.0" );
+        listener.includeArtifact( depArtifact1 );
+
+            listener.startProcessChildren( depArtifact1 );
+
+            Artifact depArtifact01 = createArtifact( "test-dep", 
"dependency-zero-one", "1.0" );
+            listener.includeArtifact( depArtifact01 );
+
+            Artifact depArtifact02 = createArtifact( "test-dep", 
"dependency-zero-two", "1.0" );
+            listener.includeArtifact( depArtifact02 );
+
+            listener.endProcessChildren( depArtifact1 );
+
+
+        Artifact depArtifact2 = createArtifact( "test-dep", "dependency-two", 
"1.0" );
+        listener.includeArtifact( depArtifact2 );
+
+        Artifact depArtifact3 = createArtifact( "test-dep", 
"dependency-three", "1.0" );
+        listener.includeArtifact( depArtifact3 );
+
+        listener.endProcessChildren( projectArtifact );
+
+        Set artifacts = listener.getArtifacts();
+        assertEquals( "Test total artifacts", 5, artifacts.size() );
+        assertTrue( "Test dependency one", artifacts.contains( depArtifact1 ) 
);
+        assertTrue( "Test dependency two", artifacts.contains( depArtifact2 ) 
);
+        assertTrue( "Test dependency three", artifacts.contains( depArtifact3 
) );
+        assertTrue( "Test dependency four", artifacts.contains( depArtifact01 
) );
+        assertTrue( "Test dependency five", artifacts.contains( depArtifact02 
) );
+
+        Map depMap = listener.getDepMap();
+        assertEquals( "Test total artifacts in dependency map", 2, 
depMap.size() );
+        assertTrue( "Test dependency map key", depMap.containsKey( 
projectArtifact.getId() ) );
+        List dependencies = (List) depMap.get( projectArtifact.getId() );
+        assertEquals( "Test dependency total", 3, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact1 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact2 ) );
+        assertTrue( "Test dependency content 3", dependencies.contains( 
depArtifact3 ) );
+        assertTrue( "Test dependency map key", depMap.containsKey( 
projectArtifact.getId() ) );
+        dependencies = (List) depMap.get( depArtifact1.getId() );
+        assertEquals( "Test dependency total", 2, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact01 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact02 ) );
+
+        Map depTree = listener.getDepTree();
+        assertEquals( "Test total artifacts in dependency map", 2, 
depTree.size() );
+        assertTrue( "Test dependency map key", depTree.containsKey( 
projectArtifact.getId() ) );
+        dependencies = (List) depTree.get( projectArtifact.getId() );
+        assertEquals( "Test dependency total", 3, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact1 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact2 ) );
+        assertTrue( "Test dependency content 3", dependencies.contains( 
depArtifact3 ) );
+        assertTrue( "Test dependency map key", depTree.containsKey( 
depArtifact1.getId() ) );
+        dependencies = (List) depTree.get( depArtifact1.getId() );
+        assertEquals( "Test dependency total", 2, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact01 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact02 ) );
+
+        Map directDeps = listener.getDirectDependencies();
+        assertEquals( "Test total direct dependencies", 3, directDeps.size() );
+        assertTrue( "Test dependency content 1", directDeps.containsValue( 
depArtifact1 ) );
+        assertTrue( "Test dependency content 2", directDeps.containsValue( 
depArtifact2 ) );
+        assertTrue( "Test dependency content 3", directDeps.containsValue( 
depArtifact3 ) );
+
+        Map omittedDeps = listener.getOmittedArtifacts();
+        assertEquals( "Test total omitted dependencies", 0, omittedDeps.size() 
);
+
+        Map transDeps = listener.getTransitiveDependencies();
+        assertEquals( "Test total transitive dependencies", 2, 
transDeps.size() );
+        assertTrue( "Test transitive dependency 1", transDeps.containsValue( 
depArtifact01 ) );
+        assertTrue( "Test transitive dependency 1", transDeps.containsValue( 
depArtifact02 ) );
+    }
+
+    public void testComplexDependencyTree()
+    {
+        Artifact projectArtifact = createArtifact( "test-project", 
"project-artifact", "1.0" );
+
+        listener.startProcessChildren( projectArtifact );
+
+        Artifact depArtifact1 = createArtifact( "test-dep", "dependency-one", 
"1.0", Artifact.SCOPE_COMPILE );
+        listener.includeArtifact( depArtifact1 );
+
+            listener.startProcessChildren( depArtifact1 );
+
+            Artifact depArtifact11 = createArtifact( "test-dep", 
"dependency-zero-one", "1.0" );
+            listener.includeArtifact( depArtifact11 );
+
+            Artifact depArtifact12 = createArtifact( "test-dep", 
"dependency-zero-two", "1.0" );
+            listener.includeArtifact( depArtifact12 );
+
+                listener.startProcessChildren( depArtifact12 );
+
+                Artifact depArtifact121 = createArtifact( "test-dep", 
"dep-zero-two-1", "1.0" );
+                listener.includeArtifact( depArtifact121 );
+
+                listener.endProcessChildren( depArtifact12 );
+
+            listener.endProcessChildren( depArtifact1 );
+
+
+        Artifact depArtifact2 = createArtifact( "test-dep", "dependency-two", 
"1.0", Artifact.SCOPE_TEST );
+        listener.includeArtifact( depArtifact2 );
+
+            listener.startProcessChildren( depArtifact2 );
+
+            Artifact depArtifact21 = createArtifact( "test-dep", 
"dep-zero-two-1", "1.0" );
+            listener.includeArtifact( depArtifact21 );
+            listener.omitForNearer( depArtifact121, depArtifact21 );
+            listener.updateScope( depArtifact121, Artifact.SCOPE_TEST );
+
+            listener.endProcessChildren( depArtifact2 );
+
+        Artifact depArtifact3 = createArtifact( "test-dep", 
"dependency-three", "1.0", Artifact.SCOPE_COMPILE );
+        listener.includeArtifact( depArtifact3 );
+
+        listener.endProcessChildren( projectArtifact );
+
+        Set artifacts = listener.getArtifacts();
+        assertEquals( "Test total artifacts", 6, artifacts.size() );
+        assertTrue( "Test dependency one", artifacts.contains( depArtifact1 ) 
);
+        assertTrue( "Test dependency two", artifacts.contains( depArtifact2 ) 
);
+        assertTrue( "Test dependency three", artifacts.contains( depArtifact3 
) );
+        assertTrue( "Test dependency four", artifacts.contains( depArtifact11 
) );
+        assertTrue( "Test dependency five", artifacts.contains( depArtifact12 
) );
+        assertTrue( "Test dependency six", artifacts.contains( depArtifact21 ) 
);
+
+        Map depMap = listener.getDepMap();
+        assertEquals( "Test total artifacts in dependency map", 4, 
depMap.size() );
+        assertTrue( "Test dependency map key", depMap.containsKey( 
projectArtifact.getId() ) );
+        List dependencies = (List) depMap.get( projectArtifact.getId() );
+        assertEquals( "Test dependency total", 3, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact1 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact2 ) );
+        assertTrue( "Test dependency content 3", dependencies.contains( 
depArtifact3 ) );
+        assertTrue( "Test dependency map key", depMap.containsKey( 
depArtifact1.getId() ) );
+        dependencies = (List) depMap.get( depArtifact1.getId() );
+        assertEquals( "Test dependency total", 2, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact11 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact12 ) );
+        assertTrue( "Test dependency map key", depMap.containsKey( 
depArtifact12.getId() ) );
+        dependencies = (List) depMap.get( depArtifact12.getId() );
+        assertEquals( "Test dependency total", 1, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact121 ) );
+        assertTrue( "Test dependency map key", depMap.containsKey( 
depArtifact2.getId() ) );
+        dependencies = (List) depMap.get( depArtifact2.getId() );
+        assertEquals( "Test dependency total", 1, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact21 ) );
+
+        Map depTree = listener.getDepTree();
+        assertEquals( "Test total artifacts in dependency map", 4, 
depTree.size() );
+        assertTrue( "Test dependency map key", depTree.containsKey( 
projectArtifact.getId() ) );
+        dependencies = (List) depTree.get( projectArtifact.getId() );
+        assertEquals( "Test dependency total", 3, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact1 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact2 ) );
+        assertTrue( "Test dependency content 3", dependencies.contains( 
depArtifact3 ) );
+        assertTrue( "Test dependency map key", depTree.containsKey( 
depArtifact1.getId() ) );
+        dependencies = (List) depTree.get( depArtifact1.getId() );
+        assertEquals( "Test dependency total", 2, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact11 ) );
+        assertTrue( "Test dependency content 2", dependencies.contains( 
depArtifact12 ) );
+        assertTrue( "Test dependency map key", depTree.containsKey( 
depArtifact12.getId() ) );
+        dependencies = (List) depTree.get( depArtifact12.getId() );
+        assertEquals( "Test dependency total", 0, dependencies.size() );
+        assertTrue( "Test dependency map key", depTree.containsKey( 
depArtifact2.getId() ) );
+        dependencies = (List) depTree.get( depArtifact2.getId() );
+        assertEquals( "Test dependency total", 1, dependencies.size() );
+        assertTrue( "Test dependency content 1", dependencies.contains( 
depArtifact21 ) );
+
+        Map directDeps = listener.getDirectDependencies();
+        assertEquals( "Test total direct dependencies", 3, directDeps.size() );
+        assertTrue( "Test dependency content 1", directDeps.containsValue( 
depArtifact1 ) );
+        assertTrue( "Test dependency content 2", directDeps.containsValue( 
depArtifact2 ) );
+        assertTrue( "Test dependency content 3", directDeps.containsValue( 
depArtifact3 ) );
+
+        Map omittedDeps = listener.getOmittedArtifacts();
+        assertEquals( "Test total omitted dependencies", 1, omittedDeps.size() 
);
+
+        Map transDeps = listener.getTransitiveDependencies();
+        assertEquals( "Test total transitive dependencies", 3, 
transDeps.size() );
+        assertTrue( "Test transitive dependency 1", transDeps.containsValue( 
depArtifact11 ) );
+        assertTrue( "Test transitive dependency 2", transDeps.containsValue( 
depArtifact12 ) );
+        assertTrue( "Test transitive dependency 3", transDeps.containsValue( 
depArtifact21 ) );
+    }
+
+    private Artifact createArtifact( String groupId, String artifactId, String 
version )
+    {
+        return createArtifact( groupId, artifactId, version, null );
+    }
+
+    private Artifact createArtifact( String groupId, String artifactId, String 
version, String scope )
+    {
+        VersionRange versionRange = VersionRange.createFromVersion( version );
+
+        Artifact artifact = new DefaultArtifact( groupId, artifactId, 
versionRange, scope,
+                                                 "jar", null, new 
DefaultArtifactHandler(), false );
+
+        return artifact;
+    }
+
+    protected void setUp()
+        throws Exception
+    {
+        listener = new ReportResolutionListener();
+    }
+
+    protected void tearDown()
+        throws Exception
+    {
+        listener = null;
+    }
+}


Reply via email to