package org.limewire.util; import junit.framework.Test; public final class VersionTest extends BaseTestCase { public VersionTest(String name) { super(name); } public static Test suite() { return buildTestSuite(VersionTest.class); } /** * Runs this test individually. */ public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public void testInvalidVersions() throws Exception { try { new Version("@version@"); fail("invalid v."); } catch (VersionFormatException expected) { } try { new Version("1a"); fail("invalid v"); } catch (VersionFormatException expected) { } try { new Version("1.a"); fail("invalid v"); } catch (VersionFormatException expected) { } try { new Version("1.2a"); fail("invalid v"); } catch (VersionFormatException expected) { } try { new Version("1.2.a"); fail("invalid v"); } catch (VersionFormatException expected) { } try { new Version("1.a.3"); fail("invalid v"); } catch (VersionFormatException expected) { } } private void check(String v, int M, int m, int s, int r) throws Exception { Version vrs = new Version(v); assertEquals(M, vrs.getMajor()); assertEquals(m, vrs.getMinor()); assertEquals(s, vrs.getService()); assertEquals(r, vrs.getRevision()); } public void testValidVersion() throws Exception { check("0.0.0", 0, 0, 0, 0); check("1.2.3", 1, 2, 3, 0); check("10.2.3052", 10, 2, 3052, 0); check("10.2.3_05", 10, 2, 3, 5); check("2.1.81", 2, 1, 81, 0); check("4.6.0 Pro", 4, 6, 0, 0); check("4.6.0jum", 4, 6, 0, 0); check("4.6.0jum233", 4, 6, 0, 233); check("4.6.0_01", 4, 6, 0, 1); check("4.6.0_01abc", 4, 6, 0, 1); check("1.5.0b56", 1, 5, 0, 56); check("1.5.0_01", 1, 5, 0, 1); check("1.5.0_02", 1, 5, 0, 2); check("1", 1, 0, 0, 0); check("1.2", 1, 2, 0, 0); check("1.2.3.4a", 1, 2, 3, 4); check("1.2.3.4a5", 1, 2, 3, 4); } public void testComparingVersions() throws Exception { Version v1, v2; v1 = new Version("0.0.0"); v2 = new Version("0.0.0"); assertEquals(v1, v2); v2 = new Version("0.0.0_1"); // make sure aGT a aLT are doing it the way we expect ... // param 2 is 'X than' param 1 assertGreaterThan(0, v2.compareTo(v1)); assertLessThan(0, v1.compareTo(v2)); assertGreaterThan(v1, v2); assertLessThan(v2, v1); v2 = new Version("1.0.0"); assertGreaterThan(v1, v2); assertLessThan(v2, v1); v2 = new Version("0.1.0"); assertGreaterThan(v1, v2); assertLessThan(v2, v1); v2 = new Version("0.0.1"); assertGreaterThan(v1, v2); assertLessThan(v2, v1); // try with a leading zero. v2 = new Version("0.0.0_01"); assertGreaterThan(v1, v2); assertLessThan(v2, v1); // try with words v2 = new Version("0.0.0 PRO"); assertEquals(v1, v2); v2 = new Version("0.0.1 PRO"); assertGreaterThan(v1, v2); assertLessThan(v2, v1); } public void testCompareBeta() throws Exception { Version v1, v2; v1 = new Version("1.6.0_01"); v2 = new Version("1.6.0-beta"); assertGreaterThan(0, v1.compareTo(v2)); } }