// // Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you 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.apache.cloudstack.utils; import com.google.common.testing.EqualsTester; import com.tngtech.java.junit.dataprovider.DataProvider; import com.tngtech.java.junit.dataprovider.DataProviderRunner; import org.junit.Test; import org.junit.runner.RunWith; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @RunWith(DataProviderRunner.class) public final class CloudStackVersionTest { @Test @DataProvider({ "1.2.3, 1.2.3", "1.2.3.4, 1.2.3.4", "1.2.3-12, 1.2.3", "1.2.3.4-14, 1.2.3.4" }) public void testValidParse(final String inputValue, final String expectedVersion) { final CloudStackVersion version = CloudStackVersion.parse(inputValue); assertNotNull(version); assertEquals(expectedVersion, version.toString()); } @Test(expected = IllegalArgumentException.class) @DataProvider({ "1.2", "1", "1.2.3.4.5", "aaaa", "", " ", "1.2.3.4.5"}) public void testInvalidParse(final String invalidValue) { CloudStackVersion.parse(invalidValue); } @Test @DataProvider({ "1.0.0", "1.0.0.0", "1.2.3", "1.2.3.4" }) public void testEquals(final String value) { final CloudStackVersion version = CloudStackVersion.parse(value); assertNotNull(version); final CloudStackVersion thatVersion = CloudStackVersion.parse(value); assertNotNull(thatVersion); new EqualsTester() .addEqualityGroup(version, thatVersion) .testEquals(); } @Test @DataProvider({ "1.0.0.0, 1.0.0.0", "1.0.0, 1.0.0", "1.0.0.0, 1.0.0", "1.0.0-10, 1.0.0-10", "1.0.0-10, 1.0.0", "1.0.0.0, 1.0.0-10", "1.0.0.0, 1.0.0.0-10", "1.0.0-10, 1.0.0-11", "1.0.0-10, 1.0.0.0-14", "1.0.0.0-14, 1.0.0.0-15" }) public void testEqualCompareTo(final String value, final String thatValue) { final CloudStackVersion version = CloudStackVersion.parse(value); assertNotNull(version); final CloudStackVersion thatVersion = CloudStackVersion.parse(thatValue); assertNotNull(thatVersion); assertEquals(0, version.compareTo(thatVersion)); assertEquals(0, thatVersion.compareTo(version)); } @Test @DataProvider({ "1.2.3.4, 1.2.3", "1.2.3, 1.0.0.0", "1.2.3.4, 1.0.0", "2.0.0, 1.2.3", "2.0.0, 1.2.3.4", "2.0.0.0, 1.2.3", "2.0.0.0, 1.2.3.4", "2.0.0.0, 1.2.3", "1.3.0, 1.2.3.4", "1.3.0.0, 1.2.3.4", "1.3.0.0, 1.2.3", "1.2.3.4-10, 1.0.0.0-5", "1.2.3-10, 1.0.0-5", "1.2.3.4, 1.0.0.0-5", "1.2.3.4-10, 1.0.0" }) public void testGreaterThanAndLessThanCompareTo(final String value, final String thatValue) { final CloudStackVersion version = CloudStackVersion.parse(value); assertNotNull(version); final CloudStackVersion thatVersion = CloudStackVersion.parse(thatValue); assertNotNull(thatVersion); assertEquals(1, version.compareTo(thatVersion)); assertEquals(-1, thatVersion.compareTo(version)); } }