TextNodeTest.java

package com.fasterxml.jackson.databind.node;

import org.junit.jupiter.api.Test;

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

public class TextNodeTest extends NodeTestBase
{
    @Test
    public void testText()
    {
        assertNull(TextNode.valueOf(null));
        TextNode empty = TextNode.valueOf("");
        assertStandardEquals(empty);
        assertSame(TextNode.EMPTY_STRING_NODE, empty);

        assertEquals(0, empty.size());
        assertTrue(empty.isEmpty());

        assertNodeNumbers(TextNode.valueOf("-3"), -3, -3.0);
        assertNodeNumbers(TextNode.valueOf("17.75"), 17, 17.75);

        long value = 127353264013893L;
        TextNode n = TextNode.valueOf(String.valueOf(value));
        assertEquals(value, n.asLong());

        assertFalse(n.isNumber());
        assertFalse(n.canConvertToInt());
        assertFalse(n.canConvertToLong());
        assertFalse(n.canConvertToExactIntegral());

        // and then with non-numeric input
        n = TextNode.valueOf("foobar");
        assertNodeNumbersForNonNumeric(n);

        assertEquals("foobar", n.asText());
        assertEquals("", empty.asText());

        assertTrue(TextNode.valueOf("true").asBoolean(true));
        assertTrue(TextNode.valueOf("true").asBoolean(false));
        assertFalse(TextNode.valueOf("false").asBoolean(true));
        assertFalse(TextNode.valueOf("false").asBoolean(false));

        assertNonContainerStreamMethods(n);
    }

    @Test
    public void testEquals()
    {
        assertEquals(new TextNode(null), new TextNode(null));
        assertEquals(new TextNode("abc"), new TextNode("abc"));
        assertNotEquals(new TextNode(null), new TextNode("def"));
        assertNotEquals(new TextNode("abc"), new TextNode("def"));
        assertNotEquals(new TextNode("abc"), new TextNode(null));
    }

    @Test
    public void testHashCode()
    {
        assertEquals(0, new TextNode(null).hashCode());
        assertEquals("abc".hashCode(), new TextNode("abc").hashCode());
    }
}