### Question:
DefaultNamingStrategy extends AbstractNamingStrategy { @Override public String getClassName(String tableName) { String className = tableName.substring(0, 1).toUpperCase(Locale.ENGLISH) + toCamelCase(tableName.substring(1)); return normalizeJavaName(className); } DefaultNamingStrategy(); @Override String getClassName(String tableName); @Override String getDefaultAlias(EntityType entityType); @Override String getDefaultVariableName(EntityType entityType); @Override String getForeignKeysVariable(EntityType entityType); @Override String getPrimaryKeysVariable(EntityType entityType); @Override String getPropertyName(String columnName, EntityType entityType); @Override String getPropertyNameForForeignKey(String fkName, EntityType entityType); @Override String getPropertyNameForInverseForeignKey(String fkName, EntityType entityType); @Override String getPropertyNameForPrimaryKey(String pkName, EntityType entityType);  }### Answer:
@Test public void getClassName() { assertEquals("UserData", namingStrategy.getClassName("user_data")); assertEquals("U", namingStrategy.getClassName("u")); assertEquals("Us",namingStrategy.getClassName("us")); assertEquals("U_", namingStrategy.getClassName("u_")); assertEquals("Us_",namingStrategy.getClassName("us_")); assertEquals("NewLine", namingStrategy.getClassName("new line")); }