File size: 2,131 Bytes
9438a57 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class SemVerTest {
@Test void parseAndToString() {
assertEquals("1.2.3", SemVer.parse("1.2.3").toString());
assertEquals("1.0.0-rc.1", SemVer.parse(" 1.0.0-rc.1 ").toString());
}
@Test void parseRejectsBadInput() {
assertThrows(IllegalArgumentException.class, () -> SemVer.parse(""));
assertThrows(IllegalArgumentException.class, () -> SemVer.parse(null));
assertThrows(IllegalArgumentException.class, () -> SemVer.parse("1.2"));
assertThrows(IllegalArgumentException.class, () -> SemVer.parse("1.2.3.4"));
assertThrows(IllegalArgumentException.class, () -> SemVer.parse("1.x.3"));
}
@Test void negativeRejected() {
assertThrows(IllegalArgumentException.class, () -> new SemVer(1, -1, 0, null));
}
@Test void bumps() {
SemVer v = SemVer.parse("1.4.7-beta");
assertEquals("2.0.0", v.bumpMajor().toString());
assertEquals("1.5.0", v.bumpMinor().toString());
assertEquals("1.4.8", v.bumpPatch().toString());
}
@Test void numericOrdering() {
assertTrue(SemVer.parse("1.10.0").compareTo(SemVer.parse("1.9.9")) > 0);
assertTrue(SemVer.parse("2.0.0").compareTo(SemVer.parse("10.0.0")) < 0);
assertTrue(SemVer.parse("1.0.1").compareTo(SemVer.parse("1.0.0")) > 0);
}
@Test void preReleaseComesBeforeRelease() {
assertTrue(SemVer.parse("1.0.0-rc.1").compareTo(SemVer.parse("1.0.0")) < 0);
assertTrue(SemVer.parse("1.0.0").compareTo(SemVer.parse("1.0.0-alpha")) > 0);
assertTrue(SemVer.parse("1.0.0-alpha").compareTo(SemVer.parse("1.0.0-beta")) < 0);
}
@Test void equalityAndPreReleaseFlag() {
assertEquals(SemVer.parse("1.2.3"), new SemVer(1, 2, 3, ""));
assertNotEquals(SemVer.parse("1.2.3"), SemVer.parse("1.2.3-rc"));
assertEquals(SemVer.parse("1.2.3").hashCode(), new SemVer(1, 2, 3, null).hashCode());
assertTrue(SemVer.parse("1.0.0-rc").isPreRelease());
assertFalse(SemVer.parse("1.0.0").isPreRelease());
}
}
|