/* * Zed Attack Proxy (ZAP) and its related class files. * * ZAP is an HTTP/HTTPS proxy for assessing web application security. * * Copyright 2014 The ZAP Development Team * * 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.zaproxy.zap; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.lessThan; import static org.junit.Assert.assertThat; import org.junit.Test; import org.zaproxy.zap.Version; /** * Unit test for {@link Version}. */ public class VersionUnitTest { private static final String VALID_VERSION = "1.0.0"; @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionIfVersionIsNull() { // Given String version = null; // When new Version(version); // Then = Exception } @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionIfVersionIsEmpty() { // Given String version = ""; // When new Version(version); // Then = Exception } @Test(expected = IllegalArgumentException.class) public void shouldNotAcceptVersionWithOnlyMajorVersion() { // Given String versionWithOnlyMajorNumber = "1"; // When new Version(versionWithOnlyMajorNumber); // Then = Exception } @Test(expected = IllegalArgumentException.class) public void shouldNotAcceptVersionWithOnlyMajorAndMinorVersion() { // Given String versionWithOnlyMajorAndMinorNumbers = "1.0"; // When new Version(versionWithOnlyMajorAndMinorNumbers); // Then = Exception } @Test public void shouldAcceptVersionWithMajorMinorAndPatchNumbers() { // Given String versionWithOnlyMajorMinorAndPatchNumbers = "1.0.0"; // When new Version(versionWithOnlyMajorMinorAndPatchNumbers); // Then = no exception } @Test public void shouldReturnTrueWhenEqualingToTheSameVersionNumber() { // Given Version version = new Version("1.0.0"); Version differentVersion = new Version("1.0.0"); // When boolean equals = version.equals(differentVersion); // Then assertThat(equals, is(equalTo(true))); } @Test public void shouldReturnFalseWhenEqualingToDifferntVersionNumbers() { // Given Version version = new Version("1.0.0"); Version differentVersion = new Version("2.0.0"); // When boolean equals = version.equals(differentVersion); // Then assertThat(equals, is(equalTo(false))); } @Test public void shouldReturnPositiveNumberWhenComparingToOlderPatchVersion() { // Given Version version = new Version("2.0.1"); Version olderVersion = new Version("2.0.0"); // When int comparisonResult = version.compareTo(olderVersion); // Then assertThat(comparisonResult, is(greaterThan(0))); } @Test public void shouldReturnPositiveNumberWhenComparingToOlderMinorVersion() { // Given Version version = new Version("2.1.0"); Version olderVersion = new Version("2.0.0"); // When int comparisonResult = version.compareTo(olderVersion); // Then assertThat(comparisonResult, is(greaterThan(0))); } @Test public void shouldReturnPositiveNumberWhenComparingToOlderMajorVersion() { // Given Version version = new Version("3.0.0"); Version olderVersion = new Version("2.0.0"); // When int comparisonResult = version.compareTo(olderVersion); // Then assertThat(comparisonResult, is(greaterThan(0))); } @Test public void shouldReturnZeroWhenComparingToEqualVersion() { // Given Version version = new Version("1.0.0"); Version sameVersion = new Version("1.0.0"); // When int comparisonResult = version.compareTo(sameVersion); // Then assertThat(comparisonResult, is(equalTo(0))); } @Test public void shouldReturnNegativeNumberWhenComparingToNewerPatchVersion() { // Given Version version = new Version("1.0.0"); Version newerVersion = new Version("1.0.1"); // When int comparisonResult = version.compareTo(newerVersion); // Then assertThat(comparisonResult, is(lessThan(0))); } @Test public void shouldReturnNegativeNumberWhenComparingToNewerMinorVersion() { // Given Version version = new Version("1.0.0"); Version newerVersion = new Version("1.1.0"); // When int comparisonResult = version.compareTo(newerVersion); // Then assertThat(comparisonResult, is(lessThan(0))); } @Test public void shouldReturnNegativeNumberWhenComparingToNewerMajorVersion() { // Given Version version = new Version("1.0.0"); Version newerVersion = new Version("2.0.0"); // When int comparisonResult = version.compareTo(newerVersion); // Then assertThat(comparisonResult, is(lessThan(0))); } @Test public void shouldMatchExactVersion() { // Given Version version = new Version("1.2.3"); String rangeVersion = "1.2.3"; // When boolean matchResult = version.matches(rangeVersion); // Then assertThat(matchResult, is(equalTo(true))); } @Test public void shouldMatchMinorWildcardedVersionWithEqualMajorVersion() { // Given Version version = new Version("1.0.0"); String rangeVersion = "1.*"; // When boolean matchResult = version.matches(rangeVersion); // Then assertThat(matchResult, is(equalTo(true))); } @Test public void shouldMatchMinorWildcardedVersionWithEqualMajorVersionAndDifferentMinorVersion() { // Given Version version = new Version("1.5.0"); String rangeVersion = "1.*"; // When boolean matchResult = version.matches(rangeVersion); // Then assertThat(matchResult, is(equalTo(true))); } @Test public void shouldMatchMinorWildcardedVersionWithEqualMajorVersionAndDifferentPatchVersion() { // Given Version version = new Version("1.0.4"); String rangeVersion = "1.*"; // When boolean matchResult = version.matches(rangeVersion); // Then assertThat(matchResult, is(equalTo(true))); } @Test public void shouldMatchMinorWildcardedVersionWithEqualMajorVersionAndDifferentMinorAndPatchVersion() { // Given Version version = new Version("1.9.3"); String rangeVersion = "1.*"; // When boolean matchResult = version.matches(rangeVersion); // Then assertThat(matchResult, is(equalTo(true))); } @Test public void shouldNotMatchMinorWildcardedVersionWithGreaterMajorVersion() { // Given Version version = new Version("2.0.0"); String rangeVersion = "1.*"; // When boolean matchResult = version.matches(rangeVersion); // Then assertThat(matchResult, is(equalTo(false))); } @Test public void shouldReturnVersionAsString() { // Given Version version = new Version("1.2.3"); // When String string = version.toString(); // Then assertThat(string, is(equalTo("1.2.3"))); } }