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 TestPackage {
@Test
public void testConstructor() {
// given
// when
Package _package = new Package();
// then
assertThat(_package.getName()).as("Package's name is an empty string").isNotNull()
.isEmpty();
assertThat(_package.getID()).as("Package's ID is an empty string").isNotNull().isEmpty();
assertThat(_package.getProgram()).as("Package's Program is null").isNull();
assertThat(_package.getUpdates()).as("Package's Updates is an empty collection")
.isNotNull().isEmpty();
assertThat(_package.getChangelog()).as("Package's Changelog is empty collection")
.isNotNull().isEmpty();
assertThat(_package.getVersionNumber()).as("Package's Updates is an empty collection")
.isEqualTo(UNVERSIONED);
}
@Test
public void testEquals() {
forEqualPackagesShoudlBeEqual();
forDifferentPackagesShouldNotBeEqual();
}
private void forEqualPackagesShoudlBeEqual() {
// given
Program program = ProgramBuilder.builder().setName("some name")
.setPathToProgramDirectory("some/path").setServerAddress("some address").build();
String name = "some name";
VersionNumber version = version(1, 2, 3, 4);
// when
Package package1 = PackageBuilder.builder().setName(name).setVersionNumber(version)
.setProgram(program).build();
Package package2 = PackageBuilder.builder().setName(name).setVersionNumber(version)
.setProgram(program).build();
// then
assertThat(package1).as("Packages with equal properites should be equal").isEqualTo(
package2);
assertThat(package2).as("Packages with equal properites should be equal").isEqualTo(
package1);
}
private void forDifferentPackagesShouldNotBeEqual() {
// given
Program program = ProgramBuilder.builder().setName("some name")
.setPathToProgramDirectory("some/path").setServerAddress("some address").build();
String name = "some name";
VersionNumber version = version(1, 2, 3, 4);
// when
Package package1 = PackageBuilder.builder().setName("some other name")
.setVersionNumber(version).setProgram(program).build();
Package package2 = PackageBuilder.builder().setName(name).setVersionNumber(version)
.setProgram(program).build();
// then
assertThat(package1).as("Packages with equal properites should be equal").isNotEqualTo(
package2);
assertThat(package2).as("Packages with equal properites should be equal").isNotEqualTo(
package1);
}
@Test
public void testCreationHelperComparator() {
forEqualPackagesCreationHelperComparatorShouldBe0();
forDifferentPackagesCreationHelperComparatorNotShouldBe0();
}
private void forEqualPackagesCreationHelperComparatorShouldBe0() {
// given
String name = "some name";
// when
Package package1 = PackageBuilder.builder().setName(name).build();
Package package2 = PackageBuilder.builder().setName(name).build();
Comparator<Package> comparator = new Package.CreationHelperComparator();
// then
assertThat(comparator.compare(package1, package2)).as(
"For equal Packages CreationHelperComparator should be 0").isEqualTo(0);
assertThat(comparator.compare(package2, package1)).as(
"For equal Packages CreationHelperComparator should be 0").isEqualTo(0);
}
private void forDifferentPackagesCreationHelperComparatorNotShouldBe0() {
// given
String name = "some name";
// when
Package package1 = PackageBuilder.builder().setName(name).build();
Package package2 = PackageBuilder.builder().setName("some other name").build();
Comparator<Package> comparator = new Package.CreationHelperComparator();
// then
assertThat(comparator.compare(package1, package2)).as(
"For equal Packages CreationHelperComparator should not be equal to 0").isLessThan(
0);
assertThat(comparator.compare(package2, package1)).as(
"For equal Packages CreationHelperComparator should not be equal to 0")
.isGreaterThan(0);
}
@Test
public void testInnerConsistencyComparator() {
forEqualPackagesInnerConsistencyComparatorShouldBe0();
forDifferentPackagesInnerConsistencyComparatorNotShouldBe0();
}
private void forEqualPackagesInnerConsistencyComparatorShouldBe0() {
// given
Program program = ProgramBuilder.builder().setName("some name")
.setPathToProgramDirectory("some/path").setServerAddress("some address").build();
String name = "some name";
// when
Package package1 = PackageBuilder.builder().setName(name).setProgram(program).build();
Package package2 = PackageBuilder.builder().setName(name).setProgram(program).build();
Comparator<Package> comparator = new Package.InnerConsistencyComparator();
// then
assertThat(comparator.compare(package1, package2)).as(
"For equal Packages InnerConsistencyComparator should be 0").isEqualTo(0);
assertThat(comparator.compare(package2, package1)).as(
"For equal Packages InnerConsistencyComparator should be 0").isEqualTo(0);
}
private void forDifferentPackagesInnerConsistencyComparatorNotShouldBe0() {
// given
Program program = ProgramBuilder.builder().setName("some name")
.setPathToProgramDirectory("some/path").setServerAddress("some address").build();
String name = "some name";
// when
Package package1 = PackageBuilder.builder().setName(name).setProgram(program).build();
Package package2 = PackageBuilder.builder().setName("some other name").setProgram(program)
.build();
Comparator<Package> comparator = new Package.InnerConsistencyComparator();
// then
assertThat(comparator.compare(package1, package2)).as(
"For equal Packages CreationHelperComparator should not be equal to 0").isLessThan(
0);
assertThat(comparator.compare(package2, package1)).as(
"For equal Packages CreationHelperComparator should not be equal to 0")
.isGreaterThan(0);
}
@Test
public void testOuterMatchingComparator() {
forEqualPackagesOuterMatchingComparatorShouldBe0();
forDifferentPackagesOuterMatchingComparatorNotShouldBe0();
}
private void forEqualPackagesOuterMatchingComparatorShouldBe0() {
// given
String name = "some name";
// when
Package package1 = PackageBuilder.builder().setName(name).build();
Package package2 = PackageBuilder.builder().setName(name).build();
Comparator<Package> comparator = new Package.OuterMatchingComparator();
// then
assertThat(comparator.compare(package1, package2)).as(
"For equal Packages OuterMatchingComparator should be 0").isEqualTo(0);
assertThat(comparator.compare(package2, package1)).as(
"For equal Packages OuterMatchingComparator should be 0").isEqualTo(0);
}
private void forDifferentPackagesOuterMatchingComparatorNotShouldBe0() {
// given
String name = "some name";
// when
Package package1 = PackageBuilder.builder().setName(name).build();
Package package2 = PackageBuilder.builder().setName("some other name").build();
Comparator<Package> comparator = new Package.OuterMatchingComparator();
// then
assertThat(comparator.compare(package1, package2)).as(
"For equal Packages OuterMatchingComparator should not be equal to 0")
.isLessThan(0);
assertThat(comparator.compare(package2, package1)).as(
"For equal Packages OuterMatchingComparator should not be equal to 0")
.isGreaterThan(0);
}
@Test
public void testGetInstallationsServerPropertiesComparator() {
// given
// when
Comparator<Package> comparator = new Package().getInstallationsServerPropertiesComparator();
// then
assertThat(comparator).as(
"InstallationsServerPropertiesComparator is instance of CreationHelperComparator")
.isInstanceOf(Package.CreationHelperComparator.class);
}
@Test
public void testGetLocalInstallationsComparator() {
// given
// when
Comparator<Package> comparator = new Package().getLocalInstallationsComparator();
// then
assertThat(comparator).as(
"LocalInstallationsComparator is instance of InnerConsistencyComparator")
.isInstanceOf(Package.InnerConsistencyComparator.class);
}
@Test
public void testGetLocal2ServerComparator() {
// given
// when
Comparator<Package> comparator = new Package().getLocal2ServerComparator();
// then
assertThat(comparator).as("Local2ServerComparator is instance of OuterMatchingComparator")
.isInstanceOf(Package.OuterMatchingComparator.class);
}
@Test
public void testToString() {
// given
// when
Package _package = new Package();
// then
assertThat(_package.toString()).as("toString is not null");
}
}