code: @SuppressWarnings("unchecked") @Test public void testCompatibleTypeConvert() throws Exception {
    Object result;
  {
      Object input=new Object();
      result=CompatibleTypeUtils.compatibleTypeConvert(input,Date.class);
      assertSame(input,result);
      result=CompatibleTypeUtils.compatibleTypeConvert(input,null);
      assertSame(input,result);
      result=CompatibleTypeUtils.compatibleTypeConvert(null,Date.class);
      assertNull(result);
    }
  {
      result=CompatibleTypeUtils.compatibleTypeConvert("a",char.class);
      assertEquals(Character.valueOf('a'),(Character)result);
      result=CompatibleTypeUtils.compatibleTypeConvert("A",MyEnum.class);
      assertEquals(MyEnum.A,(MyEnum)result);
      result=CompatibleTypeUtils.compatibleTypeConvert("3",BigInteger.class);
      assertEquals(new BigInteger("3"),(BigInteger)result);
      result=CompatibleTypeUtils.compatibleTypeConvert("3",BigDecimal.class);
      assertEquals(new BigDecimal("3"),(BigDecimal)result);
      result=CompatibleTypeUtils.compatibleTypeConvert("2011-12-11 12:24:12",Date.class);
      assertEquals(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2011-12-11 12:24:12"),(Date)result);
      result=CompatibleTypeUtils.compatibleTypeConvert("2011-12-11 12:24:12",java.sql.Date.class);
      assertEquals(new SimpleDateFormat("yyyy-MM-dd").format((java.sql.Date)result),"2011-12-11");
      result=CompatibleTypeUtils.compatibleTypeConvert("2011-12-11 12:24:12",java.sql.Time.class);
      assertEquals(new SimpleDateFormat("HH:mm:ss").format((java.sql.Time)result),"12:24:12");
      result=CompatibleTypeUtils.compatibleTypeConvert("2011-12-11 12:24:12",java.sql.Timestamp.class);
      assertEquals(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((java.sql.Timestamp)result),"2011-12-11 12:24:12");
      result=CompatibleTypeUtils.compatibleTypeConvert("ab",char[].class);
      assertEquals(2,((char[])result).length);
      assertEquals('a',((char[])result)[0]);
      assertEquals('b',((char[])result)[1]);
      result=CompatibleTypeUtils.compatibleTypeConvert("",char[].class);
      assertEquals(0,((char[])result).length);
      result=CompatibleTypeUtils.compatibleTypeConvert(null,char[].class);
      assertEquals(null,result);
    }
  {
      result=CompatibleTypeUtils.compatibleTypeConvert(3,byte.class);
      assertEquals(Byte.valueOf((byte)3),(Byte)result);
      result=CompatibleTypeUtils.compatibleTypeConvert((byte)3,int.class);
      assertEquals(Integer.valueOf(3),(Integer)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(3,short.class);
      assertEquals(Short.valueOf((short)3),(Short)result);
      result=CompatibleTypeUtils.compatibleTypeConvert((short)3,int.class);
      assertEquals(Integer.valueOf(3),(Integer)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(3,int.class);
      assertEquals(Integer.valueOf(3),(Integer)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(3,long.class);
      assertEquals(Long.valueOf(3),(Long)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(3L,int.class);
      assertEquals(Integer.valueOf(3),(Integer)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(3L,BigInteger.class);
      assertEquals(BigInteger.valueOf(3L),(BigInteger)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(BigInteger.valueOf(3L),int.class);
      assertEquals(Integer.valueOf(3),(Integer)result);
    }
  {
      result=CompatibleTypeUtils.compatibleTypeConvert(3D,float.class);
      assertEquals(Float.valueOf(3),(Float)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(3F,double.class);
      assertEquals(Double.valueOf(3),(Double)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(3D,double.class);
      assertEquals(Double.valueOf(3),(Double)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(3D,BigDecimal.class);
      assertEquals(BigDecimal.valueOf(3D),(BigDecimal)result);
      result=CompatibleTypeUtils.compatibleTypeConvert(BigDecimal.valueOf(3D),double.class);
      assertEquals(Double.valueOf(3),(Double)result);
    }
  {
      List<String> list=new ArrayList<String>();
      list.add("a");
      list.add("b");
      Set<String> set=new HashSet<String>();
      set.add("a");
      set.add("b");
      String[] array=new String[]{"a","b"};
      result=CompatibleTypeUtils.compatibleTypeConvert(array,List.class);
      assertEquals(ArrayList.class,result.getClass());
      assertEquals(2,((List<String>)result).size());
      assertTrue(((List<String>)result).contains("a"));
      assertTrue(((List<String>)result).contains("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(set,List.class);
      assertEquals(ArrayList.class,result.getClass());
      assertEquals(2,((List<String>)result).size());
      assertTrue(((List<String>)result).contains("a"));
      assertTrue(((List<String>)result).contains("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(array,CopyOnWriteArrayList.class);
      assertEquals(CopyOnWriteArrayList.class,result.getClass());
      assertEquals(2,((List<String>)result).size());
      assertTrue(((List<String>)result).contains("a"));
      assertTrue(((List<String>)result).contains("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(set,CopyOnWriteArrayList.class);
      assertEquals(CopyOnWriteArrayList.class,result.getClass());
      assertEquals(2,((List<String>)result).size());
      assertTrue(((List<String>)result).contains("a"));
      assertTrue(((List<String>)result).contains("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(set,String[].class);
      assertEquals(String[].class,result.getClass());
      assertEquals(2,((String[])result).length);
      assertTrue(((String[])result)[0].equals("a") || ((String[])result)[0].equals("b"));
      assertTrue(((String[])result)[1].equals("a") || ((String[])result)[1].equals("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(array,Set.class);
      assertEquals(HashSet.class,result.getClass());
      assertEquals(2,((Set<String>)result).size());
      assertTrue(((Set<String>)result).contains("a"));
      assertTrue(((Set<String>)result).contains("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(list,Set.class);
      assertEquals(HashSet.class,result.getClass());
      assertEquals(2,((Set<String>)result).size());
      assertTrue(((Set<String>)result).contains("a"));
      assertTrue(((Set<String>)result).contains("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(array,ConcurrentHashSet.class);
      assertEquals(ConcurrentHashSet.class,result.getClass());
      assertEquals(2,((Set<String>)result).size());
      assertTrue(((Set<String>)result).contains("a"));
      assertTrue(((Set<String>)result).contains("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(list,ConcurrentHashSet.class);
      assertEquals(ConcurrentHashSet.class,result.getClass());
      assertEquals(2,((Set<String>)result).size());
      assertTrue(((Set<String>)result).contains("a"));
      assertTrue(((Set<String>)result).contains("b"));
      result=CompatibleTypeUtils.compatibleTypeConvert(list,String[].class);
      assertEquals(String[].class,result.getClass());
      assertEquals(2,((String[])result).length);
      assertTrue(((String[])result)[0].equals("a"));
      assertTrue(((String[])result)[1].equals("b"));
    }
  }
  