aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/cgeo/geocaching/HtmlPerformanceTest.java
blob: 695cd4ae0d087b2434249d1b08a51cdb3bd8d9ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package cgeo.geocaching;

import cgeo.geocaching.utils.Log;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

import org.apache.commons.lang3.StringEscapeUtils;

import android.os.SystemClock;
import android.test.AndroidTestCase;
import android.text.Html;

public class HtmlPerformanceTest extends AndroidTestCase {
    private String input;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        input = "Weißer Tiger";
    }

    public void testUnescape() {
        assert (unescapeAndroid().equals("Weißer Tiger"));
        assert (unescapeApache().equals("Weißer Tiger"));
    }

    private String unescapeApache() {
        return StringEscapeUtils.unescapeHtml4(input);
    }

    private String unescapeAndroid() {
        return Html.fromHtml(input).toString();
    }

    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(String label, 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;
    }
}