NodeTestBase.java

package com.fasterxml.jackson.databind.node;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.testutil.DatabindTestUtil;

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

abstract class NodeTestBase extends DatabindTestUtil
{
    protected void assertNodeNumbersForNonNumeric(JsonNode n)
    {
        assertFalse(n.isNumber());
        assertFalse(n.canConvertToInt());
        assertFalse(n.canConvertToLong());
        assertFalse(n.canConvertToExactIntegral());

        assertEquals(0, n.asInt());
        assertEquals(-42, n.asInt(-42));
        assertEquals(0, n.asLong());
        assertEquals(12345678901L, n.asLong(12345678901L));
        assertEquals(0.0, n.asDouble());
        assertEquals(-19.25, n.asDouble(-19.25));
    }

    // Test to check conversions, coercions
    protected void assertNodeNumbers(JsonNode n, int expInt, double expDouble)
    {
        assertEquals(expInt, n.asInt());
        assertEquals(expInt, n.asInt(-42));
        assertEquals((long) expInt, n.asLong());
        assertEquals((long) expInt, n.asLong(19L));
        assertEquals(expDouble, n.asDouble());
        assertEquals(expDouble, n.asDouble(-19.25));

        assertTrue(n.isEmpty());
    }

    // Testing for non-ContainerNode (ValueNode) stream method implementations
    //
    // @since 2.19
    protected void assertNonContainerStreamMethods(ValueNode n)
    {
        assertEquals(0, n.valueStream().count());
        assertEquals(0, n.propertyStream().count());

        // And then empty forEachEntry()
        n.forEachEntry((k, v) -> { throw new UnsupportedOperationException(); });
    }
}