/****************************************************************************/
/* File: SemverTest.java */
/* Author: F. Georges - H2O Consulting */
/* Date: 2010-11-15 */
/* Tags: */
/* Copyright (c) 2010-2013 Florent Georges (see end of file.) */
/* ------------------------------------------------------------------------ */
package org.expath.pkg.repo.deps;
import org.expath.pkg.repo.PackageException;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Unit tests of {@code Semver}.
*
* @author Florent Georges
*/
public class SemverTest
{
@Test
public void testParseTemplateMajor() throws PackageException
{
String[] parts = Semver.parse("1");
assertEquals("number of parts", 1, parts.length);
assertEquals("major number", "1", parts[0]);
}
@Test
public void testParseTemplateMinor() throws PackageException
{
String[] parts = Semver.parse("1.2");
assertEquals("number of parts", 2, parts.length);
assertEquals("major number", "1", parts[0]);
assertEquals("major number", "2", parts[1]);
}
@Test
public void testParseTemplatePatch() throws PackageException
{
String[] parts = Semver.parse("1.2.3");
assertEquals("number of parts", 3, parts.length);
assertEquals("major number", "1", parts[0]);
assertEquals("major number", "2", parts[1]);
assertEquals("major number", "3", parts[2]);
}
@Test
public void testParseTemplateWithZero() throws PackageException
{
String[] parts = Semver.parse("1.0.3");
assertEquals("number of parts", 3, parts.length);
assertEquals("major number", "1", parts[0]);
assertEquals("major number", "0", parts[1]);
assertEquals("major number", "3", parts[2]);
}
@Test
public void testParseTemplateSpecial() throws PackageException
{
String[] parts = Semver.parse("1.2.3beta-4");
assertEquals("number of parts", 4, parts.length);
assertEquals("major number", "1", parts[0]);
assertEquals("major number", "2", parts[1]);
assertEquals("major number", "3", parts[2]);
assertEquals("major number", "beta-4", parts[3]);
}
@Test(expected = PackageException.class)
public void testTooMuchParts() throws PackageException
{
Semver.parse("1.2.3.4");
}
@Test
public void testMatchesSubversion() throws PackageException
{
Semver template = new Semver("1.2");
Semver version = new Semver("1.2.3");
boolean result = template.matches(version);
assertTrue("the version matches the template", result);
}
@Test
public void testMatchesMin_1() throws PackageException
{
Semver template = new Semver("1.2");
Semver version = new Semver("1.2.3");
boolean result = template.matchesMin(version);
assertTrue("the version matches the template as minimum", result);
}
@Test
public void testMatchesMin_2() throws PackageException
{
Semver template = new Semver("1.2.3");
Semver version = new Semver("1.2.3");
boolean result = template.matchesMin(version);
assertTrue("the version matches the template as minimum", result);
}
@Test
public void testMatchesMin_3() throws PackageException
{
Semver template = new Semver("1");
Semver version = new Semver("1.2.3");
boolean result = template.matchesMin(version);
assertTrue("the version matches the template as minimum", result);
}
@Test
public void testMatchesMin_4() throws PackageException
{
Semver template = new Semver("1.2.3alpha");
Semver version = new Semver("1.2.3");
boolean result = template.matchesMin(version);
assertTrue("the version matches the template as minimum", result);
}
@Test
public void testMatchesMin_5() throws PackageException
{
Semver template = new Semver("1.2");
Semver version = new Semver("1.2.3alpha");
boolean result = template.matchesMin(version);
assertTrue("the version matches the template as minimum", result);
}
@Test
public void testMatchesMin_6() throws PackageException
{
Semver template = new Semver("1.2.3");
Semver version = new Semver("1.2.3alpha");
boolean result = template.matchesMin(version);
assertFalse("the version matches the template as minimum", result);
}
@Test
public void testMatchesMin_7() throws PackageException
{
Semver template = new Semver("1.2.3alpha");
Semver version = new Semver("1.2.3alpha");
boolean result = template.matchesMin(version);
assertTrue("the version matches the template as minimum", result);
}
@Test
public void testMatchesMax_1() throws PackageException
{
Semver template = new Semver("1.2");
Semver version = new Semver("1.2.3");
boolean result = template.matchesMax(version);
assertTrue("the version matches the template as maximum", result);
}
@Test
public void testMatchesMax_2() throws PackageException
{
Semver template = new Semver("1.2.3");
Semver version = new Semver("1.2.3");
boolean result = template.matchesMax(version);
assertTrue("the version matches the template as maximum", result);
}
@Test
public void testMatchesMax_3() throws PackageException
{
Semver template = new Semver("1");
Semver version = new Semver("1.2.3");
boolean result = template.matchesMax(version);
assertTrue("the version matches the template as maximum", result);
}
@Test
public void testMatchesMax_4() throws PackageException
{
Semver template = new Semver("1.2.3alpha");
Semver version = new Semver("1.2.3");
boolean result = template.matchesMax(version);
assertFalse("the version matches the template as maximum", result);
}
@Test
public void testMatchesMax_5() throws PackageException
{
Semver template = new Semver("1.2");
Semver version = new Semver("1.2.3alpha");
boolean result = template.matchesMax(version);
assertTrue("the version matches the template as maximum", result);
}
@Test
public void testMatchesMax_6() throws PackageException
{
Semver template = new Semver("1.2.3");
Semver version = new Semver("1.2.3alpha");
boolean result = template.matchesMax(version);
assertTrue("the version matches the template as maximum", result);
}
@Test
public void testMatchesMax_7() throws PackageException
{
Semver template = new Semver("1.2.3alpha");
Semver version = new Semver("1.2.3alpha");
boolean result = template.matchesMax(version);
assertTrue("the version matches the template as maximum", result);
}
}
/* ------------------------------------------------------------------------ */
/* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS COMMENT. */
/* */
/* The contents of this file are subject to the Mozilla Public License */
/* Version 1.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.mozilla.org/MPL/. */
/* */
/* Software distributed under the License is distributed on an "AS IS" */
/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */
/* the License for the specific language governing rights and limitations */
/* under the License. */
/* */
/* The Original Code is: all this file. */
/* */
/* The Initial Developer of the Original Code is Florent Georges. */
/* */
/* Contributor(s): none. */
/* ------------------------------------------------------------------------ */