I'd like to write a method that converts CamelCase into a human-readable name. This is very similar to this question but now with underscore.
Here's the test case:
public void testSplitUnderscore() {
    assertEquals("lowercase", splitUnderscore("lowercase"));
    assertEquals("Class", splitUnderscore("Class"));
    assertEquals("My Class", splitUnderscore("My_Class"));
    assertEquals("HTML", splitUnderscore("HTML"));
    assertEquals("PDF Loader", splitUnderscore("PDF_Loader"));
    assertEquals("A String", splitUnderscore("A_String"));
    assertEquals("Simple XML Parser", splitUnderscore("Simple_XML_Parser"));
    assertEquals("GL 11 Version", splitUnderscore("GL_11_Version"));
    assertEquals("99 Bottles", splitUnderscore("99_Bottle"));
    assertEquals("May 5", splitUnderscore("May_5"));
    assertEquals("BFG 9000", splitUnderscore("BFG_9000"));
    assertEquals("beginning", splitUnderscore("_beginning"));
    assertEquals("end", splitUnderscore("end_"));
    assertEquals("double middle", splitUnderscore("double__middle"));
    assertEquals("double end", splitUnderscore("double_end__"));
    assertEquals("double start", splitUnderscore("__double_start"));
    assertEquals("double start middle end", splitUnderscore("__double_start__middle_end__"));
}
 
     
     
     
     
    