/******************************************************************************* * Copyright (c) 2010-2014 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAP AG - initial API and implementation *******************************************************************************/ package org.eclipse.skalli.model.ext.maven; import static org.eclipse.skalli.model.ext.maven.MavenCoordinateUtil.TEST_COORD; import static org.junit.Assert.*; import org.eclipse.skalli.testutil.AssertUtils; import org.junit.Test; @SuppressWarnings("nls") public class MavenModuleTest { @Test public void testConstructor() throws Exception { MavenCoordinate c = new MavenModule(MavenCoordinateUtil.GROUPID, MavenCoordinateUtil.ARTIFACT, MavenCoordinateUtil.PACKAGING); assertEquals(MavenCoordinateUtil.GROUPID, c.getGroupId()); assertEquals(MavenCoordinateUtil.ARTIFACT, c.getArtefactId()); assertEquals(MavenCoordinateUtil.PACKAGING, c.getPackaging()); } @Test public void testConstructor_defaultPackaing() throws Exception { MavenCoordinate c = new MavenModule(MavenCoordinateUtil.GROUPID, MavenCoordinateUtil.ARTIFACT, null); assertEquals(MavenCoordinateUtil.GROUPID, c.getGroupId()); assertEquals(MavenCoordinateUtil.ARTIFACT, c.getArtefactId()); assertEquals("jar", c.getPackaging()); } @Test public void testCopyConstructor() throws Exception { MavenModule original = new MavenModule(TEST_COORD); original.addVersion("1.0"); MavenModule clone = new MavenModule(original); // ensure that original and clone are equal assertEquals(original, clone); // now change some attributes clone.setGroupId("com.example.test"); clone.setArtefactId("foobar"); clone.setPackaging("zip"); clone.addVersion("2.0"); // check that original is untouched assertEquals(MavenCoordinateUtil.GROUPID, original.getGroupId()); assertEquals(MavenCoordinateUtil.ARTIFACT, original.getArtefactId()); assertEquals(MavenCoordinateUtil.PACKAGING, original.getPackaging()); AssertUtils.assertEquals("getVersions()", original.getVersions(), "1.0"); } @Test public void testBasics() { MavenModule clone = new MavenModule(TEST_COORD); assertEquals(MavenCoordinateUtil.GROUPID, clone.getGroupId()); assertEquals(MavenCoordinateUtil.ARTIFACT, clone.getArtefactId()); assertEquals(MavenCoordinateUtil.PACKAGING, clone.getPackaging()); assertTrue(clone.getVersions().isEmpty()); clone.addVersion("2.0"); clone.addVersion("0.1"); clone.addVersion("1.0"); AssertUtils.assertEquals("getVersions()", clone.getVersions(), "0.1", "1.0", "2.0"); clone.removeVersion("1.0"); AssertUtils.assertEquals("getVersions()", clone.getVersions(), "0.1", "2.0"); assertTrue(clone.hasVersion("0.1")); } @Test public void testCompareAndEquals() throws Exception { MavenModule left = TEST_COORD; MavenModule right = new MavenModule("com.example.test", MavenCoordinateUtil.ARTIFACT, MavenCoordinateUtil.PACKAGING); assertGreater(left, right); right = new MavenModule(MavenCoordinateUtil.GROUPID, "b", MavenCoordinateUtil.PACKAGING); assertLower(left, right); right = new MavenModule(MavenCoordinateUtil.GROUPID, MavenCoordinateUtil.ARTIFACT, "eclipse-plugin"); assertGreater(left, right); right = new MavenModule(null, MavenCoordinateUtil.ARTIFACT, MavenCoordinateUtil.PACKAGING); assertGreater(left, right); right = new MavenModule(MavenCoordinateUtil.GROUPID, null, MavenCoordinateUtil.PACKAGING); assertGreater(left, right); right = new MavenModule(MavenCoordinateUtil.GROUPID, MavenCoordinateUtil.ARTIFACT, null); assertEqual(left, right); right = new MavenModule(MavenCoordinateUtil.GROUPID.toUpperCase(), MavenCoordinateUtil.ARTIFACT, MavenCoordinateUtil.PACKAGING); assertTrue(left.compareTo(right) != 0); assertFalse(left.equals(right)); assertFalse(right.equals(left)); right = left; assertEqual(left, right); } @Test public void testCompareWithVersions() throws Exception { MavenModule left = new MavenModule(TEST_COORD); left.addVersion("1.0"); left.addVersion("2.0"); MavenModule right = new MavenModule(TEST_COORD); right.addVersion("1.0"); right.addVersion("1.5"); right.addVersion("2.0"); assertGreater(left, right); left.addVersion("1.5"); assertEquals(left, right); } @Test public void testMultipleVersions() throws Exception { MavenModule mm = new MavenModule(TEST_COORD); mm.addVersion("1.0.0"); assertEquals(1, mm.getVersions().size()); mm.addVersion("2.0.0"); assertEquals(2, mm.getVersions().size()); mm.addVersion("2.0.0"); assertEquals(2, mm.getVersions().size()); } private void assertGreater(MavenModule left, MavenModule right) { assertTrue(left.compareTo(right) > 0); assertTrue(right.compareTo(left) < 0); assertFalse(left.equals(right)); assertFalse(right.equals(left)); } private void assertLower(MavenModule left, MavenModule right) { assertGreater(right, left); } private void assertEqual(MavenModule left, MavenModule right) { assertTrue(right.compareTo(left) == 0); assertTrue(left.compareTo(right) == 0); assertTrue(left.equals(right)); assertTrue(right.equals(left)); } }