ComponentVersionsTest.java

package com.fasterxml.jackson.core;

import org.junit.jupiter.api.Test;

import com.fasterxml.jackson.core.json.*;
import com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer;
import com.fasterxml.jackson.core.testsupport.TestSupport;

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

/**
 * Tests to verify functioning of {@link Version} class.
 */
class ComponentVersionsTest
        extends JUnit5TestBase
{
    @Test
    void coreVersions() throws Exception
    {
        final JsonFactory f = new JsonFactory();
        assertVersion(f.version());
        try (ReaderBasedJsonParser p = new ReaderBasedJsonParser(TestSupport.testIOContext(), 0, null, null,
                CharsToNameCanonicalizer.createRoot(f))) {
            assertVersion(p.version());
        }
        try (JsonGenerator g = new WriterBasedJsonGenerator(TestSupport.testIOContext(), 0, null, null, '"')) {
            assertVersion(g.version());
        }
    }

    @Test
    void equality() {
        Version unk = Version.unknownVersion();
        assertEquals("0.0.0", unk.toString());
        assertEquals("//0.0.0", unk.toFullString());
        assertEquals(unk, unk);

        Version other = new Version(2, 8, 4, "",
                "groupId", "artifactId");
        assertEquals("2.8.4", other.toString());
        assertEquals("groupId/artifactId/2.8.4", other.toFullString());

        // [core#1141]: Avoid NPE for snapshot-info
        Version unk2 = new Version(0, 0, 0, null, null, null);
        assertEquals(unk, unk2);
    }

    @Test
    void misc() {
        Version unk = Version.unknownVersion();
        int hash = unk.hashCode();
        // Happens to be 0 at this point (Jackson 2.16)
        assertEquals(0, hash);
    }

    /*
    /**********************************************************
    /* Helper methods
    /**********************************************************
     */

    private void assertVersion(Version v)
    {
        assertEquals(PackageVersion.VERSION, v);
    }
}