package com.constellio.app.services.migrations;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Before;
import org.junit.Test;
import com.constellio.sdk.tests.ConstellioTest;
public class VersionsComparatorTest extends ConstellioTest {
VersionsComparator versionsComparator;
String version111 = "1.1.1";
String version1 = "1";
String version213 = "2.1.3";
String version254 = "2.5.4";
String version4 = "4";
String version011 = "0.1.1";
String version001 = "0.0.1";
@Before
public void setUp() {
versionsComparator = new VersionsComparator();
}
@Test
public void whenCompareTwoVersionsThenZeroIfEqualsOneIfGreaterNegativeOneIfLower() {
assertThat(versionsComparator.compare(version1, version4)).isEqualTo(-1);
assertThat(versionsComparator.compare(version1, version111)).isEqualTo(-1);
assertThat(versionsComparator.compare(version111, version4)).isEqualTo(-1);
assertThat(versionsComparator.compare(version1, version001)).isEqualTo(1);
assertThat(versionsComparator.compare(version001, version011)).isEqualTo(-1);
assertThat(versionsComparator.compare(version213, version254)).isEqualTo(-1);
assertThat(versionsComparator.compare(version1, version1)).isEqualTo(0);
assertThat(versionsComparator.compare(version1, version254)).isEqualTo(-1);
assertThat(versionsComparator.compare(version254, version1)).isEqualTo(1);
assertThat(versionsComparator.compare("5.1-1", "5.1")).isEqualTo(1);
assertThat(versionsComparator.compare("5.1", "5.1-1")).isEqualTo(-1);
assertThat(versionsComparator.compare("5.1-1", "5.1-1")).isEqualTo(0);
assertThat(versionsComparator.compare("5.1-2", "5.1-3")).isEqualTo(-1);
assertThat(versionsComparator.compare("5.1-3", "5.1-1")).isEqualTo(1);
}
@Test
public void whenComparingTwoVersionsUsingStaticMethodThenCorrect()
throws Exception {
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.1", "5.1.1")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.1", "5.0.1")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.1", "5.0.1")).isFalse();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.2.2", "5.0.2.1")).isFalse();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.2.2", "5.0.2.2")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.2.2", "5.0.2.3")).isTrue();
}
@Test
public void whenComparingVersionsWithDifferentNumberOfPartsThenOk()
throws Exception {
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.1", "5.1.1.0")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.1.0", "5.1.1")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.1.0", "5.1.1.0")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.1", "5.0.1.0")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.1.0", "5.0.1")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.0.1.0", "5.0.1.0")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.1", "5.0.1.0")).isFalse();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.1.0", "5.0.1")).isFalse();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.1.0", "5.0.1.0")).isFalse();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.0.1", "5.1.1.1.0")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.0.1.0", "5.1.1.1")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.0.1.0", "5.1.1.1.0")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.0.1", "5.1.0.1.0")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.0.1.0", "5.1.0.1")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.0.1.0", "5.1.0.1.0")).isTrue();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.1.1", "5.1.0.1.0")).isFalse();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.1.1.0", "5.1.0.1")).isFalse();
assertThat(VersionsComparator.isFirstVersionBeforeOrEqualToSecond("5.1.1.1.0", "5.1.0.1.0")).isFalse();
}
}