CoerceEmptyToInt3234Test.java

package com.fasterxml.jackson.databind.convert;

import org.junit.jupiter.api.Test;

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

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

// [databind#3234]
public class CoerceEmptyToInt3234Test
    extends DatabindTestUtil
{
    static class BasicIntWrapper {
        public int value = 13;
    }

    static class BasicLongWrapper {
        public long value = 7L;
    }

    static class BasicDoubleWrapper {
        public double value = -1.25;
    }

    private final ObjectMapper MAPPER = jsonMapperBuilder()
            // 08-Jan-2025, tatu: Need to allow null-to-int coercion for some tests
            .disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
            .build();
    private final ObjectReader READER_INT_BASIC = MAPPER.readerFor(BasicIntWrapper.class);
    private final ObjectReader READER_LONG_BASIC = MAPPER.readerFor(BasicLongWrapper.class);
    private final ObjectReader READER_DOUBLE_BASIC = MAPPER.readerFor(BasicDoubleWrapper.class);

    // // // Ints

    @Test
    public void testSimpleIntFromEmpty() throws Exception
    {
        BasicIntWrapper w = READER_INT_BASIC.readValue(a2q("{'value':''}"));
        assertEquals(0, w.value);
    }

    @Test
    public void testSimpleIntFromBlank() throws Exception
    {
        BasicIntWrapper w = READER_INT_BASIC.readValue(a2q("{'value':' '}"));
        assertEquals(0, w.value);
    }

    // // // Long

    @Test
    public void testSimpleLongFromEmpty() throws Exception
    {
        BasicLongWrapper w = READER_LONG_BASIC.readValue(a2q("{'value':''}"));
        assertEquals(0L, w.value);
    }

    @Test
    public void testSimpleLongFromBlank() throws Exception
    {
        BasicLongWrapper w = READER_LONG_BASIC.readValue(a2q("{'value':' '}"));
        assertEquals(0L, w.value);
    }

    // // // Double

    @Test
    public void testSimpleDoublegFromEmpty() throws Exception
    {
        BasicDoubleWrapper w = READER_DOUBLE_BASIC.readValue(a2q("{'value':''}"));
        assertEquals((double) 0, w.value);
    }

    @Test
    public void testSimpleDoubleFromBlank() throws Exception
    {
        BasicDoubleWrapper w = READER_DOUBLE_BASIC.readValue(a2q("{'value':' '}"));
        assertEquals((double) 0, w.value);
    }
}