package japicmp.versioning;
import japicmp.exception.JApiCmpException;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
public class VersionChangeTest {
@Test
public void testOneVersionNoChange() {
VersionChange vc = new VersionChange(Collections.singletonList(new SemanticVersion(1, 2, 3)), Collections.singletonList(new SemanticVersion(1, 2, 3)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.UNCHANGED));
}
@Test
public void testOneVersionPatchChange() {
VersionChange vc = new VersionChange(Collections.singletonList(new SemanticVersion(1, 2, 3)), Collections.singletonList(new SemanticVersion(1, 2, 4)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.PATCH));
}
@Test
public void testOneVersionMinorChange() {
VersionChange vc = new VersionChange(Collections.singletonList(new SemanticVersion(1, 2, 3)), Collections.singletonList(new SemanticVersion(1, 3, 0)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MINOR));
}
@Test
public void testOneVersionMajorChange() {
VersionChange vc = new VersionChange(Collections.singletonList(new SemanticVersion(1, 2, 3)), Collections.singletonList(new SemanticVersion(2, 0, 0)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MAJOR));
}
@Test
public void testTwoVersionsNoChange() {
VersionChange vc = new VersionChange(Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 2, 3)), Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 2, 3)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.UNCHANGED));
}
@Test
public void testTwoVersionsPatchChange() {
VersionChange vc = new VersionChange(Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 2, 3)), Arrays.asList(new SemanticVersion(1, 2, 4), new SemanticVersion(1, 2, 4)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.PATCH));
}
@Test
public void testTwoVersionsMinorChange() {
VersionChange vc = new VersionChange(Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 2, 3)), Arrays.asList(new SemanticVersion(1, 3, 0), new SemanticVersion(1, 3, 0)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MINOR));
}
@Test
public void testTwoVersionsMajorChange() {
VersionChange vc = new VersionChange(Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 2, 3)), Arrays.asList(new SemanticVersion(2, 0, 0), new SemanticVersion(2, 0, 0)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MAJOR));
}
@Test
public void testTwoVersionsMajorChangeNotAllVersionsTheSame() {
VersionChange vc = new VersionChange(Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 2, 3)), Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 3, 0)), false, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MINOR));
}
@Test(expected = JApiCmpException.class)
public void testTwoVersionsMajorChangeNotAllVersionsTheSameAndDifferentNumberofArchives() {
VersionChange vc = new VersionChange(Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 2, 4)), Arrays.asList(new SemanticVersion(1, 2, 3), new SemanticVersion(1, 3, 0), new SemanticVersion(1, 4, 0)), false, false);
vc.computeChangeType();
fail();
}
@Test
public void testMissingOldVersion() {
VersionChange vc = new VersionChange(Collections.singletonList(new SemanticVersion(1, 2, 3)), Collections.singletonList(new SemanticVersion(1, 2, 3)), true, false);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.UNCHANGED));
}
@Test
public void testMissingNewVersion() {
VersionChange vc = new VersionChange(Collections.singletonList(new SemanticVersion(1, 2, 3)), Collections.singletonList(new SemanticVersion(1, 2, 3)), false, true);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.UNCHANGED));
}
@Test
public void testNoParameter() {
VersionChange vc = new VersionChange(new ArrayList<SemanticVersion>(), new ArrayList<SemanticVersion>(), false, false);
assertThat(vc.computeChangeType().isPresent(), is(false));
}
}