### Question:
ColumnInfo { public int getSqlType() { return sqlType; } ColumnInfo(String columnName, int sqlType);  ColumnInfo(String columnName, int sqlType, Integer maxLength);  ColumnInfo(String columnName, int sqlType, Integer precision, Integer scale); static ColumnInfo create(String columnName, int sqlType, Integer maxLength, Integer scale); String getColumnName(); int getSqlType(); PDataType getPDataType(); String getDisplayName(); String toTypeString(); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode(); static ColumnInfo fromString(String stringRepresentation); Integer getMaxLength(); Integer getPrecision(); Integer getScale();  }### Answer:
@Test public void testOptionalDescriptionType() { testType(new ColumnInfo("a.myColumn", Types.CHAR), "CHAR:\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", Types.CHAR, 100), "CHAR(100):\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", Types.VARCHAR), "VARCHAR:\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", Types.VARCHAR, 100), "VARCHAR(100):\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", Types.DECIMAL), "DECIMAL:\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", Types.DECIMAL, 100, 10), "DECIMAL(100,10):\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", Types.BINARY, 5), "BINARY(5):\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", PCharArray.INSTANCE.getSqlType(), 3), "CHAR(3) ARRAY:\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", PDecimalArray.INSTANCE.getSqlType(), 10, 2), "DECIMAL(10,2) ARRAY:\"a\".\"myColumn\""); testType(new ColumnInfo("a.myColumn", PVarcharArray.INSTANCE.getSqlType(), 4), "VARCHAR(4) ARRAY:\"a\".\"myColumn\""); }