package com.alibaba.json.bvt; import java.math.BigDecimal; import org.junit.Assert; import junit.framework.TestCase; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializeConfig; import com.alibaba.fastjson.serializer.SerializerFeature; public class NumberFieldTest extends TestCase { public void test_codec() throws Exception { V0 v = new V0(); v.setValue(1001L); String text = JSON.toJSONString(v); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(v1.getValue().intValue(), v.getValue().intValue()); } public void test_codec_no_asm() throws Exception { V0 v = new V0(); v.setValue(1001L); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(false); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue); Assert.assertEquals("{\"value\":1001}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(Integer.valueOf(1001), v1.getValue()); } public void test_codec_null() throws Exception { V0 v = new V0(); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(false); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue); Assert.assertEquals("{\"value\":null}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(v1.getValue(), v.getValue()); } public void test_codec_2_no_asm() throws Exception { V0 v = new V0(); v.setValue(Long.MAX_VALUE); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(false); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue); Assert.assertEquals("{\"value\":" + Long.MAX_VALUE + "}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(new Long(Long.MAX_VALUE), v1.getValue()); } public void test_codec_2_asm() throws Exception { V0 v = new V0(); v.setValue(Long.MAX_VALUE); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(true); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue); Assert.assertEquals("{\"value\":" + Long.MAX_VALUE + "}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(new Long(Long.MAX_VALUE), v1.getValue()); } public void test_codec_3_no_asm() throws Exception { V0 v = new V0(); v.setValue(new BigDecimal("3.2")); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(false); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue); Assert.assertEquals("{\"value\":3.2}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(new BigDecimal("3.2"), v1.getValue()); } public void test_codec_3_asm() throws Exception { V0 v = new V0(); v.setValue(new BigDecimal("3.2")); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(true); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue); Assert.assertEquals("{\"value\":3.2}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(new BigDecimal("3.2"), v1.getValue()); } public void test_codec_min_no_asm() throws Exception { V0 v = new V0(); v.setValue(Long.MIN_VALUE); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(false); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue); Assert.assertEquals("{\"value\":" + Long.MIN_VALUE + "}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(new Long(Long.MIN_VALUE), v1.getValue()); } public void test_codec_min_asm() throws Exception { V0 v = new V0(); v.setValue(Long.MIN_VALUE); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(true); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue); Assert.assertEquals("{\"value\":" + Long.MIN_VALUE + "}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(new Long(Long.MIN_VALUE), v1.getValue()); } public void test_codec_null_1() throws Exception { V0 v = new V0(); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(false); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero); Assert.assertEquals("{\"value\":0}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(Integer.valueOf(0), v1.getValue()); } public void test_codec_null_1_asm() throws Exception { V0 v = new V0(); SerializeConfig mapping = new SerializeConfig(); mapping.setAsmEnable(true); String text = JSON.toJSONString(v, mapping, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero); Assert.assertEquals("{\"value\":0}", text); V0 v1 = JSON.parseObject(text, V0.class); Assert.assertEquals(Integer.valueOf(0), v1.getValue()); } public void test_codec_cast() throws Exception { V0 v1 = JSON.parseObject("{\"value\":\"12.3\"}", V0.class); Assert.assertEquals(new BigDecimal("12.3"), v1.getValue()); } public static class V0 { private Number value; public Number getValue() { return value; } public void setValue(Number value) { this.value = value; } } }