package cgeo.geocaching; import static org.assertj.core.api.Java6Assertions.assertThat; import cgeo.geocaching.utils.Log; import cgeo.geocaching.utils.TextUtils; import android.os.SystemClock; import android.test.AndroidTestCase; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import org.apache.commons.lang3.StringEscapeUtils; public class HtmlPerformanceTest extends AndroidTestCase { private String input; @Override protected void setUp() throws Exception { super.setUp(); input = "Weißer Tiger"; } public void testUnescape() { assertThat(unescapeAndroid()).isEqualTo("Weißer Tiger"); assertThat(unescapeApache()).isEqualTo("Weißer Tiger"); } private String unescapeApache() { return StringEscapeUtils.unescapeHtml4(input); } private String unescapeAndroid() { return TextUtils.stripHtml(input); } public void testUnescapePerformance() { final int runs = 100; measure("unescape Apache", new Runnable() { @Override public void run() { for (int i = 0; i < runs; i++) { unescapeApache(); } } }); measure("unescape Android", new Runnable() { @Override public void run() { for (int i = 0; i < runs; i++) { unescapeAndroid(); } } }); } @SuppressFBWarnings("DM_GC") private static long measure(final String label, final Runnable runnable) { System.gc(); final long start = SystemClock.elapsedRealtime(); runnable.run(); final long end = SystemClock.elapsedRealtime(); Log.d(label + ": " + (end - start) + " ms"); return end - start; } }