### Question:
ArrayParser implements Parser<String[][]> { @Override public void parse(String data, ParseCallback<String[][]> parseResult) { rows = null; titleRow = null; totalColumns = 0; Row[] lines; try { lines = getRows(data); } catch (ColumnsLengthException e) { parseResult.onParsingFailure(e); return; } String[][] result = new String[lines.length][getTotalColumns(getTitles(data))]; for (int i = 0; i < lines.length; i++) { for (int j = 0; j < getTotalColumns(getTitles(data)); j++) { result[i][j] = lines[i].getEntries()[j]; } } parseResult.onParsingSuccess(result); }  @Override void parse(String data, ParseCallback<String[][]> parseResult); @Override Row[] getRows(String data); @Override String[] getWords(String rowAsString); @Override Row getTitles(String data); @Override int getTotalColumns(Row titles);  }### Answer:
@Test public void parserTestSimpleData() throws ColumnsLengthException { System.out.println("\n\n---------Test Simple Characters Data---------"); parser.parse(simpleData, callback); }
@Test public void parserTestSpecialData() throws ColumnsLengthException { System.out.println("\n\n---------Test Special Character Data---------"); parser.parse(specialCharsData, callback); }