package ch.retorte.intervalmusiccompositor; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import org.junit.Test; /** * @author nw */ public class VersionTest { @Test public void shouldReflectVersion() { // when Version v0 = new Version(0); Version v1 = new Version(1); Version v2_3 = new Version(2, 3); Version v4_5_6 = new Version(4, 5, 6); Version v7_8_9_10 = new Version(7, 8, 9, 10); // then assertVersion(v0, 0, 0, 0, 0); assertVersion(v1, 1, 0, 0, 0); assertVersion(v2_3, 2, 3, 0, 0); assertVersion(v4_5_6, 4, 5, 6, 0); assertVersion(v7_8_9_10, 7, 8, 9, 10); } @Test public void shouldParseVersionString() { // given String versionString = "9.8.7.6"; // when Version version = new Version(versionString); // then assertVersion(version, 9, 8, 7, 6); } @Test public void shouldCompare() { // given Version higherVersion = new Version(10, 1, 2, 3); Version lessHigherVersion = new Version(10, 1, 2, 2); Version inbetweenVersion = new Version(5, 4, 5, 6); Version lowerVersion = new Version(1, 7, 8, 9); Version otherInbetweenVersion = new Version("5.4.5.6"); // then assertHigherThan(higherVersion, lessHigherVersion); assertHigherThan(lessHigherVersion, inbetweenVersion); assertHigherThan(inbetweenVersion, lowerVersion); assertThat(inbetweenVersion.compareTo(otherInbetweenVersion), is(0)); } @Test public void shouldPrettyPrint() { assertThat(new Version(1, 2, 3).toString(), is("1.2.3")); } private void assertVersion(Version v, int major, int minor, int revision, int build) { assertThat(v.getMajor(), is(major)); assertThat(v.getMinor(), is(minor)); assertThat(v.getRevision(), is(revision)); assertThat(v.getBuild(), is(build)); } private void assertHigherThan(Version higherVersion, Version lowerVersion) { assertThat(higherVersion.compareTo(lowerVersion), is(1)); } }