EMMA Coverage Report (generated Sun Aug 25 06:27:34 PDT 2013)
[all classes][com.example.i2at.tc]

COVERAGE SUMMARY FOR SOURCE FILE [TemperatureConverterActivity.java]

nameclass, %method, %block, %line, %
TemperatureConverterActivity.java100% (4/4)58%  (11/19)39%  (160/412)47%  (32.2/68)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TemperatureConverterActivity$1100% (1/1)50%  (1/2)8%   (9/117)11%  (1/9)
convert (double): double 0%   (0/1)0%   (0/108)0%   (0/8)
TemperatureConverterActivity$1 (TemperatureConverterActivity, EditNumber, Edi... 100% (1/1)100% (9/9)100% (1/1)
     
class TemperatureConverterActivity100% (1/1)36%  (4/11)32%  (62/191)35%  (13.2/38)
access$000 (TemperatureConverterActivity): EditNumber 0%   (0/1)0%   (0/3)0%   (0/1)
access$100 (TemperatureConverterActivity): TextView 0%   (0/1)0%   (0/3)0%   (0/1)
access$200 (TemperatureConverterActivity): EditNumber 0%   (0/1)0%   (0/3)0%   (0/1)
getCelsius (): double 0%   (0/1)0%   (0/4)0%   (0/1)
getFahrenheit (): double 0%   (0/1)0%   (0/4)0%   (0/1)
onOptionsItemSelected (MenuItem): boolean 0%   (0/1)0%   (0/11)0%   (0/4)
runTests (): void 0%   (0/1)0%   (0/80)0%   (0/14)
onCreate (Bundle): void 100% (1/1)67%  (43/64)67%  (8/12)
TemperatureConverterActivity (): void 100% (1/1)100% (3/3)100% (2/2)
onAttachedToWindow (): void 100% (1/1)100% (3/3)100% (2/2)
onCreateOptionsMenu (Menu): boolean 100% (1/1)100% (13/13)100% (2/2)
     
class TemperatureConverterActivity$TemperatureChangeWatcher100% (1/1)100% (4/4)84%  (77/92)85%  (18/21)
onTextChanged (CharSequence, int, int, int): void 100% (1/1)81%  (63/78)80%  (12/15)
TemperatureConverterActivity$TemperatureChangeWatcher (TemperatureConverterAc... 100% (1/1)100% (12/12)100% (4/4)
afterTextChanged (Editable): void 100% (1/1)100% (1/1)100% (1/1)
beforeTextChanged (CharSequence, int, int, int): void 100% (1/1)100% (1/1)100% (1/1)
     
class TemperatureConverterActivity$2100% (1/1)100% (2/2)100% (12/12)100% (2/2)
TemperatureConverterActivity$2 (TemperatureConverterActivity, EditNumber, Edi... 100% (1/1)100% (9/9)100% (1/1)
convert (double): double 100% (1/1)100% (3/3)100% (1/1)

1 
2package com.example.i2at.tc;
3 
4import java.util.List;
5 
6import android.content.ComponentName;
7import android.content.pm.InstrumentationInfo;
8import android.os.Bundle;
9import android.text.Editable;
10import android.text.TextWatcher;
11import android.view.Menu;
12import android.view.MenuItem;
13import android.widget.TextView;
14import android.widget.Toast;
15 
16import com.android.debug.hv.LocalViewServerActivity;
17 
18/**
19 * <em>TemperatureConverterActivity</em> is a demonstration Activity used to
20 * show some testing features.
21 * 
22 * @author diego
23 */
24public class TemperatureConverterActivity extends LocalViewServerActivity {
25    public static final String FAHRENHEIT_KEY = "com.example.i2at.tc.Fahrenheit";
26 
27    public static final String CELSIUS_KEY = "com.example.i2at.tc.Celsius";
28 
29    @SuppressWarnings("unused")
30    private static final String TAG = "TemperatureConverterActivity";
31 
32    private static final int MENU_ITEM_RUN_TESTS = 1;
33 
34    private static final boolean DEBUG = false;
35 
36    public abstract class TemperatureChangeWatcher implements TextWatcher {
37        private EditNumber mSource;
38        private EditNumber mDest;
39 
40        /**
41         * @param source
42         * @param dest
43         */
44        public TemperatureChangeWatcher(EditNumber source, EditNumber dest) {
45            this.mSource = source;
46            this.mDest = dest;
47        }
48 
49        /*
50         * (non-Javadoc)
51         * @see android.text.TextWatcher#afterTextChanged(android.text.Editable)
52         */
53        @Override
54        public void afterTextChanged(Editable arg0) {
55            // TODO Auto-generated method stub
56 
57        }
58 
59        /*
60         * (non-Javadoc)
61         * @see android.text.TextWatcher#onTextChanged(java.lang.CharSequence,
62         * int, int, int)
63         */
64        @Override
65        public void onTextChanged(CharSequence s, int start, int before,
66                int count) {
67            if (!mDest.hasWindowFocus() || mDest.hasFocus() || s == null) {
68                return;
69            }
70            final String str = s.toString();
71            if ("".equals(str)) {
72                mDest.setText("");
73                return;
74            }
75            try {
76                android.util.Log.v("TemperatureChangeWatcher", "converting temp=" + str + "{"
77                        + Double.parseDouble(str) + "}");
78                final double result = convert(Double.parseDouble(str));
79                android.util.Log.v("TemperatureChangeWatcher", "result=" + result);
80                // final String resutlStr = String.format("%.2f", result);
81                mDest.setNumber(result);
82            } catch (NumberFormatException e) {
83                // WARNING:
84                // this is thrown while a number is entered
85                // for example just a '-'
86            } catch (Exception e) {
87                mSource.setError("ERROR: " + e.getLocalizedMessage());
88            }
89        }
90 
91        protected abstract double convert(double temp);
92 
93        /*
94         * (non-Javadoc)
95         * @see android.text.TextWatcher#onTextChanged(java.lang.CharSequence,
96         * int, int, int)
97         */
98        @Override
99        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
100                int arg3) {
101            // TODO Auto-generated method stub
102 
103        }
104 
105    }
106 
107    private EditNumber mCelsius;
108    private EditNumber mFahrenheit;
109 
110    private TextView mDebug;
111 
112    /** Called when the activity is first created. */
113    @Override
114    public void onCreate(Bundle savedInstanceState) {
115        super.onCreate(savedInstanceState);
116        setContentView(R.layout.main);
117 
118        mCelsius = (EditNumber) findViewById(R.id.celsius);
119        mFahrenheit = (EditNumber) findViewById(R.id.fahrenheit);
120 
121        mCelsius.addTextChangedListener(new TemperatureChangeWatcher(mCelsius, mFahrenheit) {
122 
123            @Override
124            protected double convert(double temp) {
125                int[] location = new int[2];
126                mCelsius.getLocationOnScreen(location);
127                mDebug.append("celsius: loc on screen (" + location[0] + "," + location[1] + ")\n");
128                mDebug.append("         pos (" + mCelsius.getLeft() + "," + mCelsius.getTop()
129                        + ")\n");
130                mFahrenheit.getLocationOnScreen(location);
131                mDebug.append("fahrenheit: loc on screen (" + location[0] + "," + location[1]
132                        + ")\n");
133                mDebug.append("         pos (" + mFahrenheit.getLeft() + "," + mFahrenheit.getTop()
134                        + ")\n");
135                return TemperatureConverter.celsiusToFahrenheit(temp);
136            }
137 
138        });
139 
140        mFahrenheit.addTextChangedListener(new TemperatureChangeWatcher(mFahrenheit, mCelsius) {
141 
142            @Override
143            protected double convert(double temp) {
144                return TemperatureConverter.fahrenheitToCelsius(temp);
145            }
146 
147        });
148 
149        if (savedInstanceState != null) {
150            if (savedInstanceState.containsKey(CELSIUS_KEY)) {
151                mCelsius.setNumber(savedInstanceState.getDouble(CELSIUS_KEY));
152            }
153            else if (savedInstanceState.containsKey(FAHRENHEIT_KEY)) {
154                mFahrenheit.setNumber(savedInstanceState.getDouble(FAHRENHEIT_KEY));
155            }
156        }
157    }
158 
159    /*
160     * (non-Javadoc)
161     * @see android.app.Activity#onAttachedToWindow()
162     */
163    @Override
164    public void onAttachedToWindow() {
165        super.onAttachedToWindow();
166        if (DEBUG) {
167            mDebug = (TextView) findViewById(R.id.debug);
168            int[] location = new int[2];
169            mCelsius.getLocationOnScreen(location);
170            mDebug.append("DEBUG:\n");
171            mDebug.append("celsius: loc on screen (" + location[0] + "," + location[1] + ")\n");
172            mDebug.append("         pos (" + mDebug.getLeft() + "," + mDebug.getTop() + ")\n");
173        }
174    }
175 
176    @Override
177    public boolean onCreateOptionsMenu(Menu menu) {
178        menu.add(Menu.NONE, MENU_ITEM_RUN_TESTS, Menu.NONE, "Run tests").setIcon(
179                android.R.drawable.ic_menu_manage);
180        return super.onCreateOptionsMenu(menu);
181    }
182 
183    @Override
184    public boolean onOptionsItemSelected(MenuItem item) {
185        switch (item.getItemId()) {
186            case MENU_ITEM_RUN_TESTS:
187                runTests();
188                return true;
189        }
190        return super.onOptionsItemSelected(item);
191    }
192 
193    private void runTests() {
194        final String packageName = getPackageName();
195        final List<InstrumentationInfo> list = getPackageManager().queryInstrumentation(
196                packageName, 0);
197        if (list.isEmpty()) {
198            Toast.makeText(this, "Cannot find instrumentation for " + packageName,
199                    Toast.LENGTH_SHORT).show();
200            return;
201        }
202        InstrumentationInfo instrumentationInfo = null;
203        for (InstrumentationInfo ii : list) {
204            if ((packageName + ".test").equals(ii.packageName)) {
205                instrumentationInfo = ii;
206                break;
207            }
208        }
209        final ComponentName componentName = new ComponentName(instrumentationInfo.packageName,
210                instrumentationInfo.name);
211        if (!startInstrumentation(componentName, null, null)) {
212            Toast.makeText(this, "Cannot run instrumentation for " + packageName,
213                    Toast.LENGTH_SHORT).show();
214        }
215    }
216 
217    public double getCelsius() {
218        return mCelsius.getNumber();
219    }
220 
221    public double getFahrenheit() {
222        return mFahrenheit.getNumber();
223    }
224 
225}

[all classes][com.example.i2at.tc]
EMMA 2.0.5312 (C) Vladimir Roubtsov