### Question:
CatalogUtil { public static String normalizeIdentifier(String identifier) { if (identifier == null || identifier.equals("")) { return identifier; } String [] splitted = identifier.split(CatalogConstants.IDENTIFIER_DELIMITER_REGEXP); StringBuilder sb = new StringBuilder(); boolean first = true; for (String part : splitted) { if (first) { first = false; } else { sb.append(CatalogConstants.IDENTIFIER_DELIMITER); } sb.append(normalizeIdentifierPart(part)); } return sb.toString(); }  static String normalizeIdentifier(String identifier); static String normalizeIdentifierPart(String part); static String denormalizeIdentifier(String identifier); static String denormalizePart(String identifier); static boolean isShouldBeQuoted(String columnName); static String stripQuote(String str); static boolean isDelimited(String identifier); static boolean isFQColumnName(String tableName); static boolean isFQTableName(String tableName); static String [] splitFQTableName(String qualifiedName); static String [] splitTableName(String tableName); static String buildFQName(String... identifiers); static String extractQualifier(String name); static String extractSimpleName(String name); static String getCanonicalTableName(String databaseName, String tableName); static String getCanonicalSignature(String functionName, Collection<DataType> paramTypes); static String getCanonicalSignature(String signature, DataType... paramTypes); static StoreType getStoreType(final String typeStr); static TableMeta newTableMeta(StoreType type); static TableMeta newTableMeta(StoreType type, Options options); static TableDesc newTableDesc(String tableName, Schema schema, TableMeta meta, Path path); static TableDesc newTableDesc(TableDescProto proto); static PartitionMethodDesc newPartitionMethodDesc(CatalogProtos.PartitionMethodProto proto); static SchemaProto getQualfiedSchema(String tableName, SchemaProto schema); static DataType newDataType(Type type, String code); static DataType newDataType(Type type, String code, int len); static DataType newSimpleDataType(Type type); static DataType [] newSimpleDataTypeArray(Type... types); static DataType newDataTypeWithLen(Type type, int length); static String columnToDDLString(Column column); static boolean isArrayType(TajoDataTypes.Type type); static boolean isMatchedFunction(List<DataType> definedTypes, List<DataType> givenTypes); static boolean checkIfMatchedNonVarLengthFunction(List<DataType> definedTypes, List<DataType> givenTypes,
                                                           int n, boolean lastArrayCompatible); static boolean checkIfCompatibleIncludingArray(Type defined, Type given); static boolean checkIfVariableLengthParamDefinition(List<DataType> definedTypes); static Type getPrimitiveTypeOf(Type arrayType); static boolean isCompatibleType(final Type definedType, final Type givenType); static CatalogProtos.TableIdentifierProto buildTableIdentifier(String databaseName, String tableName); static void closeQuietly(Connection conn); static void closeQuietly(Statement stmt); static void closeQuietly(ResultSet res); static void closeQuietly(Statement stmt, ResultSet res); static AlterTableDesc renameColumn(String tableName, String oldColumName, String newColumName,
                                            AlterTableType alterTableType); static AlterTableDesc renameTable(String tableName, String newTableName, AlterTableType alterTableType); static AlterTableDesc addNewColumn(String tableName, Column column, AlterTableType alterTableType); static final Set<String> RESERVED_KEYWORDS_SET; }### Answer:
@Test public final void testNormalizeIdentifier() { for (int i = 0; i < sources.length; i++) { assertEquals(normalized[i], CatalogUtil.normalizeIdentifier(sources[i])); } }