public void testToTypes() throws Exception {
   assertEquals(
       "Integer.class", Integer.class, StringToNumberConverter.toInteger(false).getToType());
   assertEquals("Integer.TYPE", Integer.TYPE, StringToNumberConverter.toInteger(true).getToType());
   assertEquals("Double.class", Double.class, StringToNumberConverter.toDouble(false).getToType());
   assertEquals("Double.TYPE", Double.TYPE, StringToNumberConverter.toDouble(true).getToType());
   assertEquals("Long.class", Long.class, StringToNumberConverter.toLong(false).getToType());
   assertEquals("Long.TYPE", Long.TYPE, StringToNumberConverter.toLong(true).getToType());
   assertEquals("Float.class", Float.class, StringToNumberConverter.toFloat(false).getToType());
   assertEquals("Float.TYPE", Float.TYPE, StringToNumberConverter.toFloat(true).getToType());
   assertEquals(
       "BigInteger.TYPE", BigInteger.class, StringToNumberConverter.toBigInteger().getToType());
   assertEquals(
       "BigDecimal.TYPE", BigDecimal.class, StringToNumberConverter.toBigDecimal().getToType());
   assertEquals("Short.class", Short.class, StringToNumberConverter.toShort(false).getToType());
   assertEquals("Short.TYPE", Short.TYPE, StringToNumberConverter.toShort(true).getToType());
   assertEquals("Byte.class", Byte.class, StringToNumberConverter.toByte(false).getToType());
   assertEquals("Byte.TYPE", Byte.TYPE, StringToNumberConverter.toByte(true).getToType());
 }
  public void testConvertsToBigDecimal() throws Exception {
    StringToNumberConverter converter = StringToNumberConverter.toBigDecimal();
    // Test 1: Decimal
    BigDecimal input = new BigDecimal("100.23");
    BigDecimal result = (BigDecimal) converter.convert(formatBigDecimal(input));
    assertEquals("Non-integer BigDecimal", input, result);

    // Test 2: Long
    input = new BigDecimal(Integer.MAX_VALUE + 100L);
    result = (BigDecimal) converter.convert(formatBigDecimal(input));
    assertEquals("Integral BigDecimal in long range", input, result);

    // Test 3: BigInteger range
    input = new BigDecimal("92233720368547990480");
    result = (BigDecimal) converter.convert(formatBigDecimal(input));
    assertEquals("Integral BigDecimal in long range", input, result);

    // Test 4: Very high precision Decimal.
    input = new BigDecimal("100404101.23345678345678893456789345678923198200134567823456789");
    result = (BigDecimal) converter.convert(formatBigDecimal(input));
    assertEquals("Non-integer BigDecimal", input, result);
  }