Add Case and Tester of Javascript
[0xbench:0xbench.git] / src / org / zeroxlab / benchmark / CaseJavascript.java
1 /*
2  * Copyright (C) 2011 0xlab - http://0xlab.org/
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  * Authored by Julian Chu <walkingice@0xlab.org>
17  */
18
19 package org.zeroxlab.benchmark;
20
21 import java.util.ArrayList;
22
23 import android.util.Log;
24
25 import android.os.SystemClock;
26
27 import android.app.Activity;
28 import android.content.Context;
29 import android.content.BroadcastReceiver;
30 import android.content.Intent;
31 import android.os.Bundle;
32
33 public class CaseJavascript extends Case {
34
35     public static String SUNSPIDER_RESULT = "SUNSPIDER_RESULT";
36     public static String SUNSPIDER_TOTAL  = "SUNSPIDER_TOTAL";
37
38     public static int sRepeat = 1;
39     public static int sRound  = 1;
40
41     private double mTotal = 0.0;
42
43     protected String[] mJSResults;
44     CaseJavascript() {
45         super("CaseJavascript", "org.zeroxlab.benchmark.TesterJavascript", sRepeat, sRound);
46         mType = "msec";
47         mTags = new String[]{new String("javascript")};
48     }
49
50     public String getTitle() {
51         return "SunSpider";
52     }
53
54     public String getDescription() {
55         return "This benchmark tests the core JavaScript language only, not the DOM or other browser APIs. It is designed to compare different versions of the same browser, and different browsers to each other.";
56     }
57
58     @Override
59     public void clear() {
60         super.clear();
61         mJSResults = new String[sRepeat];
62     }
63
64     @Override
65     public void reset() {
66         super.reset();
67         mJSResults = new String[sRepeat];
68     }
69
70     @Override
71     public String getResultOutput() {
72         String result = "\n";
73         for (int i = 0; i < mJSResults.length; i++) {
74             result += mJSResults[i];
75             result += "\n";
76         }
77         return result;
78     }
79
80     @Override
81     public ArrayList<Scenario> getScenarios () {
82         ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
83
84         Scenario s = new Scenario(getTitle(), mType, mTags);
85         s.mLog = getResultOutput();
86         s.mResults.add(mTotal);
87
88         scenarios.add(s);
89
90         return scenarios;
91     }
92
93     @Override
94     protected boolean saveResult(Intent intent, int index) {
95         String result = intent.getStringExtra(SUNSPIDER_RESULT);
96         mTotal = intent.getDoubleExtra(SUNSPIDER_TOTAL, 0.0);
97
98         if (result == null) {
99             Log.e(TAG, "Weird! cannot find SunSpiderInfo");
100             return false;
101         } else {
102             mJSResults[index] = result;
103         }
104
105         return true;
106     }
107 }