package com.alibaba.json.bvt.parser;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.junit.Assert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.util.TypeUtils;
@SuppressWarnings("rawtypes")
public class TypeUtilsTest extends TestCase {
public void test_0() throws Exception {
HashMap map = new HashMap();
Assert.assertTrue(map == TypeUtils.castToJavaBean(map, Map.class));
}
public void test_1() throws Exception {
JSONObject map = new JSONObject();
Assert.assertTrue(map == TypeUtils.castToJavaBean(map, Map.class));
}
public void test_2() throws Exception {
JSONObject map = new JSONObject();
map.put("id", 1);
map.put("name", "panlei");
User user = TypeUtils.castToJavaBean(map, User.class);
Assert.assertEquals(1L, user.getId());
Assert.assertEquals("panlei", user.getName());
}
public void test_cast_Integer() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1L);
Assert.assertEquals(new Integer(1), json.getObject("id", int.class));
}
public void test_cast_Integer_2() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1L);
Assert.assertEquals(new Integer(1), json.getObject("id", Integer.class));
}
public void test_cast_to_long() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(new Long(1), json.getObject("id", long.class));
}
public void test_cast_to_Long() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(new Long(1), json.getObject("id", Long.class));
}
public void test_cast_to_short() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(new Short((short) 1), json.getObject("id", short.class));
}
public void test_cast_to_Short() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(new Short((short) 1), json.getObject("id", Short.class));
}
public void test_cast_to_byte() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(new Byte((byte) 1), json.getObject("id", byte.class));
}
public void test_cast_to_Byte() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(new Byte((byte) 1), json.getObject("id", Byte.class));
}
public void test_cast_to_BigInteger() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(new BigInteger("1"), json.getObject("id", BigInteger.class));
}
public void test_cast_to_BigDecimal() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(new BigDecimal("1"), json.getObject("id", BigDecimal.class));
}
public void test_cast_to_boolean() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(Boolean.TRUE, json.getObject("id", boolean.class));
}
public void test_cast_to_Boolean() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals(Boolean.TRUE, json.getObject("id", Boolean.class));
}
public void test_cast_null() throws Exception {
JSONObject json = new JSONObject();
json.put("id", null);
Assert.assertEquals(null, json.getObject("id", Boolean.class));
}
public void test_cast_to_String() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Assert.assertEquals("1", json.getObject("id", String.class));
}
public void test_cast_to_Date() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", millis);
Assert.assertEquals(new Date(millis), json.getObject("date", Date.class));
}
public void test_cast_to_SqlDate() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", millis);
Assert.assertEquals(new java.sql.Date(millis), json.getObject("date", java.sql.Date.class));
}
public void test_cast_to_SqlDate_string() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", Long.toString(millis));
Assert.assertEquals(new java.sql.Date(millis), json.getObject("date", java.sql.Date.class));
}
public void test_cast_to_SqlDate_null() throws Exception {
JSONObject json = new JSONObject();
json.put("date", null);
Assert.assertEquals(null, json.getObject("date", java.sql.Date.class));
}
public void test_cast_to_SqlDate_null2() throws Exception {
Assert.assertEquals(null, TypeUtils.castToSqlDate(null));
}
public void test_cast_to_SqlDate_util_Date() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", new Date(millis));
Assert.assertEquals(new java.sql.Date(millis), json.getObject("date", java.sql.Date.class));
}
public void test_cast_to_SqlDate_sql_Date() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", new java.sql.Date(millis));
Assert.assertEquals(new java.sql.Date(millis), json.getObject("date", java.sql.Date.class));
}
public void test_cast_to_SqlDate_sql_Date2() throws Exception {
long millis = System.currentTimeMillis();
java.sql.Date date = new java.sql.Date(millis);
Assert.assertEquals(date, TypeUtils.castToSqlDate(date));
}
public void test_cast_to_SqlDate_calendar() throws Exception {
long millis = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(millis);
JSONObject json = new JSONObject();
json.put("date", calendar);
Assert.assertEquals(new java.sql.Date(millis), json.getObject("date", java.sql.Date.class));
}
public void test_cast_to_SqlDate_error() throws Exception {
JSONObject json = new JSONObject();
json.put("date", 0);
JSONException error = null;
try {
json.getObject("date", java.sql.Date.class);
} catch (JSONException e) {
error = e;
}
Assert.assertNotNull(error);
}
public void test_cast_to_Timestamp() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", millis);
Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject("date", java.sql.Timestamp.class));
}
public void test_cast_to_Timestamp_string() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", Long.toString(millis));
Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject("date", java.sql.Timestamp.class));
}
public void test_cast_to_Timestamp_number() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", new BigDecimal(Long.toString(millis)));
Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject("date", java.sql.Timestamp.class));
}
public void test_cast_to_Timestamp_null() throws Exception {
JSONObject json = new JSONObject();
json.put("date", null);
Assert.assertEquals(null, json.getObject("date", java.sql.Timestamp.class));
}
public void test_cast_to_Timestamp_null2() throws Exception {
Assert.assertEquals(null, TypeUtils.castToTimestamp(null));
}
public void test_cast_to_BigDecimal_same() throws Exception {
BigDecimal value = new BigDecimal("123");
Assert.assertEquals(true, value == TypeUtils.castToBigDecimal(value));
}
public void test_cast_to_BigInteger_same() throws Exception {
BigInteger value = new BigInteger("123");
Assert.assertEquals(true, value == TypeUtils.castToBigInteger(value));
}
public void test_cast_Array() throws Exception {
Assert.assertEquals(Integer[].class, TypeUtils.cast(new ArrayList(), Integer[].class, null).getClass());
}
public void test_cast_to_Timestamp_util_Date() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", new Date(millis));
Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject("date", java.sql.Timestamp.class));
}
public void test_cast_to_Timestamp_sql_Date() throws Exception {
long millis = System.currentTimeMillis();
JSONObject json = new JSONObject();
json.put("date", new java.sql.Date(millis));
Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject("date", java.sql.Timestamp.class));
}
public void test_cast_to_Timestamp_sql_Timestamp() throws Exception {
long millis = System.currentTimeMillis();
java.sql.Timestamp date = new java.sql.Timestamp(millis);
Assert.assertEquals(date, TypeUtils.castToTimestamp(date));
}
public void test_cast_to_Timestamp_calendar() throws Exception {
long millis = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(millis);
JSONObject json = new JSONObject();
json.put("date", calendar);
Assert.assertEquals(new java.sql.Timestamp(millis), json.getObject("date", java.sql.Timestamp.class));
}
public void test_cast_to_Timestamp_error() throws Exception {
JSONObject json = new JSONObject();
json.put("date", 0);
JSONException error = null;
try {
json.getObject("date", java.sql.Timestamp.class);
} catch (JSONException e) {
error = e;
}
Assert.assertNotNull(error);
}
public void test_cast_ab() throws Exception {
B b = new B();
JSONObject json = new JSONObject();
json.put("value", b);
Assert.assertEquals(b, json.getObject("value", A.class));
}
public void test_cast_ab_1() throws Exception {
B b = new B();
JSONObject json = new JSONObject();
json.put("value", b);
Assert.assertEquals(b, json.getObject("value", IA.class));
}
public void test_cast_ab_error() throws Exception {
A a = new A();
JSONObject json = new JSONObject();
json.put("value", a);
JSONException error = null;
try {
json.getObject("value", B.class);
} catch (JSONException e) {
error = e;
}
Assert.assertNotNull(error);
}
public void test_error() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
JSONException error = null;
try {
TypeUtils.castToJavaBean(json, C.class, ParserConfig.getGlobalInstance());
} catch (JSONException e) {
error = e;
}
Assert.assertNotNull(error);
}
public void test_error_2() throws Exception {
JSONObject json = new JSONObject();
json.put("id", 1);
Method method = TypeUtilsTest.class.getMethod("f", List.class);
TypeUtils.cast(json, method.getGenericParameterTypes()[0], ParserConfig.getGlobalInstance());
}
public void test_3() throws Exception {
JSONObject map = new JSONObject();
map.put("id", 1);
map.put("name", "panlei");
User user = JSON.toJavaObject(map, User.class);
Assert.assertEquals(1L, user.getId());
Assert.assertEquals("panlei", user.getName());
}
public static class User {
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static class A implements IA {
}
public static interface IA {
}
public static class B extends A {
}
public static class C extends B {
public int getId() {
throw new UnsupportedOperationException();
}
public void setId(int id) {
throw new UnsupportedOperationException();
}
}
public static void f(List<?> list) {
}
}