View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.eclipse.aether.util.graph.versions;
20  
21  import org.eclipse.aether.collection.DependencyCollectionContext;
22  import org.eclipse.aether.collection.VersionFilter;
23  import org.eclipse.aether.collection.VersionFilter.VersionFilterContext;
24  import org.eclipse.aether.util.graph.version.ChainedVersionFilter;
25  import org.eclipse.aether.util.graph.version.HighestVersionFilter;
26  import org.eclipse.aether.util.graph.version.SnapshotVersionFilter;
27  import org.junit.Test;
28  
29  import static org.junit.Assert.*;
30  
31  public class ChainedVersionFilterTest extends AbstractVersionFilterTest {
32  
33      @Test
34      public void testFilterVersions() throws Exception {
35          VersionFilter filter =
36                  ChainedVersionFilter.newInstance(new SnapshotVersionFilter(), new HighestVersionFilter());
37          VersionFilterContext ctx = newContext("g:a:[1,9]", "1", "2", "3-SNAPSHOT");
38          filter.filterVersions(ctx);
39          assertVersions(ctx, "2");
40      }
41  
42      @Test
43      public void testDeriveChildFilter() {
44          VersionFilter filter1 = new HighestVersionFilter();
45          VersionFilter filter2 = new VersionFilter() {
46              public void filterVersions(VersionFilterContext context) {}
47  
48              public VersionFilter deriveChildFilter(DependencyCollectionContext context) {
49                  return null;
50              }
51          };
52  
53          VersionFilter filter = ChainedVersionFilter.newInstance(filter1);
54          assertSame(filter, derive(filter, "g:a:1"));
55  
56          filter = ChainedVersionFilter.newInstance(filter2);
57          assertSame(null, derive(filter, "g:a:1"));
58  
59          filter = ChainedVersionFilter.newInstance(filter1, filter2);
60          assertSame(filter1, derive(filter, "g:a:1"));
61  
62          filter = ChainedVersionFilter.newInstance(filter2, filter1);
63          assertSame(filter1, derive(filter, "g:a:1"));
64      }
65  
66      @SuppressWarnings("EqualsWithItself")
67      @Test
68      public void testEquals() {
69          VersionFilter filter = ChainedVersionFilter.newInstance(new HighestVersionFilter());
70          assertNotEquals(null, filter);
71          assertEquals(filter, filter);
72          assertEquals(filter, ChainedVersionFilter.newInstance(new HighestVersionFilter()));
73      }
74  }