/* * Copyright 2011-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not * use this file except in compliance with the License. A copy of the License is * located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.protocol.json; import static org.junit.Assert.assertEquals; import java.math.BigDecimal; import java.math.BigInteger; import java.nio.ByteBuffer; import java.util.Calendar; import java.util.TimeZone; import org.junit.Test; import com.amazonaws.protocol.json.IonFactory; import com.amazonaws.transform.JsonUnmarshallerContext; import com.amazonaws.transform.JsonUnmarshallerContextImpl; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.BigDecimalIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.BigIntegerIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.BooleanIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.ByteBufferIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.ByteIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.DateIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.DoubleIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.FloatIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.IntegerIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.LongIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.ShortIonUnmarshaller; import com.amazonaws.transform.SimpleTypeIonUnmarshallers.StringIonUnmarshaller; import com.amazonaws.util.StringInputStream; import com.fasterxml.jackson.core.JsonParser; import software.amazon.ion.system.IonSystemBuilder; public class SimpleTypeIonUnmarshallersTest { @Test public void unmarshalString() throws Exception { assertEquals("foo", StringIonUnmarshaller.getInstance().unmarshall(context("\"foo\""))); } @Test public void unmarshalDouble() throws Exception { assertEquals(new Double(123.456), DoubleIonUnmarshaller.getInstance().unmarshall(context("123.456"))); } @Test public void unmarshalInteger() throws Exception { assertEquals(new Integer(-999), IntegerIonUnmarshaller.getInstance().unmarshall(context("-999"))); } @Test public void unmarshalBigInteger() throws Exception { assertEquals( new BigInteger("123456789012345678901234567890"), BigIntegerIonUnmarshaller.getInstance().unmarshall(context("123456789012345678901234567890"))); } @Test public void unmarshalBigDecimal() throws Exception { assertEquals( new BigDecimal("1234567890.12345678901234567890"), BigDecimalIonUnmarshaller.getInstance().unmarshall(context("1234567890.12345678901234567890"))); } @Test public void unmarshalBoolean() throws Exception { assertEquals(Boolean.TRUE, BooleanIonUnmarshaller.getInstance().unmarshall(context("true"))); } @Test public void unmarshalFloat() throws Exception { assertEquals(new Float(123.456f), FloatIonUnmarshaller.getInstance().unmarshall(context("123.456"))); } @Test public void unmarshalLong() throws Exception { assertEquals(new Long(123456L), LongIonUnmarshaller.getInstance().unmarshall(context("123456"))); } @Test public void unmarshalByte() throws Exception { assertEquals(new Byte((byte) 123), ByteIonUnmarshaller.getInstance().unmarshall(context("123"))); } @Test public void unmarshalDate() throws Exception { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); calendar.clear(); calendar.set(2000, 0, 1); // Month is zero-based assertEquals(calendar.getTime(), DateIonUnmarshaller.getInstance().unmarshall(context("2000-01-01T"))); } @Test public void unmarshalByteBuffer() throws Exception { byte[] buffer = new byte[] {1, 2, 3, 4, 5, 6}; assertEquals(ByteBuffer.wrap(buffer), ByteBufferIonUnmarshaller.getInstance().unmarshall(context("{{AQIDBAUG}}"))); } @Test public void unmarshalShort() throws Exception { assertEquals(new Short((short) 1234), ShortIonUnmarshaller.getInstance().unmarshall(context("1234"))); } private static JsonUnmarshallerContext context(String ion) throws Exception { JsonParser parser = new IonFactory(IonSystemBuilder.standard().build()).createParser(new StringInputStream(ion)); JsonUnmarshallerContext context = new JsonUnmarshallerContextImpl(parser, null, null, null); context.nextToken(); return context; } }