Add tests for both Aether transformers

git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1685241 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 4922ce8..d0dfb36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,6 +83,19 @@
     </dependency>
 
     <dependency>
+      <groupId>org.sonatype.aether</groupId>
+      <artifactId>aether-util</artifactId>
+      <version>1.7</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.aether</groupId>
+      <artifactId>aether-util</artifactId>
+      <version>0.9.0.M2</version>
+      <scope>provided</scope>
+    </dependency>
+    
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-container-default</artifactId>
       <version>1.5.5</version>
diff --git a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/ScopeFilter.java b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/ScopeFilter.java
index 50450b9..67ac41b 100644
--- a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/ScopeFilter.java
+++ b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/ScopeFilter.java
@@ -19,6 +19,7 @@
  * under the License.

  */

 

+import java.util.Arrays;

 import java.util.Collection;

 import java.util.Collections;

 

@@ -60,6 +61,17 @@
     }

 

     /**

+     * Construct a ScopeFilter based on included scopes  

+     * 

+     * @param included the scopes to include, must not be {@code null}

+     * @return the filter, never {@code null}

+     */

+    public static ScopeFilter including( String... included ) 

+    {

+        return new ScopeFilter( Arrays.asList( included ), null );

+    }

+

+    /**

      * Construct a ScopeFilter based on excluded scopes

      * 

      * @param excluded the scopes to exclude, may be {@code null}

@@ -71,6 +83,17 @@
     }

 

     /**

+     * Construct a ScopeFilter based on excluded scopes

+     * 

+     * @param excluded the scopes to exclude, must not be {@code null}

+     * @return the filter, never {@code null}

+     */

+    public static ScopeFilter excluding( String... excluded ) 

+    {

+        return new ScopeFilter( null, Arrays.asList( excluded ) );

+    }

+

