TypeUtil { static private Boolean parseBoolean(String value){ try { return parseFlag(value); } catch(IllegalArgumentException iae){ try { return toBoolean(parseDouble(value)); } catch(NumberFormatException nfe){ } catch(TypeCheckException tce){ } throw iae; } } private  TypeUtil(); static String format(Object value); static Object parseOrCast(DataType dataType, Object value); static Object parse(DataType dataType, String value); static DaysSinceDate parseDaysSinceDate(LocalDate epoch, String value); static boolean equals(DataType dataType, Object value, Object referenceValue); static DataType getDataType(Object value); static DataType getDataType(Collection<?> values); static DataType getCommonDataType(DataType left, DataType right); static OpType getOpType(DataType dataType); static Object cast(DataType dataType, Object value); static V cast(Class<? extends V> clazz, Object value); static DataType getConstantDataType(Object value); static DataType getConstantDataType(String value);  }
@Test public void parseBoolean(){ assertEquals(Boolean.TRUE, TypeUtil.parse(DataType.BOOLEAN, "true")); assertEquals(Boolean.TRUE, TypeUtil.parse(DataType.BOOLEAN, "TRUE")); assertEquals(Boolean.FALSE, TypeUtil.parse(DataType.BOOLEAN, "false")); assertEquals(Boolean.FALSE, TypeUtil.parse(DataType.BOOLEAN, "FALSE")); try { TypeUtil.parse(DataType.BOOLEAN, "yes"); fail(); } catch(IllegalArgumentException iae){ } assertEquals(Boolean.TRUE, TypeUtil.parse(DataType.BOOLEAN, "1")); assertEquals(Boolean.TRUE, TypeUtil.parse(DataType.BOOLEAN, "1.0")); try { TypeUtil.parse(DataType.BOOLEAN, "0.5"); fail(); } catch(IllegalArgumentException iae){ } assertEquals(Boolean.FALSE, TypeUtil.parse(DataType.BOOLEAN, "-0")); assertEquals(Boolean.FALSE, TypeUtil.parse(DataType.BOOLEAN, "-0.0")); assertEquals(Boolean.FALSE, TypeUtil.parse(DataType.BOOLEAN, "0")); assertEquals(Boolean.FALSE, TypeUtil.parse(DataType.BOOLEAN, "0.0")); }