/* * Capsule * Copyright (c) 2014, Parallel Universe Software Co. and Contributors. All rights reserved. * * This program and the accompanying materials are licensed under the terms * of the Eclipse Public License v1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package capsule; import org.junit.Test; import static org.junit.Assert.*; import static capsule.Dependencies.*; import java.util.Arrays; import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.Exclusion; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.util.artifact.JavaScopes; import java.util.Collections; import java.util.HashSet; import java.util.Set; /** * @author circlespainter */ public class DependenciesTest { @Test public void testDeps() { assertEquals("com.esotericsoftware.kryo:kryo:LATEST", toCapsuleDependencyString(depWithoutExclusions)); assertEquals ( "com.esotericsoftware.kryo:kryo:[2.23.0)(org.ow2.asm:1.0.0)", toCapsuleDependencyString(depWithExclusion) ); assertEquals ( "com.esotericsoftware.kryo:kryo:2.23.0(org.ow2.asm:*)", toCapsuleDependencyString(depWithExclusionWildcardExplicit) ); assertEquals ( "com.esotericsoftware.kryo:kryo:RELEASE(org.ow2.asm:*)", toCapsuleDependencyString(depWithExclusionWildcardImplicit) ); assertTrue( "com.esotericsoftware.kryo:kryo:[2.23.0)(capsule:*,org.ow2.asm:1.0.0)".equals( toCapsuleDependencyString(depWithExclusions) ) || "com.esotericsoftware.kryo:kryo:[2.23.0)(org.ow2.asm:1.0.0,capsule:*)".equals( toCapsuleDependencyString(depWithExclusions) ) ); } @Test public void testRepos() { assertEquals("central", toCapsuleRepositoryString(repoDefault)); assertEquals("http://clojars.org/repo", toCapsuleRepositoryString(repoUrl)); } private static final Dependency depWithoutExclusions = new Dependency ( new DefaultArtifact("com.esotericsoftware.kryo", "kryo", null, null, "LATEST"), JavaScopes.RUNTIME ); private static final Dependency depWithExclusion = new Dependency ( new DefaultArtifact("com.esotericsoftware.kryo", "kryo", null, null, "[2.23.0)"), JavaScopes.RUNTIME, false, set(new Exclusion("org.ow2.asm", "1.0.0", null, null)) ); private static final Dependency depWithExclusions = new Dependency ( new DefaultArtifact("com.esotericsoftware.kryo", "kryo", null, null, "[2.23.0)"), JavaScopes.RUNTIME, false, set ( new Exclusion("org.ow2.asm", "1.0.0", null, null), new Exclusion("capsule", null, null, null) ) ); private static final Dependency depWithExclusionWildcardImplicit = new Dependency ( new DefaultArtifact("com.esotericsoftware.kryo", "kryo", null, null, "RELEASE"), JavaScopes.RUNTIME, false, set(new Exclusion("org.ow2.asm", null, null, null)) ); private static final Dependency depWithExclusionWildcardExplicit = new Dependency ( new DefaultArtifact("com.esotericsoftware.kryo", "kryo", null, null, "2.23.0"), JavaScopes.RUNTIME, false, set(new Exclusion("org.ow2.asm", "*", null, null)) ); private static final RemoteRepository repoDefault = new RemoteRepository.Builder("central", null, null).build(); private static final RemoteRepository repoUrl = new RemoteRepository.Builder(null, null, "http://clojars.org/repo").build(); @SafeVarargs private static <T> Set<T> set(T... xs) { return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(xs))); } }