public void testBigDecimal() throws IOException { ByteArrayOutputStream bo = new ByteArrayOutputStream(); BigDecimal in = new BigDecimal("32599.00001"); SmileGenerator g = smileGenerator(bo, false); g.writeNumber(in); g.close(); byte[] data = bo.toByteArray(); SmileParser p = _smileParser(data); assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken()); assertEquals(JsonParser.NumberType.BIG_DECIMAL, p.getNumberType()); assertEquals(BigDecimal.class, p.getNumberValue().getClass()); assertEquals(in, p.getDecimalValue()); p.close(); // second test; verify skipping works bo = new ByteArrayOutputStream(); g = smileGenerator(bo, false); g.writeStartArray(); g.writeNumber(in); g.writeEndArray(); g.close(); data = bo.toByteArray(); p = _smileParser(data); assertToken(JsonToken.START_ARRAY, p.nextToken()); assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken()); assertToken(JsonToken.END_ARRAY, p.nextToken()); assertNull(p.nextToken()); p.close(); }
public void testBigInteger() throws IOException { ByteArrayOutputStream bo = new ByteArrayOutputStream(); BigInteger in = new BigInteger(String.valueOf(Long.MIN_VALUE) + "0012575934"); SmileGenerator g = smileGenerator(bo, false); g.writeNumber(in); g.close(); byte[] data = bo.toByteArray(); SmileParser p = _smileParser(data); assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken()); assertEquals(JsonParser.NumberType.BIG_INTEGER, p.getNumberType()); assertEquals(BigInteger.class, p.getNumberValue().getClass()); assertEquals(in, p.getBigIntegerValue()); p.close(); // second test; verify skipping works bo = new ByteArrayOutputStream(); g = smileGenerator(bo, false); g.writeStartArray(); g.writeNumber(in); g.writeEndArray(); g.close(); data = bo.toByteArray(); p = _smileParser(data); assertToken(JsonToken.START_ARRAY, p.nextToken()); assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken()); assertToken(JsonToken.END_ARRAY, p.nextToken()); assertNull(p.nextToken()); p.close(); }