/** * Copyright 2015-2016 Red Hat, Inc, and individual contributors. * * 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. */ package org.wildfly.swarm.plugin.maven; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.DependencyNode; import org.eclipse.aether.graph.DependencyVisitor; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.util.graph.transformer.ConflictResolver; import org.eclipse.aether.util.version.TestHelper; import org.eclipse.aether.version.Version; import org.eclipse.aether.version.VersionConstraint; import org.junit.Test; import static org.fest.assertions.Assertions.assertThat; /** * @author Ken Finnigan */ public class NewestVersionSelectorTest { @Test public void betaVersionComparison() throws Exception { NewestVersionSelector selector = new NewestVersionSelector(); List<ConflictResolver.ConflictItem> items = new ArrayList<>(); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.Beta3"), 0, 0)); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.Beta5-SNAPSHOT"), 0, 0)); ConflictResolver.ConflictContext context = new ConflictResolver.ConflictContext(null, null, null, items); selector.selectVersion(context); assertThat(context.getWinner().getNode().getVersion().toString()).isEqualTo("1.0.0.Beta5-SNAPSHOT"); } @Test public void snapshotVersionComparison() throws Exception { NewestVersionSelector selector = new NewestVersionSelector(); List<ConflictResolver.ConflictItem> items = new ArrayList<>(); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.Beta3"), 0, 0)); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.Beta3-SNAPSHOT"), 0, 0)); ConflictResolver.ConflictContext context = new ConflictResolver.ConflictContext(null, null, null, items); selector.selectVersion(context); assertThat(context.getWinner().getNode().getVersion().toString()).isEqualTo("1.0.0.Beta3"); } @Test public void alphaToBetaVersionComparison() throws Exception { NewestVersionSelector selector = new NewestVersionSelector(); List<ConflictResolver.ConflictItem> items = new ArrayList<>(); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.Alpha8"), 0, 0)); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.Beta3"), 0, 0)); ConflictResolver.ConflictContext context = new ConflictResolver.ConflictContext(null, null, null, items); selector.selectVersion(context); assertThat(context.getWinner().getNode().getVersion().toString()).isEqualTo("1.0.0.Beta3"); } @Test public void finalVersionComparison() throws Exception { NewestVersionSelector selector = new NewestVersionSelector(); List<ConflictResolver.ConflictItem> items = new ArrayList<>(); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.CR1"), 0, 0)); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.Final"), 0, 0)); ConflictResolver.ConflictContext context = new ConflictResolver.ConflictContext(null, null, null, items); selector.selectVersion(context); assertThat(context.getWinner().getNode().getVersion().toString()).isEqualTo("1.0.0.Final"); } @Test public void differentVersionComparison() throws Exception { NewestVersionSelector selector = new NewestVersionSelector(); List<ConflictResolver.ConflictItem> items = new ArrayList<>(); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.1.Alpha4"), 0, 0)); items.add(new ConflictResolver.ConflictItem(null, createNode("1.0.0.Final"), 0, 0)); ConflictResolver.ConflictContext context = new ConflictResolver.ConflictContext(null, null, null, items); selector.selectVersion(context); assertThat(context.getWinner().getNode().getVersion().toString()).isEqualTo("1.0.1.Alpha4"); } private DependencyNode createNode(String version) { return new DependencyNode() { @Override public List<DependencyNode> getChildren() { return null; } @Override public void setChildren(List<DependencyNode> children) { } @Override public Dependency getDependency() { return null; } @Override public Artifact getArtifact() { return null; } @Override public void setArtifact(Artifact artifact) { } @Override public List<? extends Artifact> getRelocations() { return null; } @Override public Collection<? extends Artifact> getAliases() { return null; } @Override public VersionConstraint getVersionConstraint() { return TestHelper.versionConstraint(version); } @Override public Version getVersion() { return TestHelper.version(version); } @Override public void setScope(String scope) { } @Override public void setOptional(Boolean optional) { } @Override public int getManagedBits() { return 0; } @Override public List<RemoteRepository> getRepositories() { return null; } @Override public String getRequestContext() { return null; } @Override public void setRequestContext(String context) { } @Override public Map<?, ?> getData() { return null; } @Override public void setData(Map<Object, Object> data) { } @Override public void setData(Object key, Object value) { } @Override public boolean accept(DependencyVisitor visitor) { return false; } }; } }