From 48a21be49caecafce6c72f8eb761d1699d3a4254 Mon Sep 17 00:00:00 2001 From: Cowtowncoder Date: Tue, 19 May 2015 17:03:15 -0700 Subject: [PATCH] minor number test refactoring --- ...ricNumber.java => UntypedNumbersTest.java} | 52 +++++++++---------- 1 file changed, 25 insertions(+), 27 deletions(-) rename src/test/java/com/fasterxml/jackson/databind/deser/{TestGenericNumber.java => UntypedNumbersTest.java} (63%) diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestGenericNumber.java b/src/test/java/com/fasterxml/jackson/databind/deser/UntypedNumbersTest.java similarity index 63% rename from src/test/java/com/fasterxml/jackson/databind/deser/TestGenericNumber.java rename to src/test/java/com/fasterxml/jackson/databind/deser/UntypedNumbersTest.java index 0e90ac4be3..110dd15a5d 100644 --- a/src/test/java/com/fasterxml/jackson/databind/deser/TestGenericNumber.java +++ b/src/test/java/com/fasterxml/jackson/databind/deser/UntypedNumbersTest.java @@ -11,15 +11,17 @@ /** * Unit tests for verifying handling of non-specific numeric types. */ -public class TestGenericNumber +public class UntypedNumbersTest extends BaseMapTest { + private final ObjectMapper MAPPER = objectMapper(); + public void testIntAsNumber() throws Exception { /* Even if declared as 'generic' type, should return using most * efficient type... here, Integer */ - Number result = new ObjectMapper().readValue(new StringReader(" 123 "), Number.class); + Number result = MAPPER.readValue(new StringReader(" 123 "), Number.class); assertEquals(Integer.valueOf(123), result); } @@ -27,7 +29,7 @@ public void testLongAsNumber() throws Exception { // And beyond int range, should get long long exp = 1234567890123L; - Number result = new ObjectMapper().readValue(String.valueOf(exp), Number.class); + Number result = MAPPER.readValue(String.valueOf(exp), Number.class); assertEquals(Long.valueOf(exp), result); } @@ -35,7 +37,7 @@ public void testBigIntAsNumber() throws Exception { // and after long, BigInteger BigInteger biggie = new BigInteger("1234567890123456789012345678901234567890"); - Number result = new ObjectMapper().readValue(biggie.toString(), Number.class); + Number result = MAPPER.readValue(biggie.toString(), Number.class); assertEquals(BigInteger.class, biggie.getClass()); assertEquals(biggie, result); } @@ -45,71 +47,67 @@ public void testIntTypeOverride() throws Exception /* Slight twist; as per [JACKSON-100], can also request binding * to BigInteger even if value would fit in Integer */ - ObjectMapper m = new ObjectMapper(); - m.enable(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS); + ObjectReader r = MAPPER.reader(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS); + BigInteger exp = BigInteger.valueOf(123L); // first test as any Number - Number result = m.readValue(new StringReader(" 123 "), Number.class); + Number result = r.forType(Number.class).readValue(new StringReader(" 123 ")); assertEquals(BigInteger.class, result.getClass()); assertEquals(exp, result); // then as any Object - /*Object value =*/ m.readValue(new StringReader("123"), Object.class); + /*Object value =*/ r.forType(Object.class).readValue(new StringReader("123")); assertEquals(BigInteger.class, result.getClass()); assertEquals(exp, result); } - /** - * Related to [JACKSON-72]: by default should wrap floating-point - * Number as Double - */ public void testDoubleAsNumber() throws Exception { - Number result = new ObjectMapper().readValue(new StringReader(" 1.0 "), Number.class); + Number result = MAPPER.readValue(new StringReader(" 1.0 "), Number.class); assertEquals(Double.valueOf(1.0), result); } - /** - * Test for verifying [JACKSON-72]. - */ public void testFpTypeOverrideSimple() throws Exception { - ObjectMapper m = new ObjectMapper(); - m.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); + ObjectReader r = MAPPER.reader(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); BigDecimal dec = new BigDecimal("0.1"); // First test generic stand-alone Number - Number result = m.readValue(dec.toString(), Number.class); + Number result = r.forType(Number.class).readValue(dec.toString()); assertEquals(BigDecimal.class, result.getClass()); assertEquals(dec, result); // Then plain old Object - Object value = m.readValue(dec.toString(), Object.class); + Object value = r.forType(Object.class).readValue(dec.toString()); assertEquals(BigDecimal.class, result.getClass()); assertEquals(dec, value); } - public void testFpTypeOverrideStructured() throws Exception + public void testFpTypeOverrideStructured() throws Exception { - ObjectMapper m = new ObjectMapper(); - BigDecimal dec = new BigDecimal("-19.37"); - - m.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); + ObjectReader r = MAPPER.reader(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); + BigDecimal dec = new BigDecimal("-19.37"); // List element types @SuppressWarnings("unchecked") - List list = (List)m.readValue("[ "+dec.toString()+" ]", List.class); + List list = (List) r.forType(List.class).readValue("[ "+dec.toString()+" ]"); assertEquals(1, list.size()); Object val = list.get(0); assertEquals(BigDecimal.class, val.getClass()); assertEquals(dec, val); // and a map - Map map = m.readValue("{ \"a\" : "+dec.toString()+" }", Map.class); + Map map = r.forType(Map.class).readValue("{ \"a\" : "+dec.toString()+" }"); assertEquals(1, map.size()); val = map.get("a"); assertEquals(BigDecimal.class, val.getClass()); assertEquals(dec, val); } + + // [databind#504] + public void testForceIntsToLongs() throws Exception + { + + } }