package com.autoupdater.client.models; import static org.fest.assertions.api.Assertions.assertThat; import java.util.Comparator; import org.junit.Test; public class TestProgram { @Test public void testConstructor() { // given // when Program program = new Program(); // then assertThat(program.getName()).as("Program's name should be an empty string").isNotNull() .isEmpty(); assertThat(program.getPathToProgramDirectory()) .as("Program's path to directory should be an empty string").isNotNull().isEmpty(); assertThat(program.getServerAddress()) .as("Program's server address should be an empty string").isNotNull().isEmpty(); assertThat(program.getBugs()).as("Program's Bugs should be an empty collection") .isNotNull().isEmpty(); assertThat(program.getPackages()).as("Program's Packages should be an empty collection") .isNotNull().isEmpty(); assertThat(program.isDevelopmentVersion()).as("Program's version type should release") .isFalse(); } @Test public void testEquals() { forEqualPropertiesShouldBeEqual(); forDifferentPropertiesShouldNotBeEqual(); } private void forEqualPropertiesShouldBeEqual() { // given String name = "name"; String pathToDirectory = "some/path"; String serverAddress = "some/address"; Program program1 = new Program(); Program program2 = new Program(); // when program1.setName(name); program2.setName(name); program1.setPathToProgramDirectory(pathToDirectory); program2.setPathToProgramDirectory(pathToDirectory); program1.setServerAddress(serverAddress); program2.setServerAddress(serverAddress); // then assertThat(program1).as("Programs should be equal when their properties are equal") .isEqualTo(program2); assertThat(program2).as("Programs should be equal when their properties are equal") .isEqualTo(program1); } private void forDifferentPropertiesShouldNotBeEqual() { // given String name = "name"; String pathToDirectory = "some/path"; String serverAddress = "some/address"; Program program1 = new Program(); Program program2 = new Program(); Program program3 = new Program(); Program program4 = new Program(); // when program1.setName(name); program2.setName("other name"); program3.setName(name); program4.setName(name); program1.setPathToProgramDirectory(pathToDirectory); program2.setPathToProgramDirectory(pathToDirectory); program3.setPathToProgramDirectory("other/path"); program4.setPathToProgramDirectory(pathToDirectory); program1.setServerAddress(serverAddress); program2.setServerAddress(serverAddress); program3.setServerAddress(serverAddress); program4.setServerAddress("other/address"); // then assertThat(program1).as("Programs should not be equal when their properties are different") .isNotEqualTo(program2).isNotEqualTo(program3).isNotEqualTo(program4); assertThat(program2).as("Programs should not be equal when their properties are different") .isNotEqualTo(program1).isNotEqualTo(program3).isNotEqualTo(program4); } @Test public void testInstallationsServerPropertiesComparator() { forEqualProgramsInstallationsServerPropertiesComparatorShouldBe0(); forDifferentProgramsInstallationsServerPropertiesComparatorShouldNotBe0(); } private void forEqualProgramsInstallationsServerPropertiesComparatorShouldBe0() { // given String name = "name"; String pathToDirectory = "some/path"; String serverAddress = "some/address"; Program program1 = new Program(); Program program2 = new Program(); // when program1.setName(name); program2.setName(name); program1.setPathToProgramDirectory(pathToDirectory); program2.setPathToProgramDirectory(pathToDirectory); program1.setServerAddress(serverAddress); program2.setServerAddress(serverAddress); Comparator<Program> comparator = new Program.InstallationsServerPropertiesComparator(); // then assertThat(comparator.compare(program1, program2)).as( "InstallationsServerPropertiesComparator should be 0 for equal Programs") .isEqualTo(0); assertThat(comparator.compare(program2, program1)).as( "InstallationsServerPropertiesComparator should be 0 for equal Programs") .isEqualTo(0); } private void forDifferentProgramsInstallationsServerPropertiesComparatorShouldNotBe0() { // given String name = "name"; String pathToDirectory = "some/path"; String serverAddress = "some/address"; Program program1 = new Program(); Program program2 = new Program(); // when program1.setName(name); program2.setName("other name"); program1.setPathToProgramDirectory(pathToDirectory); program2.setPathToProgramDirectory(pathToDirectory); program1.setServerAddress(serverAddress); program2.setServerAddress(serverAddress); Comparator<Program> comparator = new Program.InstallationsServerPropertiesComparator(); // then assertThat(comparator.compare(program1, program2)).as( "InstallationsServerPropertiesComparator should not be 0 for different Programs") .isLessThan(0); assertThat(comparator.compare(program2, program1)).as( "InstallationsServerPropertiesComparator should not be 0 for different Programs") .isGreaterThan(0); } @Test public void testLocalInstallationsComparator() { forEqualProgramsLocalInstallationsComparatorShouldBe0(); forDifferentProgramsLocalInstallationsComparatorShouldNotBe0(); } private void forEqualProgramsLocalInstallationsComparatorShouldBe0() { // given String name = "name"; String pathToDirectory = "some/path"; String serverAddress = "some/address"; Program program1 = new Program(); Program program2 = new Program(); // when program1.setName(name); program2.setName(name); program1.setPathToProgramDirectory(pathToDirectory); program2.setPathToProgramDirectory(pathToDirectory); program1.setServerAddress(serverAddress); program2.setServerAddress(serverAddress); Comparator<Program> comparator = new Program.LocalInstallationsComparator(); // then assertThat(comparator.compare(program1, program2)).as( "LocalInstallationsComparator should be 0 for equal Programs").isEqualTo(0); assertThat(comparator.compare(program2, program1)).as( "LocalInstallationsComparator should be 0 for equal Programs").isEqualTo(0); } private void forDifferentProgramsLocalInstallationsComparatorShouldNotBe0() { // given String name = "name"; String pathToDirectory = "some/path"; String serverAddress = "some/address"; Program program1 = new Program(); Program program2 = new Program(); // when program1.setName(name); program2.setName("other name"); program1.setPathToProgramDirectory(pathToDirectory); program2.setPathToProgramDirectory(pathToDirectory); program1.setServerAddress(serverAddress); program2.setServerAddress(serverAddress); Comparator<Program> comparator = new Program.LocalInstallationsComparator(); // then assertThat(comparator.compare(program1, program2)).as( "LocalInstallationsComparator should not be 0 for different Programs") .isLessThan(0); assertThat(comparator.compare(program2, program1)).as( "LocalInstallationsComparator should not be 0 for different Programs") .isGreaterThan(0); } @Test public void testLocal2ServerComparator() { forEqualProgramsLocal2ServerComparatorShouldBe0(); forDifferentProgramsLocal2ServerComparatorShouldNotBe0(); } private void forEqualProgramsLocal2ServerComparatorShouldBe0() { // given String name = "name"; String pathToDirectory = "some/path"; String serverAddress = "some/address"; Program program1 = new Program(); Program program2 = new Program(); // when program1.setName(name); program2.setName(name); program1.setPathToProgramDirectory(pathToDirectory); program2.setPathToProgramDirectory("other path"); program1.setServerAddress(serverAddress); program2.setServerAddress("other server"); Comparator<Program> comparator = new Program.Local2ServerComparator(); // then assertThat(comparator.compare(program1, program2)).as( "Local2ServerComparator should be 0 for equal Programs").isEqualTo(0); assertThat(comparator.compare(program2, program1)).as( "Local2ServerComparator should be 0 for equal Programs").isEqualTo(0); } private void forDifferentProgramsLocal2ServerComparatorShouldNotBe0() { // given String name = "name"; String pathToDirectory = "some/path"; String serverAddress = "some/address"; Program program1 = new Program(); Program program2 = new Program(); // when program1.setName(name); program2.setName("other name"); program1.setPathToProgramDirectory(pathToDirectory); program2.setPathToProgramDirectory(pathToDirectory); program1.setServerAddress(serverAddress); program2.setServerAddress(serverAddress); Comparator<Program> comparator = new Program.Local2ServerComparator(); // then assertThat(comparator.compare(program1, program2)).as( "Local2ServerComparator should not be 0 for different Programs").isLessThan(0); assertThat(comparator.compare(program2, program1)).as( "Local2ServerComparator should not be 0 for different Programs").isGreaterThan(0); } @Test public void testGetInstallationsServerPropertiesComparator() { // given // when Comparator<Program> comparator = new Program().getInstallationsServerPropertiesComparator(); // then assertThat(comparator) .as("InstallationsServerPropertiesComparator is instance of InstallationsServerPropertiesComparator") .isInstanceOf(Program.InstallationsServerPropertiesComparator.class); } @Test public void testGetLocalInstallationsComparator() { // given // when Comparator<Program> comparator = new Program().getLocalInstallationsComparator(); // then assertThat(comparator).as( "LocalInstallationsComparator is instance of LocalInstallationsComparator") .isInstanceOf(Program.LocalInstallationsComparator.class); } @Test public void testGetLocal2ServerComparator() { // given // when Comparator<Program> comparator = new Program().getLocal2ServerComparator(); // then assertThat(comparator).as("Local2ServerComparator is instance of Local2ServerComparator") .isInstanceOf(Program.Local2ServerComparator.class); } @Test public void testToString() { // given // when Program program = new Program(); // then assertThat(program.toString()).as("toString is not null"); } }