/** * Licensed to Apereo under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright ownership. Apereo * 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 the * following location: * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>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.apereo.portal.version; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; import org.apereo.portal.version.om.Version; import org.junit.Test; public class VersionUtilsTest { @Test public void testVersionParsing() { Version version = VersionUtils.parseVersion("4.0.5"); assertNotNull(version); assertEquals(4, version.getMajor()); assertEquals(0, version.getMinor()); assertEquals(5, version.getPatch()); assertNull(version.getLocal()); version = VersionUtils.parseVersion("4.0.5.3"); assertNotNull(version); assertEquals(4, version.getMajor()); assertEquals(0, version.getMinor()); assertEquals(5, version.getPatch()); assertEquals(Integer.valueOf(3), version.getLocal()); } @Test public void testVersionUpgrade() { Version v1 = VersionUtils.parseVersion("4.0.5"); Version v2 = VersionUtils.parseVersion("4.0.5"); assertTrue(VersionUtils.canUpdate(v1, v2)); assertTrue(VersionUtils.canUpdate(v2, v1)); v2 = VersionUtils.parseVersion("4.0.5.1"); assertTrue(VersionUtils.canUpdate(v1, v2)); assertFalse(VersionUtils.canUpdate(v2, v1)); v1 = VersionUtils.parseVersion("4.0.5.2"); v2 = VersionUtils.parseVersion("4.0.5.3"); assertTrue(VersionUtils.canUpdate(v1, v2)); assertFalse(VersionUtils.canUpdate(v2, v1)); v2 = VersionUtils.parseVersion("4.0.6"); assertTrue(VersionUtils.canUpdate(v1, v2)); assertFalse(VersionUtils.canUpdate(v2, v1)); } @Test public void testGetMostSpecificMatchingField() { Version v1 = VersionUtils.parseVersion("4.0.5"); Version v2 = VersionUtils.parseVersion("4.0.5"); assertEquals(Version.Field.LOCAL, VersionUtils.getMostSpecificMatchingField(v1, v2)); assertEquals(Version.Field.LOCAL, VersionUtils.getMostSpecificMatchingField(v2, v1)); v2 = VersionUtils.parseVersion("4.0.5.1"); assertEquals(Version.Field.PATCH, VersionUtils.getMostSpecificMatchingField(v1, v2)); assertEquals(Version.Field.PATCH, VersionUtils.getMostSpecificMatchingField(v2, v1)); v1 = VersionUtils.parseVersion("4.0.5.2"); v2 = VersionUtils.parseVersion("4.0.5.3"); assertEquals(Version.Field.PATCH, VersionUtils.getMostSpecificMatchingField(v1, v2)); assertEquals(Version.Field.PATCH, VersionUtils.getMostSpecificMatchingField(v2, v1)); v2 = VersionUtils.parseVersion("4.0.6"); assertEquals(Version.Field.MINOR, VersionUtils.getMostSpecificMatchingField(v1, v2)); assertEquals(Version.Field.MINOR, VersionUtils.getMostSpecificMatchingField(v2, v1)); v2 = VersionUtils.parseVersion("4.1.0.0"); assertEquals(Version.Field.MAJOR, VersionUtils.getMostSpecificMatchingField(v1, v2)); assertEquals(Version.Field.MAJOR, VersionUtils.getMostSpecificMatchingField(v2, v1)); v2 = VersionUtils.parseVersion("5.6.7"); assertNull(VersionUtils.getMostSpecificMatchingField(v1, v2)); assertNull(VersionUtils.getMostSpecificMatchingField(v2, v1)); } }