|
2 | 2 |
|
3 | 3 | import static org.junit.Assert.assertEquals; |
4 | 4 | import static org.junit.Assert.assertFalse; |
| 5 | +import static org.junit.Assert.assertNotEquals; |
5 | 6 | import static org.junit.Assert.assertNull; |
6 | 7 | import static org.junit.Assert.assertTrue; |
7 | 8 | import static org.mockito.Mockito.mock; |
@@ -2016,13 +2017,14 @@ public void jsonObjectOptStringConversion() { |
2016 | 2017 | assertTrue("unexpected optNumber value",jo.optNumber("int",BigInteger.ZERO).longValue()==123l); |
2017 | 2018 |
|
2018 | 2019 | // Test type coercion from larger to smaller |
2019 | | - final BigDecimal largeValue = new BigDecimal("19007199254740993.35481234487103587486413587843213584"); |
2020 | | - assertEquals(largeValue,jo.optBigDecimal("largeNumber", null)); |
2021 | | - assertEquals(largeValue.toBigInteger(),jo.optBigInteger("largeNumber", null)); |
2022 | | - assertEquals(largeValue.doubleValue(), jo.optDouble("largeNumber"), 0.0d); |
2023 | | - assertEquals(largeValue.floatValue(), jo.optFloat("largeNumber"), 0.0f); |
2024 | | - assertEquals(largeValue.longValue(), jo.optLong("largeNumber")); |
2025 | | - assertEquals(largeValue.intValue(), jo.optInt("largeNumber")); |
| 2020 | + assertEquals(new BigInteger("19007199254740993"), jo.optBigInteger("largeNumber",null)); |
| 2021 | + assertEquals(1.9007199254740992E16, jo.optDouble("largeNumber"),0.0); |
| 2022 | + assertEquals(1.90071995E16f, jo.optFloat("largeNumber"),0.0f); |
| 2023 | + assertEquals(19007199254740993l, jo.optLong("largeNumber")); |
| 2024 | + assertEquals(1874919425, jo.optInt("largeNumber")); |
| 2025 | + |
| 2026 | + // the integer portion of the actual value is larger than a double can hold. |
| 2027 | + assertNotEquals((long)Double.parseDouble("19007199254740993.35481234487103587486413587843213584"), jo.optLong("largeNumber")); |
2026 | 2028 | } |
2027 | 2029 |
|
2028 | 2030 | /** |
|
0 commit comments