PrettifyTest: output prettyfied expected and actual results for better readability
diff --git a/test/prettify/PrettifyTest.java b/test/prettify/PrettifyTest.java
index 15fc747..7bc1b11 100644
--- a/test/prettify/PrettifyTest.java
+++ b/test/prettify/PrettifyTest.java
@@ -16,6 +16,8 @@
 import prettify.parser.Util;
 import prettify.parser.Job;
 import prettify.parser.Prettify;
+
+import java.util.Arrays;
 import java.util.ListIterator;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -89,9 +91,19 @@
     Job job = new Job(0, source);
     prettify.langHandlerForExtension(extension, source).decorate(job);
     List<Object> decorations = removeJSLineNumbering ? removeNewLines(job.getDecorations(), source) : job.getDecorations();
-    List<Object> compare = readResult(new String(readFile(new File(packagePath + "result/" + code + ".txt")), "UTF-8").replace("&lt;", "<").replace("&gt;", ">").replace("&nbsp;", " ").replace("&amp;", "&"), removeJSLineNumbering);
-//        assertArrayEquals(code + "\n" + compare + "\n" + decorations, compare.toArray(), decorations.toArray()); // for debug
-    assertArrayEquals(code, compare.toArray(), decorations.toArray());
+    final byte[] bytes = readFile(new File(packagePath + "result/" + code + ".txt"));
+    List<Object> compare = readResult(new String(bytes, "UTF-8").replace("&lt;", "<").replace("&gt;", ">").replace("&nbsp;", " ").replace("&amp;", "&"), removeJSLineNumbering);
+
+    if (Arrays.equals(compare.toArray(), decorations.toArray())) {
+      return;
+    }
+
+    final StringBuilder errorMessage = new StringBuilder();
+    errorMessage.append("Prettify failed. Expected:\n");
+    errorMessage.append(prettify(source, compare));
+    errorMessage.append("\n\nBut was:\n");
+    errorMessage.append(prettify(source, decorations));
+    fail(errorMessage.toString());
   }
 
   @Test
@@ -300,4 +312,24 @@
 
     return returnList;
   }
+
+	private static String prettify(String source, List<Object> decorations) {
+		if (decorations.size() % 2 != 0) {
+			throw new IllegalArgumentException();
+		}
+
+		final StringBuilder result = new StringBuilder();
+		for (int index = 0; index < decorations.size(); index+=2) {
+			final int start = ((Integer)decorations.get(index)).intValue();
+			final int end = index < decorations.size() - 2 ? ((Integer)decorations.get(index + 2)).intValue() : source.length();
+			final String type = (String)decorations.get(index + 1);
+			result.append("`");
+			result.append(type.toUpperCase());
+			result.append(source.substring(start, end));
+			result.append("`");
+			result.append("END");
+		}
+
+		return result.toString();
+	}
 }