package com.alibaba.json.bvt.jdk8; import java.util.Optional; import java.util.OptionalDouble; import java.util.OptionalInt; import java.util.OptionalLong; import org.junit.Assert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import junit.framework.TestCase; public class OptionalTest extends TestCase { public void test_optional() throws Exception { Optional<Integer> val = Optional.of(3); String text = JSON.toJSONString(val); Assert.assertEquals("3", text); Optional<Integer> val2 = JSON.parseObject(text, new TypeReference<Optional<Integer>>() {}); Assert.assertEquals(val.get(), val2.get()); } public void test_optionalInt_present() throws Exception { String text = JSON.toJSONString(OptionalInt.empty()); Assert.assertEquals("null", text); } public void test_optionalInt() throws Exception { OptionalInt val = OptionalInt.of(3); String text = JSON.toJSONString(val); Assert.assertEquals("3", text); OptionalInt val2 = JSON.parseObject(text, OptionalInt.class); Assert.assertEquals(val.getAsInt(), val2.getAsInt()); } public void test_optionalLong_present() throws Exception { String text = JSON.toJSONString(OptionalLong.empty()); Assert.assertEquals("null", text); } public void test_optionalLong() throws Exception { OptionalLong val = OptionalLong.of(3); String text = JSON.toJSONString(val); Assert.assertEquals("3", text); OptionalLong val2 = JSON.parseObject(text, OptionalLong.class); Assert.assertEquals(val.getAsLong(), val2.getAsLong()); } public void test_optionalDouble_present() throws Exception { String text = JSON.toJSONString(OptionalDouble.empty()); Assert.assertEquals("null", text); } public void test_optionalDouble() throws Exception { OptionalDouble val = OptionalDouble.of(3.1D); String text = JSON.toJSONString(val); Assert.assertEquals("3.1", text); OptionalDouble val2 = JSON.parseObject(text, OptionalDouble.class); Assert.assertEquals(Double.toString(val.getAsDouble()), Double.toString(val2.getAsDouble())); } }