/*
This file is part of RouteConverter.
RouteConverter is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
RouteConverter 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 RouteConverter; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Copyright (C) 2007 Christian Pesch. All Rights Reserved.
*/
package slash.common.system;
import org.junit.Test;
import java.text.DateFormat;
import java.util.Date;
import static org.junit.Assert.*;
import static slash.common.TestCase.calendar;
import static slash.common.system.Version.compareVersion;
public class VersionTest {
@Test
public void testGetVersion() {
assertEquals("1.2.3", new Version("1.2.3").getVersion());
assertEquals("1.2", new Version("1.2-3").getVersion());
assertEquals("1.2-SNAPSHOT-3", new Version("1.2-SNAPSHOT-3").getVersion());
assertEquals("1.2_3", new Version("1.2_3").getVersion());
}
@Test
public void testGetDate() {
Date date = calendar(2009, 11, 23, 13, 53, 49, 0, "UTC").getCalendar().getTime();
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
String expected = dateFormat.format(date);
String actual = new Version(null, "2009-11-23 13:53:49", null).getDate();
assertEquals(expected, actual);
}
@Test
public void testGetPlatform() {
assertEquals("Windows", new Version(null, null, "Windows").getOperationSystem());
assertEquals("?", new Version(null, null, null).getOperationSystem());
try {
System.setProperty("javawebstart.version", "1.0");
assertEquals("Webstart", new Version(null, null, null).getOperationSystem());
}
finally {
System.clearProperty("javawebstart.version");
}
}
@Test
public void testCompareVersion() {
assertEquals(-1, compareVersion("1", "2"));
assertEquals(0, compareVersion("2", "2"));
assertEquals(1, compareVersion("2", "1"));
assertEquals(-1, compareVersion("9", "10"));
assertEquals(0, compareVersion("10", "10"));
assertEquals(1, compareVersion("10", "9"));
assertEquals(-1, compareVersion("1.9", "2.0"));
assertEquals(-1, compareVersion("1", "2.0"));
assertEquals(-1, compareVersion("1.9", "2"));
assertEquals(1, compareVersion("2.0.1", "2.0.0"));
assertEquals(1, compareVersion("2.1.0", "2.0.0.1"));
assertEquals(1, compareVersion("2.2", "2.0.99"));
assertEquals(1, compareVersion("1.8.0_92", "1.8.0_6"));
assertEquals(1, compareVersion("1.8.0_92", "1.8.0_91"));
assertEquals(1, compareVersion("1.8.0_101", "1.8.0_91"));
}
@Test
public void testIsLaterVersionThan() {
assertFalse(new Version("1").isLaterVersionThan(new Version("1")));
assertTrue(new Version("2").isLaterVersionThan(new Version("1.3")));
assertTrue(new Version("10").isLaterVersionThan(new Version("9")));
assertTrue(new Version("11").isLaterVersionThan(new Version("10")));
assertTrue(new Version("1.3").isLaterVersionThan(new Version("1")));
assertFalse(new Version("1.3").isLaterVersionThan(new Version("1.3")));
assertTrue(new Version("1.10").isLaterVersionThan(new Version("1.9")));
assertTrue(new Version("1.100").isLaterVersionThan(new Version("1.99")));
assertTrue(new Version("1.3.1").isLaterVersionThan(new Version("1.3")));
assertTrue(new Version("1.3.10").isLaterVersionThan(new Version("1.3.9")));
assertTrue(new Version("1.3-SNAPSHOT-1").isLaterVersionThan(new Version("1.3")));
assertTrue(new Version("1.3-SNAPSHOT-2").isLaterVersionThan(new Version("1.3-SNAPSHOT-1")));
assertTrue(new Version("?.?.?").isLaterVersionThan(new Version("2.18.4")));
assertTrue(new Version("0.3").isLaterVersionThan(new Version("0.2")));
assertTrue(new Version("1.3").isLaterVersionThan(new Version("1.2")));
assertTrue(new Version("2.3").isLaterVersionThan(new Version("2.2")));
assertTrue(new Version("1.1").isLaterVersionThan(new Version("0.9")));
assertTrue(new Version("1.30.1").isLaterVersionThan(new Version("1.29.2")));
}
@Test
public void testIsLaterJavaVersion() {
assertTrue(new Version("1.8.0_92").isLaterVersionThan(new Version("1.8.0_91")));
assertTrue(new Version("1.8.0_101").isLaterVersionThan(new Version("1.8.0_91")));
assertTrue(new Version("1.8.0_102").isLaterVersionThan(new Version("1.8.0_101")));
assertFalse(new Version("1.8.0_101").isLaterVersionThan(new Version("1.8.0_102")));
}
@Test
public void testIsNotLatestVersion() {
assertFalse(new Version("1").isLaterVersionThan(new Version("1.3")));
assertFalse(new Version("1.2").isLaterVersionThan(new Version("1.3")));
assertFalse(new Version("1.2.1").isLaterVersionThan(new Version("1.3")));
assertFalse(new Version("1.2-SNAPSHOT-1").isLaterVersionThan(new Version("1.3")));
}
}