/** * Copyright 2012-2013 Maciej Jaworski, Mariusz Kapcia, Paweł Kędzia, Mateusz Kubuszok * * <p>Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at</p> * * <p>http://www.apache.org/licenses/LICENSE-2.0</p> * * <p>Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License.</p> */ package com.autoupdater.client.models; import static com.autoupdater.client.models.VersionNumber.*; import static org.fest.assertions.api.Assertions.assertThat; import java.util.Comparator; import org.junit.Test; public class TestChangelogEntry { @Test public void testConstructor() { // given // when ChangelogEntry changelog = new ChangelogEntry(); // then assertThat(changelog.getChanges()).as("Default changes should be empty string").isNotNull() .isEmpty(); assertThat(changelog.getVersionNumber()).as("Default version number should be 0.0.0.0") .isNotNull().isEqualTo(UNVERSIONED); } @Test public void testEquals() { forEqualAttributesShouldBeTrue(); forDifferentChangesShouldBeFalse(); forDifferentVersionNumberShouldBeFalse(); } private void forEqualAttributesShouldBeTrue() { // given String changes = "some changes"; VersionNumber version = version(1, 2, 3, 4); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes); changelog2.setChanges(changes); changelog1.setVersionNumber(version); changelog2.setVersionNumber(version); // then assertThat(changelog1).as("Changelogs with equal attributes should be equal").isEqualTo( changelog2); assertThat(changelog2).as("Changelogs with equal attributes should be equal").isEqualTo( changelog1); } private void forDifferentChangesShouldBeFalse() { // given String changes1 = "some changes"; String changes2 = "some other changes"; VersionNumber version = version(1, 2, 3, 4); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes1); changelog2.setChanges(changes2); changelog1.setVersionNumber(version); changelog2.setVersionNumber(version); // then assertThat(changelog1).as("Changelogs with different changes should not be equal") .isNotEqualTo(changelog2); assertThat(changelog2).as("Changelogs with different changes should not be equal") .isNotEqualTo(changelog1); } private void forDifferentVersionNumberShouldBeFalse() { // given String changes = "some changes"; VersionNumber version1 = version(1, 2, 3, 4); VersionNumber version2 = version(5, 6, 7, 8); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes); changelog2.setChanges(changes); changelog1.setVersionNumber(version1); changelog2.setVersionNumber(version2); // then assertThat(changelog1).as("Changelogs with different version numbers should not be equal") .isNotEqualTo(changelog2); assertThat(changelog2).as("Changelogs with different version numbers should not be equal") .isNotEqualTo(changelog1); } @Test public void testHashcode() { forEqualAttributesShouldHaveEqualHashcodes(); forDifferentChangesShouldHaveDifferentHashcodes(); forDifferentVersionNumberShouldHaveDifferentHashcodes(); } private void forEqualAttributesShouldHaveEqualHashcodes() { // given String changes = "some changes"; VersionNumber version = version(1, 2, 3, 4); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes); changelog2.setChanges(changes); changelog1.setVersionNumber(version); changelog2.setVersionNumber(version); // then assertThat(changelog1.hashCode()).as( "Changelogs with equal attributes should have equal hashcodes").isEqualTo( changelog2.hashCode()); } private void forDifferentChangesShouldHaveDifferentHashcodes() { // given String changes1 = "some changes"; String changes2 = "some other changes"; VersionNumber version = version(1, 2, 3, 4); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes1); changelog2.setChanges(changes2); changelog1.setVersionNumber(version); changelog2.setVersionNumber(version); // then assertThat(changelog1.hashCode()).as( "Changelogs with different changes should have different hashcodes").isNotEqualTo( changelog2.hashCode()); } private void forDifferentVersionNumberShouldHaveDifferentHashcodes() { // given String changes = "some changes"; VersionNumber version1 = version(1, 2, 3, 4); VersionNumber version2 = version(5, 6, 7, 8); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes); changelog2.setChanges(changes); changelog1.setVersionNumber(version1); changelog2.setVersionNumber(version2); // then assertThat(changelog1.hashCode()).as( "Changelogs with different version numbers should have different hashcodes") .isNotEqualTo(changelog2.hashCode()); } @Test public void testCompareTo() { forEqualAttributesShouldHaveCompareTosEqualTo0(); forDifferentChangesShouldHaveCompareTosDifferentTo0(); forDifferentVersionNumberShouldHaveCompareTosDifferentTo0(); } private void forEqualAttributesShouldHaveCompareTosEqualTo0() { // given String changes = "some changes"; VersionNumber version = version(1, 2, 3, 4); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes); changelog2.setChanges(changes); changelog1.setVersionNumber(version); changelog2.setVersionNumber(version); // then assertThat(changelog1.compareTo(changelog2)).as( "Changelogs with equal attributes should have compareTos equal to 0").isEqualTo(0); assertThat(changelog2.compareTo(changelog1)).as( "Changelogs with equal attributes should have compareTos equal to 0").isEqualTo(0); } private void forDifferentChangesShouldHaveCompareTosDifferentTo0() { // given String changes1 = "some changes"; String changes2 = "some other changes"; VersionNumber version = version(1, 2, 3, 4); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes1); changelog2.setChanges(changes2); changelog1.setVersionNumber(version); changelog2.setVersionNumber(version); // then assertThat(changelog1.compareTo(changelog2)).as( "Changelogs with different changes should have compareTos different to 0") .isLessThan(0); assertThat(changelog2.compareTo(changelog1)).as( "Changelogs with different changes should have compareTos different to 0") .isGreaterThan(0); } private void forDifferentVersionNumberShouldHaveCompareTosDifferentTo0() { // given String changes = "some changes"; VersionNumber version1 = version(1, 2, 3, 4); VersionNumber version2 = version(5, 6, 7, 8); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes); changelog2.setChanges(changes); changelog1.setVersionNumber(version1); changelog2.setVersionNumber(version2); // then assertThat(changelog1.compareTo(changelog2)).as( "Changelogs with different version numbers should have compareTos different to 0") .isLessThan(0); assertThat(changelog2.compareTo(changelog1)).as( "Changelogs with different version numbers should have compareTos different to 0") .isGreaterThan(0); } @Test public void testGeneralComparator() { forEqualAttributesShouldHaveGeneralComparatorsCompareTosEqualTo0(); forDifferentChangesShouldHaveGeneralComparatorsCompareTosDifferentTo0(); forDifferentVersionNumberShouldHaveGeneralComparatorsCompareTosDifferentTo0(); } private void forEqualAttributesShouldHaveGeneralComparatorsCompareTosEqualTo0() { // given String changes = "some changes"; VersionNumber version = version(1, 2, 3, 4); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes); changelog2.setChanges(changes); changelog1.setVersionNumber(version); changelog2.setVersionNumber(version); Comparator<ChangelogEntry> comparator = new ChangelogEntry.GeneralComparator(); // then assertThat(comparator.compare(changelog1, changelog2)).as( "Changelogs with equal attributes should have comparator's compareTos equal to 0") .isEqualTo(0); assertThat(comparator.compare(changelog2, changelog1)).as( "Changelogs with equal attributes should have comparator's compareTos equal to 0") .isEqualTo(0); } private void forDifferentChangesShouldHaveGeneralComparatorsCompareTosDifferentTo0() { // given String changes1 = "some changes"; String changes2 = "some other changes"; VersionNumber version = version(1, 2, 3, 4); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes1); changelog2.setChanges(changes2); changelog1.setVersionNumber(version); changelog2.setVersionNumber(version); Comparator<ChangelogEntry> comparator = new ChangelogEntry.GeneralComparator(); // then assertThat(comparator.compare(changelog1, changelog2)) .as("Changelogs with different changes should have comparator's compareTos different to 0") .isLessThan(0); assertThat(comparator.compare(changelog2, changelog1)) .as("Changelogs with different changes should have comparator's compareTos different to 0") .isGreaterThan(0); } private void forDifferentVersionNumberShouldHaveGeneralComparatorsCompareTosDifferentTo0() { // given String changes = "some changes"; VersionNumber version1 = version(1, 2, 3, 4); VersionNumber version2 = version(5, 6, 7, 8); ChangelogEntry changelog1 = new ChangelogEntry(); ChangelogEntry changelog2 = new ChangelogEntry(); // when changelog1.setChanges(changes); changelog2.setChanges(changes); changelog1.setVersionNumber(version1); changelog2.setVersionNumber(version2); Comparator<ChangelogEntry> comparator = new ChangelogEntry.GeneralComparator(); // then assertThat(comparator.compare(changelog1, changelog2)) .as("Changelogs with different version numbers should have comparator's compareTos different to 0") .isLessThan(0); assertThat(comparator.compare(changelog2, changelog1)) .as("Changelogs with different version numbers should have comparator's compareTos different to 0") .isGreaterThan(0); } @Test public void testGetInstallationsServerPropertiesComparator() { // given // when Comparator<ChangelogEntry> comparator = new ChangelogEntry() .getInstallationsServerPropertiesComparator(); // then assertThat(comparator).as( "InstallationsServerPropertiesComparator is instance of GeneralComparator") .isInstanceOf(ChangelogEntry.GeneralComparator.class); } @Test public void testGetLocalInstallationsComparator() { // given // when Comparator<ChangelogEntry> comparator = new ChangelogEntry() .getLocalInstallationsComparator(); // then assertThat(comparator).as("LocalInstallationsComparator is instance of GeneralComparator") .isInstanceOf(ChangelogEntry.GeneralComparator.class); } @Test public void testGetLocal2ServerComparator() { // given // when Comparator<ChangelogEntry> comparator = new ChangelogEntry().getLocal2ServerComparator(); // then assertThat(comparator).as("Local2ServerComparator is instance of GeneralComparator") .isInstanceOf(ChangelogEntry.GeneralComparator.class); } @Test public void testToString() { // given // when ChangelogEntry changelog = new ChangelogEntry(); // then assertThat(changelog.toString()).as("toString is not null"); } }