package com.fasterxml.jackson.databind.node;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.*;
public class NotANumberConversionTest extends BaseMapTest
{
private final ObjectMapper m = new ObjectMapper();
{
m.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
}
public void testBigDecimalWithNaN() throws Exception
{
JsonNode tree = m.valueToTree(new DoubleWrapper(Double.NaN));
assertNotNull(tree);
String json = m.writeValueAsString(tree);
assertNotNull(json);
tree = m.valueToTree(new DoubleWrapper(Double.NEGATIVE_INFINITY));
assertNotNull(tree);
json = m.writeValueAsString(tree);
assertNotNull(json);
tree = m.valueToTree(new DoubleWrapper(Double.POSITIVE_INFINITY));
assertNotNull(tree);
json = m.writeValueAsString(tree);
assertNotNull(json);
}
// for [databind#1315]: no accidental coercion to DoubleNode
public void testBigDecimalWithoutNaN() throws Exception
{
BigDecimal input = new BigDecimal(Double.MIN_VALUE).divide(new BigDecimal(10L));
JsonNode tree = m.readTree(input.toString());
assertTrue(tree.isBigDecimal());
BigDecimal output = tree.decimalValue();
assertEquals(input, output);
}
}