ParserPrecisionLoss730Test.java

package com.fasterxml.jackson.core.read;

import java.io.StringWriter;

import org.junit.jupiter.api.Test;

import com.fasterxml.jackson.core.*;

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

// [jackson-core#730]
class ParserPrecisionLoss730Test extends JUnit5TestBase
{
    private final JsonFactory JSON_F = newStreamFactory();

    // [jackson-core#730]
    /**
     * Attempt to pass a BigDecimal value through without losing precision,
     * e.g. for pretty printing a file.
     */
    @Test
    void copyCurrentEventBigDecimal() throws Exception {
        String input = "1E+999";
        StringWriter stringWriter = new StringWriter();

        try (JsonParser parser = JSON_F.createParser(input)) {
            parser.nextToken();
            try (JsonGenerator generator = JSON_F.createGenerator(stringWriter)) {
                generator.copyCurrentEventExact(parser);
            }
        }
        assertEquals(input, stringWriter.toString());
    }
}