/* * JBoss, Home of Professional Open Source. * Copyright 2016 Red Hat, Inc., and individual contributors * as indicated by the @author tags. * * 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.jboss.modules; import static org.jboss.modules.Version.parse; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.junit.Test; /** * @author <a href="mailto:david.lloyd@redhat.com">David M. Lloyd</a> */ public class VersionTest { private static void parseFail(String str) { try { parse(str); fail("Expected parsing to fail for " + str); } catch (IllegalArgumentException ok) { } } @Test public void testParsing() { parse("1"); parse("a"); parseFail("."); parse("1.1"); parse("1.a"); parse("1a"); parse("a1"); parse("1+1"); parse("1-1"); parse("1_1"); parse("1_1a.1993-12-31"); parseFail("1."); parseFail("1.."); parseFail(".1"); } private boolean testCompare(Version v1, Version v2) { final boolean res = v1.equals(v2); if (res) { assertTrue(v1.hashCode() == v2.hashCode()); } return res; } @Test public void testEquals() { assertTrue(testCompare(parse("1.0"), parse("1.0"))); assertTrue(testCompare(parse("a1"), parse("a1"))); assertFalse(testCompare(parse("1.1"), parse("1.0"))); assertFalse(testCompare(parse("1.1"), parse("1.01"))); assertFalse(testCompare(parse("1.1"), parse("1.10"))); assertFalse(testCompare(parse("1.1"), parse("1.100"))); } @Test public void testCompareTo() { assertEquals(0, parse("1.0").compareTo(parse("1.0"))); assertEquals(-1, parse("1.0").compareTo(parse("1.0.0"))); assertEquals(1, parse("1.0.0.0").compareTo(parse("1.0.0"))); assertEquals(1, parse("5u1").compareTo(parse("5"))); assertEquals(-1, parse("5u1").compareTo(parse("5.1"))); } @Test public void testIterate() { Version.Iterator i = parse("1.0.0u2").iterator(); assertTrue(i.hasNext()); i.next(); assertTrue(i.isPart()); assertTrue(i.isNumberPart()); assertFalse(i.isAlphaPart()); assertFalse(i.isSeparator()); assertFalse(i.isEmptySeparator()); assertFalse(i.isNonEmptySeparator()); assertEquals(1, i.getNumberPartAsInt()); assertEquals(1, i.getNumberPartAsLong()); assertEquals("1", i.getNumberPartAsString()); assertTrue(i.hasNext()); i.next(); assertFalse(i.isPart()); assertFalse(i.isNumberPart()); assertFalse(i.isAlphaPart()); assertTrue(i.isSeparator()); assertFalse(i.isEmptySeparator()); assertTrue(i.isNonEmptySeparator()); assertEquals('.', i.getSeparatorCodePoint()); assertTrue(i.hasNext()); i.next(); assertTrue(i.isPart()); assertTrue(i.isNumberPart()); assertFalse(i.isAlphaPart()); assertFalse(i.isSeparator()); assertFalse(i.isEmptySeparator()); assertFalse(i.isNonEmptySeparator()); assertEquals(0, i.getNumberPartAsInt()); assertEquals(0, i.getNumberPartAsLong()); assertEquals("0", i.getNumberPartAsString()); assertTrue(i.hasNext()); i.next(); assertFalse(i.isPart()); assertFalse(i.isNumberPart()); assertFalse(i.isAlphaPart()); assertTrue(i.isSeparator()); assertFalse(i.isEmptySeparator()); assertTrue(i.isNonEmptySeparator()); assertEquals('.', i.getSeparatorCodePoint()); assertTrue(i.hasNext()); i.next(); assertTrue(i.isPart()); assertTrue(i.isNumberPart()); assertFalse(i.isAlphaPart()); assertFalse(i.isSeparator()); assertFalse(i.isEmptySeparator()); assertFalse(i.isNonEmptySeparator()); assertEquals(0, i.getNumberPartAsInt()); assertEquals(0, i.getNumberPartAsLong()); assertEquals("0", i.getNumberPartAsString()); assertTrue(i.hasNext()); i.next(); assertFalse(i.isPart()); assertFalse(i.isNumberPart()); assertFalse(i.isAlphaPart()); assertTrue(i.isSeparator()); assertTrue(i.isEmptySeparator()); assertFalse(i.isNonEmptySeparator()); assertTrue(i.hasNext()); i.next(); assertTrue(i.isPart()); assertFalse(i.isNumberPart()); assertTrue(i.isAlphaPart()); assertFalse(i.isSeparator()); assertFalse(i.isEmptySeparator()); assertFalse(i.isNonEmptySeparator()); assertEquals("u", i.getAlphaPart()); assertTrue(i.hasNext()); i.next(); assertFalse(i.isPart()); assertFalse(i.isNumberPart()); assertFalse(i.isAlphaPart()); assertTrue(i.isSeparator()); assertTrue(i.isEmptySeparator()); assertFalse(i.isNonEmptySeparator()); assertTrue(i.hasNext()); i.next(); assertTrue(i.isPart()); assertTrue(i.isNumberPart()); assertFalse(i.isAlphaPart()); assertFalse(i.isSeparator()); assertFalse(i.isEmptySeparator()); assertFalse(i.isNonEmptySeparator()); assertEquals(2, i.getNumberPartAsInt()); assertEquals(2, i.getNumberPartAsLong()); assertEquals("2", i.getNumberPartAsString()); assertFalse(i.hasNext()); } }