/* * Copyright (C) 2011 Laurent Caillette * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, either * version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.novelang; import org.junit.Test; import static org.junit.Assert.*; /** * Tests for the {@link Version} class. * * @author Laurent Caillette */ public class VersionTest { @Test public void defaultsForSnapshot() { final Version snapshot = Version.SNAPSHOT ; assertTrue( snapshot.isSnapshot() ) ; assertEquals( "SNAPSHOT", snapshot.getName() ) ; } @Test public void parseSnapshot() throws VersionFormatException { assertTrue( Version.parse( "${" + "project.version}" ).isSnapshot() ) ; assertTrue( Version.parse( "SNAPSHOT" ).isSnapshot() ) ; assertTrue( Version.parse( Version.SNAPSHOT.getName() ).isSnapshot() ) ; } @Test public void parse0_1_23() throws VersionFormatException { final Version version = Version.parse( "0.1.23" ) ; assertFalse( version.isSnapshot() ) ; assertEquals( 0, version.getMajor() ) ; assertEquals( 1, version.getMinor() ) ; assertEquals( 23, version.getFix() ) ; assertEquals( "0.1.23", version.getName() ) ; } @Test public void normalNumberedVersion() { final Version version = new Version( 0, 12, 3 ) ; assertFalse( version.isSnapshot() ) ; assertEquals( 0, version.getMajor() ) ; assertEquals( 12, version.getMinor() ) ; assertEquals( 3, version.getFix() ) ; } @Test( expected = VersionFormatException.class ) public void rejectUnparseableString() throws VersionFormatException { Version.parse( "0" ) ; } @Test( expected = IllegalArgumentException.class ) public void rejectWrongMajorNumber() throws VersionFormatException { new Version( -1, 2, 3 ) ; } @Test( expected = IllegalArgumentException.class ) public void rejectWrongMinorNumber() throws VersionFormatException { new Version( 1, -2, 3 ) ; } @Test( expected = IllegalArgumentException.class ) public void rejectWrongFixNumber() throws VersionFormatException { new Version( 1, 2, -3 ) ; } @Test( expected = IllegalStateException.class ) public void noMajorNumberForSnapshot() { Version.SNAPSHOT.getMajor() ; } @Test( expected = IllegalStateException.class ) public void noMinorNumberForSnapshot() { Version.SNAPSHOT.getMinor() ; } @Test( expected = IllegalStateException.class ) public void noFixNumberForSnapshot() { Version.SNAPSHOT.getFix() ; } @Test public void compare() { final Version vSnapshotA = Version.SNAPSHOT ; final Version v3_1_1 = new Version( 3, 1, 1 ) ; final Version v3_1_1b = new Version( 3, 1, 1 ) ; final Version v2_3_1 = new Version( 2, 3, 1 ) ; final Version v2_1_3 = new Version( 2, 1, 3 ) ; final Version v1_3_3 = new Version( 1, 3, 3 ) ; final Version v1_3_4 = new Version( 1, 3, 4 ) ; compare( 0, null, null ) ; compare( -1, null, vSnapshotA ) ; compare( 1, vSnapshotA, null ) ; compare( 0, vSnapshotA, vSnapshotA ) ; compare( 0, v3_1_1, v3_1_1b ) ; compare( 0, v3_1_1, v3_1_1b ) ; compare( 0, v3_1_1b, v3_1_1 ) ; compare( 1, vSnapshotA, v1_3_3 ) ; compare( -1, v1_3_3, vSnapshotA ) ; compare( -1, v2_3_1, v3_1_1 ) ; compare( 1, v3_1_1, v2_3_1 ) ; compare( -1, v2_1_3, v2_3_1 ) ; compare( 1, v2_3_1, v2_1_3 ) ; compare( -1, v1_3_3, v1_3_4 ) ; compare( 1, v1_3_4, v1_3_3 ) ; } // ======= // Fixture // ======= private static void compare( final int expected, final Version version1, final Version version2 ) { if( expected == 0 ) { assertEquals( expected, Version.COMPARATOR.compare( version1, version2 ) ) ; } else { final int result = Version.COMPARATOR.compare( version1, version2 ) ; if( expected < 0 ) { assertTrue( "Got " + result, result < 0 ) ; } else { assertTrue( "Got " + result, result > 0 ) ; } } } }