/*
* Copyright 2004 - 2008 Christian Sprajc. All rights reserved.
*
* This file is part of PowerFolder.
*
* PowerFolder 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.
*
* PowerFolder 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 PowerFolder. If not, see <http://www.gnu.org/licenses/>.
*
* $Id: JavaVersionTest.java 6419 2009-01-19 01:03:34Z tot $
*/
package de.dal33t.powerfolder.test.util;
import junit.framework.TestCase;
import de.dal33t.powerfolder.util.JavaVersion;
/**
* Test cases for JavaVersion.
*/
public class JavaVersionTest extends TestCase {
/**
* Test that we can read the java.runtime.version.
*/
public void testSystemVersion() {
assertEquals("System Version",
JavaVersion.systemVersion().toString(),
System.getProperty("java.runtime.version"));
}
/**
* Test the constructors work.
*/
public void testConstructors() {
JavaVersion version = new JavaVersion(1, 6, 22, 10, 123);
assertEquals("Five parameters", version.toString(), "1.6.22_10-b123");
version = new JavaVersion(1, 99, 2, 10);
assertEquals("Four parameters", version.toString(), "1.99.2_10");
version = new JavaVersion(111, 6, 2);
assertEquals("Three parameters", version.toString(), "111.6.2");
version = new JavaVersion(1, 786);
assertEquals("Two parameters", version.toString(), "1.786.0");
}
/**
* Test that parse works, and can handle bad text.
*/
public void testParse() {
assertEquals("Parse five", JavaVersion.parse("1.6.0_10-b12").toString(),
"1.6.0_10-b12");
assertEquals("Parse four", JavaVersion.parse("1.6.2_9").toString(),
"1.6.2_9");
assertEquals("Parse three", JavaVersion.parse("1.6.6").toString(),
"1.6.6");
assertEquals("Parse two", JavaVersion.parse("2.6").toString(), "2.6.0");
// Swap '_' and '-'
boolean threwError = false;
try {
JavaVersion.parse("1.6.0-10_b12");
} catch (Exception e) {
threwError = true;
}
assertTrue("Throwing error - swap", threwError);
// No 'b'
threwError = false;
try {
JavaVersion.parse("1.6.0_10-12");
} catch (Exception e) {
threwError = true;
}
assertTrue("Throwing error - b", threwError);
// Junk text
threwError = false;
try {
JavaVersion.parse("complete junk");
} catch (Exception e) {
threwError = true;
}
assertTrue("Throwing error - junk", threwError);
// Empty text
threwError = false;
try {
JavaVersion.parse("");
} catch (Exception e) {
threwError = true;
}
assertTrue("Throwing error - empty", threwError);
// Null text
threwError = false;
try {
JavaVersion.parse(null);
} catch (Exception e) {
threwError = true;
}
assertTrue("Throwing error - null", threwError);
}
/**
* Test of compare, equals and hashCode.
*/
public void testCompareEqualsHash() {
JavaVersion version = JavaVersion.parse("1.5.2_8-b03");
JavaVersion versionNotEqual = JavaVersion.parse("1.5.2");
JavaVersion versionEqual = JavaVersion.parse("1.5.2_8-b03");
assertTrue("Compare ne", version.compareTo(versionNotEqual) > 0);
assertFalse("Equals ne", version.equals(versionNotEqual));
assertFalse("HashCode ne", version.hashCode()
== versionNotEqual.hashCode());
assertTrue("Compare eq", version.compareTo(versionEqual) == 0);
assertTrue("Equals eq", version.equals(versionEqual));
assertTrue("HashCode eq", version.hashCode()
== versionEqual.hashCode());
}
/**
* Test non-standard OpenJDK version format.
*/
public void testOpenJDKVersion() {
// OpenJDK Client VM - like 1.6.0-b09
JavaVersion openJDKVersion = JavaVersion.parse("1.6.0-b09");
JavaVersion normalVersion = JavaVersion.parse("1.6.0");
assertTrue("Compare eq", openJDKVersion.compareTo(normalVersion) == 0);
assertTrue("Equals eq", openJDKVersion.equals(normalVersion));
assertTrue("HashCode eq", openJDKVersion.hashCode() ==
normalVersion.hashCode());
}
/**
* Test that the system version is a single instance.
*/
public void testSystemSingleton() {
JavaVersion javaVersion1 = JavaVersion.systemVersion();
JavaVersion javaVersion2 = JavaVersion.systemVersion();
assertTrue("Singleton", javaVersion1 == javaVersion2
&& javaVersion1.equals(javaVersion2));
}
}