VersionName implements Comparable { public static VersionName parse(final String versionName) { if (versionName == null) { return null; } String[] array = versionName.split("\\."); if (array.length != 3) { return null; } try { int[] version = new int[array.length]; for (int i = 0; i < version.length; i++) { version[i] = Integer.parseInt(array[i]); if (version[i] < 0) { return null; } } return new VersionName(version); } catch (NumberFormatException e) { return null; } } private  VersionName(final int[] version); boolean isEqualOrMoreThan(final VersionName that); static VersionName parse(final String versionName); @Override boolean equals(final Object o); @Override int compareTo(final Object another); @Override String toString();  }
@Test public void testParse_Success() { VersionName versionName = VersionName.parse("1.2.3"); assertNotNull(versionName); }
@Test public void testParse_Error_TooLong() { VersionName versionName = VersionName.parse("1.2.3.4"); assertNull(versionName); }
@Test public void testParse_Error_TooShort() { VersionName versionName = VersionName.parse("1.2"); assertNull(versionName); }