/* * Copyright 2015-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.data.util; import static org.assertj.core.api.Assertions.*; import org.hamcrest.Matchers; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; /** * Unit tests for {@link Version}. * * @author Oliver Gierke */ public class VersionUnitTests { public @Rule ExpectedException exception = ExpectedException.none(); @Test // DATCMNS-384 public void sameVersionsEqualOneDigits() { Version first = new Version(6); Version second = new Version(6); assertThat(first).isEqualTo(second); assertThat(second).isEqualTo(first); } @Test // DATCMNS-384 public void sameVersionsEqualTwoDigits() { Version first = new Version(5, 2); Version second = new Version(5, 2); assertThat(first).isEqualTo(second); assertThat(second).isEqualTo(first); } @Test // DATCMNS-384 public void sameVersionsEqualThreeDigits() { Version first = new Version(1, 2, 3); Version second = new Version(1, 2, 3); assertThat(first).isEqualTo(second); assertThat(second).isEqualTo(first); } @Test // DATCMNS-384 public void sameVersionsEqualFourDigits() { Version first = new Version(1, 2, 3, 1000); Version second = new Version(1, 2, 3, 1000); assertThat(first).isEqualTo(second); assertThat(second).isEqualTo(first); } @Test // DATCMNS-384 public void parsesVersionCorrectlyOneDigits() { Version version = Version.parse("5"); assertThat(version).isEqualTo(new Version(5)); } @Test // DATCMNS-384 public void parsesVersionCorrectlyTwoDigits() { Version version = Version.parse("5.2"); assertThat(version).isEqualTo(new Version(5, 2)); } @Test // DATCMNS-384 public void parsesVersionCorrectlyThreeDigits() { Version version = Version.parse("12.1.3"); assertThat(version).isEqualTo(new Version(12, 1, 3)); } @Test // DATCMNS-384 public void parsesVersionCorrectlyFourDigits() { Version version = Version.parse("12.1.3.1000"); assertThat(version).isEqualTo(new Version(12, 1, 3, 1000)); } @Test // DATCMNS-384 public void comparesToCorrectly() { Version version = new Version(1, 2, 3, 1000); Version nextBuild = new Version(1, 2, 3, 1001); Version nextBugfix = new Version(1, 2, 4); Version nextMinor = new Version(1, 3); Version nextMajor = new Version(2); assertThat(nextMajor.isGreaterThan(nextMinor)).isTrue(); assertThat(nextMajor.isGreaterThan(nextMajor)).isFalse(); assertThat(nextMajor.is(nextMajor)).isTrue(); assertThat(nextMinor.isLessThan(nextMajor)).isTrue(); assertThat(nextMinor.isLessThan(nextMinor)).isFalse(); assertThat(nextMajor.compareTo(nextMajor)).isEqualTo(0); assertThat(nextMinor.compareTo(nextMinor)).isEqualTo(0); assertThat(nextBugfix.compareTo(nextBugfix)).isEqualTo(0); assertThat(nextBuild.compareTo(nextBuild)).isEqualTo(0); assertThat(version.compareTo(nextMajor)).isLessThan(0); assertThat(version.compareTo(nextMinor)).isLessThan(0); assertThat(version.compareTo(nextBugfix)).isLessThan(0); assertThat(version.compareTo(nextBuild)).isLessThan(0); assertThat(version.compareTo(null)).isGreaterThan(0); assertThat(nextMajor.compareTo(version)).isGreaterThan(0); assertThat(nextMinor.compareTo(version)).isGreaterThan(0); assertThat(nextBugfix.compareTo(version)).isGreaterThan(0); assertThat(nextBuild.compareTo(version)).isGreaterThan(0); } @Test // DATCMNS-384 public void removesTrailingZerosAfterSecondValueForToString() { assertThat(new Version(2).toString()).isEqualTo("2.0"); assertThat(new Version(2, 0).toString()).isEqualTo("2.0"); assertThat(new Version(2, 0, 0).toString()).isEqualTo("2.0"); assertThat(new Version(2, 0, 0, 0).toString()).isEqualTo("2.0"); assertThat(new Version(2, 0, 1).toString()).isEqualTo("2.0.1"); assertThat(new Version(2, 0, 1, 0).toString()).isEqualTo("2.0.1"); assertThat(new Version(2, 0, 0, 1).toString()).isEqualTo("2.0.0.1"); } @Test // DATACMNS-496 public void parseShouldRemoveNonNumericVersionParts() { assertThat(Version.parse("2.0.0-rc1")).isEqualTo(new Version(2, 0, 0)); } @Test // DATACMNS-719, DATACMNS-496 public void removesNonNumericSuffix() { assertThat(Version.parse("4.2.0.RELEASE")).isEqualTo(new Version(4, 2, 0)); } @Test // DATACMNS-719, DATACMNS-496 public void rejectsNonNumericPartOnNonLastPosition() { exception.expect(IllegalArgumentException.class); exception.expectCause(Matchers.instanceOf(IllegalArgumentException.class)); exception.expectMessage("1.RELEASE.2"); Version.parse("1.RELEASE.2"); } }