VersionUtilTest.java

package com.fasterxml.jackson.core.util;

import org.junit.jupiter.api.Test;

import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.core.json.PackageVersion;
import com.fasterxml.jackson.core.json.UTF8JsonGenerator;

import static org.junit.jupiter.api.Assertions.*;

/**
 * Unit tests for class {@link VersionUtil}.
 *
 * @see VersionUtil
 */
class VersionUtilTest
{
    @Test
    void versionPartParsing()
    {
        assertEquals(13, VersionUtil.parseVersionPart("13"));
        assertEquals(27, VersionUtil.parseVersionPart("27.8"));
        assertEquals(0, VersionUtil.parseVersionPart("-3"));
    }

    @Test
    void versionParsing()
    {
        assertEquals(new Version(1, 2, 15, "foo", "group", "artifact"),
                VersionUtil.parseVersion("1.2.15-foo", "group", "artifact"));
        Version v = VersionUtil.parseVersion("1.2.3-SNAPSHOT", "group", "artifact");
        assertEquals("group/artifact/1.2.3-SNAPSHOT", v.toFullString());
    }

    @Test
    void parseVersionPartReturningPositive() {
        assertEquals(66, VersionUtil.parseVersionPart("66R"));
    }

    @Test
    void parseVersionReturningVersionWhereGetMajorVersionIsZero() {
        Version version = VersionUtil.parseVersion("#M&+m@569P", "#M&+m@569P", "com.fasterxml.jackson.core.util.VersionUtil");

        assertEquals(0, version.getMinorVersion());
        assertEquals(0, version.getPatchLevel());
        assertEquals(0, version.getMajorVersion());
        assertFalse(version.isSnapshot());
        assertFalse(version.isUnknownVersion());
    }

    @Test
    void parseVersionWithEmptyStringAndEmptyString() {
        Version version = VersionUtil.parseVersion("", "", "\"g2AT");
        assertTrue(version.isUnknownVersion());
    }

    @Test
    void parseVersionWithNullAndEmptyString() {
        Version version = VersionUtil.parseVersion(null, "/nUmRN)3", "");

        assertFalse(version.isSnapshot());
    }

    @Test
    void packageVersionMatches() {
        assertEquals(PackageVersion.VERSION, VersionUtil.versionFor(UTF8JsonGenerator.class));
    }

    // [core#248]: make sure not to return `null` but `Version.unknownVersion()`
    @Test
    void versionForUnknownVersion() {
        // expecting return version.unknownVersion() instead of null
        assertEquals(Version.unknownVersion(), VersionUtil.versionFor(VersionUtilTest.class));
    }

    // // // Deprecated functionality

    @SuppressWarnings("deprecation")
    @Test
    void mavenVersionParsing() {
        assertEquals(new Version(1, 2, 3, "SNAPSHOT", "foo.bar", "foo-bar"),
                VersionUtil.mavenVersionFor(VersionUtilTest.class.getClassLoader(), "foo.bar", "foo-bar"));
    }
}