TestBigDigitUnrestricted.java

package net.minidev.json.test;

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

import java.math.BigDecimal;
import net.minidev.json.JSONObject;
import net.minidev.json.parser.JSONParser;
import org.junit.jupiter.api.Test;

public class TestBigDigitUnrestricted {
  public static String[] VALID_DOUBLE_JSON =
      new String[] {
        "{\"v\":0.12345678912345678}",
        "\"v\":\"1.7976931348623157E308\"",
        "\"v\":\"1.7976931348623157E+308\"",
        "\"v\":\"1.7976931348623157e+308\""
      };

  @Test
  public void testRestrictedBigDigit() throws Exception {
    JSONParser p = new JSONParser(JSONParser.MODE_RFC4627);
    String json = VALID_DOUBLE_JSON[0];
    JSONObject obj = (JSONObject) p.parse(json);
    Object value = obj.get("v");
    assertEquals(Double.class, value.getClass(), "Should not Store this big number as a double");
  }

  @Test
  public void testUnrestrictedBigDigit() throws Exception {
    JSONParser p = new JSONParser(JSONParser.MODE_PERMISSIVE);
    String json = VALID_DOUBLE_JSON[0];
    JSONObject obj = (JSONObject) p.parse(json);
    Object value = obj.get("v");
    assertEquals(
        BigDecimal.class, value.getClass(), "Should not Store this big number as a double");
  }
}