package com.autoupdater.client.models;
import static com.autoupdater.client.models.EUpdateStatus.NOT_SELECTED;
import static com.autoupdater.client.models.EUpdateStrategy.COPY;
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 TestUpdate {
@Test
public void testConstructor() {
// given
// when
Update update = new Update();
// then
assertThat(update.getPackageID()).as("Update's Package ID should be empty string")
.isNotNull().isEmpty();
assertThat(update.getPackageName()).as("Update's Package Name should be empty string")
.isNotNull().isEmpty();
assertThat(update.getPackage()).as("Update's Package should be null").isNull();
assertThat(update.getID()).as("Update's ID should be emty string").isNotNull().isEmpty();
assertThat(update.getChanges()).as("Update's Changes should be empty string").isNotNull()
.isEmpty();
assertThat(update.getVersionNumber()).as("Update's Version Number should be UNVERSIONED")
.isEqualTo(UNVERSIONED);
assertThat(update.getUpdateStrategy()).as("Update's Strategy should be COPY").isEqualTo(
COPY);
assertThat(update.getOriginalName()).as("Update's Original Name should be empty string")
.isNotNull().isEmpty();
assertThat(update.getRelativePath()).as("Update's Relative Path should be empty string")
.isNotNull().isEmpty();
assertThat(update.getCommand()).as("Update's Command should be empty string").isNotNull()
.isEmpty();
assertThat(update.getFile()).as("Update's File should be null").isNull();
assertThat(update.getStatus()).as("Update's Status should be NOT SELECTED").isEqualTo(
NOT_SELECTED);
}
@Test
public void testEquals() {
forEqualUpdatesShouldBeEqual();
forDifferentUpdatesShouldNotBeEqual();
}
private void forEqualUpdatesShouldBeEqual() {
// given
String packageName = "some name";
VersionNumber version = version(1, 2, 3, 4);
// when
Update update1 = UpdateBuilder.builder().setPackageName(packageName)
.setVersionNumber(version).build();
Update update2 = UpdateBuilder.builder().setPackageName(packageName)
.setVersionNumber(version).build();
// then
assertThat(update1).as("For equal Updates should be equal").isEqualTo(update2);
assertThat(update2).as("For equal Updates should be equal").isEqualTo(update1);
}
private void forDifferentUpdatesShouldNotBeEqual() {
// given
String packageName = "some name";
VersionNumber version = version(1, 2, 3, 4);
// when
Update update1 = UpdateBuilder.builder().setPackageName(packageName)
.setVersionNumber(version).build();
Update update2 = UpdateBuilder.builder().setPackageName("some other package")
.setVersionNumber(version).build();
// then
assertThat(update1).as("For different Updates should not be equal").isNotEqualTo(update2);
assertThat(update2).as("For different Updates should not be equal").isNotEqualTo(update1);
}
@Test
public void testLocalInstallationsComparator() {
forEqualProgramsLocalInstallationsComparatorShouldBe0();
forDifferentProgramsLocalInstallationsComparatorShouldNotBe0();
}
private void forEqualProgramsLocalInstallationsComparatorShouldBe0() {
// given
String packageName = "some name";
VersionNumber version = version(1, 2, 3, 4);
// when
Update update1 = UpdateBuilder.builder().setPackageName(packageName)
.setVersionNumber(version).build();
Update update2 = UpdateBuilder.builder().setPackageName(packageName)
.setVersionNumber(version).build();
Comparator<Update> comparator = new Update.LocalInstallationsComparator();
// then
assertThat(comparator.compare(update1, update2)).as(
"For equal Updates LocalInstallationsComparator should be 0").isEqualTo(0);
assertThat(comparator.compare(update2, update1)).as(
"For equal Updates LocalInstallationsComparator should be 0").isEqualTo(0);
}
private void forDifferentProgramsLocalInstallationsComparatorShouldNotBe0() {
// given
String packageName = "some name";
VersionNumber version = version(1, 2, 3, 4);
// when
Update update1 = UpdateBuilder.builder().setPackageName(packageName)
.setVersionNumber(version).build();
Update update2 = UpdateBuilder.builder().setPackageName("some other package")
.setVersionNumber(version).build();
Comparator<Update> comparator = new Update.LocalInstallationsComparator();
// then
assertThat(comparator.compare(update1, update2)).as(
"For different Updates LocalInstallationsComparator should not be 0").isLessThan(0);
assertThat(comparator.compare(update2, update1)).as(
"For different Updates LocalInstallationsComparator should not be 0")
.isGreaterThan(0);
}
@Test
public void testLocal2ServerComparator() {
forEqualProgramsLocal2ServerComparatorShouldBe0();
forDifferentProgramsLocal2ServerComparatorShouldNotBe0();
}
private void forEqualProgramsLocal2ServerComparatorShouldBe0() {
// given
Program program = ProgramBuilder.builder().setName("some name")
.setPathToProgramDirectory("/").setServerAddress("some address").build();
Package _package = PackageBuilder.builder().setName("some package")
.setVersionNumber(1, 2, 3, 4).setProgram(program).build();
String packageName = "some name";
VersionNumber version = version(1, 2, 3, 4);
// when
Update update1 = UpdateBuilder.builder().setPackageName(packageName)
.setDevelopmentVersion(true).setVersionNumber(version).setPackage(_package).build();
Update update2 = UpdateBuilder.builder().setPackageName(packageName)
.setDevelopmentVersion(true).setVersionNumber(version).setPackage(_package).build();
Comparator<Update> comparator = new Update.Local2ServerComparator();
// then
assertThat(comparator.compare(update1, update2)).as(
"For equal Updates Local2ServerComparator should be 0").isEqualTo(0);
assertThat(comparator.compare(update2, update1)).as(
"For equal Updates Local2ServerComparator should be 0").isEqualTo(0);
}
private void forDifferentProgramsLocal2ServerComparatorShouldNotBe0() {
// given
Program program = ProgramBuilder.builder().setName("some name")
.setPathToProgramDirectory("/").setServerAddress("some address").build();
Package _package = PackageBuilder.builder().setName("some package")
.setVersionNumber(1, 2, 3, 4).setProgram(program).build();
String packageName = "some name";
VersionNumber version = version(1, 2, 3, 4);
// when
Update update1 = UpdateBuilder.builder().setPackageName(packageName)
.setDevelopmentVersion(false).setVersionNumber(version).setPackage(_package)
.build();
Update update2 = UpdateBuilder.builder().setPackageName(packageName)
.setDevelopmentVersion(true).setVersionNumber(version).setPackage(_package).build();
Comparator<Update> comparator = new Update.Local2ServerComparator();
// then
assertThat(comparator.compare(update1, update2)).as(
"For different Updates Local2ServerComparator should not be 0").isLessThan(0);
assertThat(comparator.compare(update2, update1)).as(
"For different Updates Local2ServerComparator should not be 0").isGreaterThan(0);
}
@Test(expected = UnsupportedOperationException.class)
public void testGetInstallationsServerPropertiesComparator() {
// given
// when
new Update().getInstallationsServerPropertiesComparator();
// then
// UnsupportedOperationException
}
@Test
public void testGetLocalInstallationsComparator() {
// given
// when
Comparator<Update> comparator = new Update().getLocalInstallationsComparator();
// then
assertThat(comparator).as(
"LocalInstallationsComparator is instance of LocalInstallationsComparator")
.isInstanceOf(Update.LocalInstallationsComparator.class);
}
@Test
public void testGetLocal2ServerComparator() {
// given
// when
Comparator<Update> comparator = new Update().getLocal2ServerComparator();
// then
assertThat(comparator).as("Local2ServerComparator is instance of Local2ServerComparator")
.isInstanceOf(Update.Local2ServerComparator.class);
}
@Test
public void testToString() {
// given
// when
Update update = new Update();
// then
assertThat(update.toString()).as("toString is not null");
}
}