+    /**

      * Get the excluded scopes

      * 

      * @return the scopes to exclude, may be {@code null}

diff --git a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java
index bf329ae..1713002 100644
--- a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java
+++ b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformer.java
@@ -33,6 +33,7 @@
 import org.eclipse.aether.graph.DependencyFilter;

 import org.eclipse.aether.util.filter.AndDependencyFilter;

 import org.eclipse.aether.util.filter.ExclusionsDependencyFilter;

+import org.eclipse.aether.util.filter.OrDependencyFilter;

 import org.eclipse.aether.util.filter.PatternExclusionsDependencyFilter;

 import org.eclipse.aether.util.filter.PatternInclusionsDependencyFilter;

 import org.eclipse.aether.util.filter.ScopeDependencyFilter;

@@ -64,14 +65,14 @@
     }

 

     @Override

-    public AndDependencyFilter transform( OrFilter orFilter )

+    public OrDependencyFilter transform( OrFilter orFilter )

     {

         Collection<DependencyFilter> filters = new ArrayList<DependencyFilter>();

         for ( TransformableFilter filter : orFilter.getFilters() )

         {

             filters.add( filter.transform( this ) );

         }

-        return new AndDependencyFilter( filters );

+        return new OrDependencyFilter( filters );

     }

 

     @Override

diff --git a/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformerTest.java b/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformerTest.java
new file mode 100644
index 0000000..37b0431
--- /dev/null
+++ b/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherFilterTransformerTest.java
@@ -0,0 +1,100 @@
+package org.apache.maven.shared.artifact.filter.resolve.transform;

+

+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you 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 java.util.Arrays;

+import java.util.Collections;

+

+import org.apache.maven.shared.artifact.filter.resolve.AndFilter;

+import org.apache.maven.shared.artifact.filter.resolve.ExclusionsFilter;

+import org.apache.maven.shared.artifact.filter.resolve.OrFilter;

+import org.apache.maven.shared.artifact.filter.resolve.PatternExclusionsFilter;

+import org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter;

+import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;

+import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;

+import org.eclipse.aether.util.filter.AndDependencyFilter;

+import org.eclipse.aether.util.filter.ExclusionsDependencyFilter;

+import org.eclipse.aether.util.filter.OrDependencyFilter;

+import org.eclipse.aether.util.filter.PatternExclusionsDependencyFilter;

+import org.eclipse.aether.util.filter.PatternInclusionsDependencyFilter;

+import org.eclipse.aether.util.filter.ScopeDependencyFilter;

+import org.junit.Test;

+

+public class EclipseAetherFilterTransformerTest

+{

+

+    private EclipseAetherFilterTransformer transformer = new EclipseAetherFilterTransformer();

+

+    @Test

+    public void testTransformAndFilter()

+    {

+        AndFilter filter = new AndFilter( Arrays.<TransformableFilter>asList( ScopeFilter.including( "compile" ), 

+                                                                              ScopeFilter.including( "test" ) ) );

+

+        AndDependencyFilter dependencyFilter = (AndDependencyFilter) filter.transform( transformer );

+    }

+

+    @Test

+    public void testTransformExclusionsFilter()

+    {

+        ExclusionsFilter filter = new ExclusionsFilter( Collections.singletonList( "runtime" ) );

+

+        ExclusionsDependencyFilter dependencyFilter = (ExclusionsDependencyFilter) filter.transform( transformer );

+    }

+

+    @Test

+    public void testTransformOrFilter()

+    {

+        OrFilter filter = new OrFilter( Arrays.<TransformableFilter>asList( ScopeFilter.including( "compile" ), 

+                                                                            ScopeFilter.including( "test" ) ) );

+

+        OrDependencyFilter dependencyFilter = (OrDependencyFilter) filter.transform( transformer );

+

+    }

+

+    @Test

+    public void testTransformScopeFilter()

+    {

+        ScopeFilter filter = ScopeFilter.including( Collections.singletonList( "runtime" ) );

+

+        ScopeDependencyFilter dependencyFilter = (ScopeDependencyFilter) filter.transform( transformer );

+    }

+

+    @Test

+    public void testTransformPatternExclusionsFilter()

+    {

+        PatternExclusionsFilter filter =

+            new PatternExclusionsFilter( Collections.singletonList( "org.apache.maven:*" ) );

+

+        PatternExclusionsDependencyFilter dependencyFilter =

+            (PatternExclusionsDependencyFilter) filter.transform( transformer );

+    }

+

+    @Test

+    public void testTransformPatternInclusionsFilter()

+    {

+        PatternInclusionsFilter filter =

+            new PatternInclusionsFilter( Collections.singletonList( "org.apache.maven:*" ) );

+

+        PatternInclusionsDependencyFilter dependencyFilter =

+            (PatternInclusionsDependencyFilter) filter.transform( transformer );

+    }

+

+}

diff --git a/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformerTest.java b/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformerTest.java
new file mode 100644
index 0000000..f60e4c2
--- /dev/null
+++ b/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherFilterTransformerTest.java
@@ -0,0 +1,100 @@
+package org.apache.maven.shared.artifact.filter.resolve.transform;

+

+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you 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 java.util.Arrays;

+import java.util.Collections;

+

+import org.apache.maven.shared.artifact.filter.resolve.AndFilter;

+import org.apache.maven.shared.artifact.filter.resolve.ExclusionsFilter;

+import org.apache.maven.shared.artifact.filter.resolve.OrFilter;

+import org.apache.maven.shared.artifact.filter.resolve.PatternExclusionsFilter;

+import org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter;

+import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;

+import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;

+import org.sonatype.aether.util.filter.AndDependencyFilter;

+import org.sonatype.aether.util.filter.ExclusionsDependencyFilter;

+import org.sonatype.aether.util.filter.OrDependencyFilter;

+import org.sonatype.aether.util.filter.PatternExclusionsDependencyFilter;

+import org.sonatype.aether.util.filter.PatternInclusionsDependencyFilter;

+import org.sonatype.aether.util.filter.ScopeDependencyFilter;

+import org.junit.Test;

+

+public class SonatypeAetherFilterTransformerTest

+{

+

+    private SonatypeAetherFilterTransformer transformer = new SonatypeAetherFilterTransformer();

+

+    @Test

+    public void testTransformAndFilter()

+    {

+        AndFilter filter = new AndFilter( Arrays.<TransformableFilter>asList( ScopeFilter.including( "compile" ), 

+                                                                              ScopeFilter.including( "test" ) ) );

+

+        AndDependencyFilter dependencyFilter = (AndDependencyFilter) filter.transform( transformer );

+    }

+

+    @Test

+    public void testTransformExclusionsFilter()

+    {

+        ExclusionsFilter filter = new ExclusionsFilter( Collections.singletonList( "runtime" ) );

+

+        ExclusionsDependencyFilter dependencyFilter = (ExclusionsDependencyFilter) filter.transform( transformer );

+    }

+

+    @Test

+    public void testTransformOrFilter()

+    {

+        OrFilter filter = new OrFilter( Arrays.<TransformableFilter>asList( ScopeFilter.including( "compile" ), 

+                                                                            ScopeFilter.including( "test" ) ) );

+

+        OrDependencyFilter dependencyFilter = (OrDependencyFilter) filter.transform( transformer );

+

+    }

+

+    @Test

+    public void testTransformScopeFilter()

+    {

+        ScopeFilter filter = ScopeFilter.including( Collections.singletonList( "runtime" ) );

+

+        ScopeDependencyFilter dependencyFilter = (ScopeDependencyFilter) filter.transform( transformer );

+    }

+

+    @Test

+    public void testTransformPatternExclusionsFilter()

+    {

+        PatternExclusionsFilter filter =

+            new PatternExclusionsFilter( Collections.singletonList( "org.apache.maven:*" ) );

+

+        PatternExclusionsDependencyFilter dependencyFilter =

+            (PatternExclusionsDependencyFilter) filter.transform( transformer );

+    }

+

+    @Test

+    public void testTransformPatternInclusionsFilter()

+    {

+        PatternInclusionsFilter filter =

+            new PatternInclusionsFilter( Collections.singletonList( "org.apache.maven:*" ) );

+

+        PatternInclusionsDependencyFilter dependencyFilter =

+            (PatternInclusionsDependencyFilter) filter.transform( transformer );

+    }

+

+}