TestInts.java
package net.minidev.json.test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.math.BigDecimal;
import java.math.BigInteger;
import net.minidev.json.JSONObject;
import net.minidev.json.parser.JSONParser;
import net.minidev.json.parser.ParseException;
import org.junit.jupiter.api.Test;
public class TestInts {
@Test
public void testIntMax() throws Exception {
String s = "{t:" + Integer.MAX_VALUE + "}";
JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s);
assertEquals(o.get("t"), Integer.MAX_VALUE);
}
@Test
public void testIntMin() throws Exception {
String s = "{t:" + Integer.MIN_VALUE + "}";
JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s);
assertEquals(o.get("t"), Integer.MIN_VALUE);
}
@Test
public void testIntResult() throws Exception {
String s = "{\"t\":1}";
JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_RFC4627).parse(s);
assertEquals(o.get("t"), Integer.valueOf(1));
o = (JSONObject) new JSONParser(JSONParser.MODE_JSON_SIMPLE).parse(s);
assertEquals(o.get("t"), Long.valueOf(1));
o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s);
assertEquals(o.get("t"), Integer.valueOf(1));
}
@Test
public void testInt() throws Exception {
String s = "{t:90}";
JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s);
assertEquals(o.get("t"), Integer.valueOf(90));
}
@Test
public void testIntNeg() throws Exception {
String s = "{t:-90}";
JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s);
assertEquals(o.get("t"), -90);
}
@Test
public void testBigInt() throws Exception {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) sb.append(Integer.MAX_VALUE);
String bigText = sb.toString();
BigInteger big = new BigInteger(bigText, 10);
String s = "{t:" + bigText + "}";
JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s);
assertEquals(o.get("t"), big);
}
@Test
public void testBigDoubleInt() throws Exception {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) sb.append(Integer.MAX_VALUE);
sb.append('.');
for (int i = 0; i < 10; i++) sb.append(Integer.MAX_VALUE);
String bigText = sb.toString();
BigDecimal big = new BigDecimal(bigText);
String s = "{\"t\":" + bigText + "}";
JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_RFC4627).parse(s);
assertEquals(o.get("t"), big);
o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s);
assertEquals(o.get("t"), big);
}
@Test
public void testjunkTaillingData() throws Exception {
String s = "{\"t\":124}$ifsisg045";
JSONObject o = (JSONObject) new JSONParser(JSONParser.MODE_JSON_SIMPLE).parse(s);
assertEquals(o.get("t"), 124L);
MustThrows.testInvalidJson(s, JSONParser.MODE_RFC4627, ParseException.ERROR_UNEXPECTED_TOKEN);
// o = (JSONObject) new JSONParser(JSONParser.MODE_RFC4627).parse(s);
// assertEquals(o.get("t"), 124);
o = (JSONObject) new JSONParser(JSONParser.MODE_PERMISSIVE).parse(s);
assertEquals(o.get("t"), 124);
}
}