package com.autoupdater.client.models; import static com.autoupdater.client.models.VersionNumber.UNVERSIONED; import static org.fest.assertions.api.Assertions.assertThat; import java.util.Comparator; import org.junit.Test; public class TestVersionNumber { @Test public void testConstructor() { // given int major = 127, minor = 0, release = 0, nightly = 1; String stringVersion = major + "." + minor + "." + release + "." + nightly; // when VersionNumber versionFromInts = new VersionNumber(major, minor, release, nightly); VersionNumber versionFromString = new VersionNumber(stringVersion); // then assertThat(versionFromInts.getMajor()).as( "VersionNumber integer constructor should set major number correctly").isEqualTo( major); assertThat(versionFromInts.getMinor()).as( "VersionNumber integer constructor should set major number correctly").isEqualTo( minor); assertThat(versionFromInts.getRelease()).as( "VersionNumber integer constructor should set major number correctly").isEqualTo( release); assertThat(versionFromInts.getNightly()).as( "VersionNumber integer constructor should set major number correctly").isEqualTo( nightly); assertThat(versionFromString.getMajor()).as( "VersionNumber string constructor should set major number correctly").isEqualTo( major); assertThat(versionFromString.getMinor()).as( "VersionNumber string constructor should set major number correctly").isEqualTo( minor); assertThat(versionFromString.getRelease()).as( "VersionNumber string constructor should set major number correctly").isEqualTo( release); assertThat(versionFromString.getNightly()).as( "VersionNumber string constructor should set major number correctly").isEqualTo( nightly); } @Test public void testEquals() { forEqualNumbersShouldBeEqual(); forDifferentNumbersShouldNotBeEqual(); } private void forEqualNumbersShouldBeEqual() { // given // when VersionNumber versionNumber1 = new VersionNumber(127, 0, 0, 1); VersionNumber versionNumber2 = new VersionNumber(127, 0, 0, 1); // then assertThat(versionNumber1).as("VersionNumber with the same number should be equal") .isEqualTo(versionNumber2); } private void forDifferentNumbersShouldNotBeEqual() { // given // when VersionNumber versionNumber1 = new VersionNumber(127, 0, 0, 1); VersionNumber versionNumber2 = new VersionNumber(127, 0, 0, 2); VersionNumber versionNumber3 = new VersionNumber(127, 0, 1, 1); VersionNumber versionNumber4 = new VersionNumber(127, 1, 0, 1); VersionNumber versionNumber5 = new VersionNumber(128, 0, 0, 1); // then assertThat(versionNumber1) .as("VersionNumber with the different number should not be equal") .isNotEqualTo(versionNumber2).isNotEqualTo(versionNumber3) .isNotEqualTo(versionNumber4).isNotEqualTo(versionNumber5); } @Test public void testCompareTo() { forEqualNumbersShouldBe0(); forDifferentNumbersShouldNotBe0(); } private void forEqualNumbersShouldBe0() { // given VersionNumber versionNumber1 = new VersionNumber(1, 2, 3, 4); VersionNumber versionNumber2 = new VersionNumber(1, 2, 3, 4); // when int comparison = versionNumber1.compareTo(versionNumber2); // then assertThat(comparison).as("compareTo should be 0 for equal VersionNumbers").isEqualTo(0); } private void forDifferentNumbersShouldNotBe0() { // given VersionNumber versionNumber1 = new VersionNumber(1, 2, 3, 4); VersionNumber versionNumber2 = new VersionNumber(2, 3, 4, 5); // when int comparison = versionNumber1.compareTo(versionNumber2); // then assertThat(comparison).as("compareTo should not be 0 for differenr VersionNumbers") .isLessThan(0); } @Test public void testGeneralComparator() { forEqualVersionNumbersShouldBe0(); forDifferentVersionNumbersShouldNotBe0(); } private void forEqualVersionNumbersShouldBe0() { // given // when VersionNumber version1 = VersionNumber.version(1, 2, 3, 4); VersionNumber version2 = VersionNumber.version(1, 2, 3, 4); Comparator<VersionNumber> comparator = new VersionNumber.GeneralComparator(); // then assertThat(comparator.compare(version1, version2)).as( "For equal Version Numbers should be 0").isEqualTo(0); assertThat(comparator.compare(version2, version1)).as( "For equal Version Numbers should be 0").isEqualTo(0); } private void forDifferentVersionNumbersShouldNotBe0() { // given // when VersionNumber version1 = VersionNumber.version(1, 2, 3, 4); VersionNumber version2 = VersionNumber.version(1, 2, 3, 5); Comparator<VersionNumber> comparator = new VersionNumber.GeneralComparator(); // then assertThat(comparator.compare(version1, version2)).as( "For different Version Numbers should not be 0").isLessThan(0); assertThat(comparator.compare(version2, version1)).as( "For different Version Numbers should not be 0").isGreaterThan(0); } @Test public void testGetInstallationsServerPropertiesComparator() { // given // when Comparator<VersionNumber> comparator = UNVERSIONED .getInstallationsServerPropertiesComparator(); // then assertThat(comparator).as( "InstallationsServerPropertiesComparator is instance of GeneralComparator") .isInstanceOf(VersionNumber.GeneralComparator.class); } @Test public void testGetLocalInstallationsComparator() { // given // when Comparator<VersionNumber> comparator = UNVERSIONED.getLocalInstallationsComparator(); // then assertThat(comparator).as("LocalInstallationsComparator is instance of GeneralComparator") .isInstanceOf(VersionNumber.GeneralComparator.class); } @Test public void testGetLocal2ServerComparator() { // given // when Comparator<VersionNumber> comparator = UNVERSIONED.getLocal2ServerComparator(); // then assertThat(comparator).as("Local2ServerComparator is instance of GeneralComparator") .isInstanceOf(VersionNumber.GeneralComparator.class); } @Test public void testToString() { // given // when VersionNumber version = new VersionNumber(1, 2, 3, 4); // then assertThat(version.toString()).as("toString is not null"); } }