Robolectric.java revision 345fb6b77303f0d3c98cf748fefa0136183bdc79
1345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williamspackage com.xtremelabs.robolectric;
20b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
38baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richardimport android.app.Application;
4a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.fakes.*;
5a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.view.TestSharedPreferences;
60b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
70b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.lang.reflect.Constructor;
80b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.lang.reflect.InvocationTargetException;
90b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.util.Arrays;
100b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.util.List;
110b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
12345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williamspublic class Robolectric {
138baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public static Application application;
148baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
150b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    public static <T> T newInstanceOf(Class<T> clazz) {
160b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        try {
170b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            Constructor<T> defaultConstructor = clazz.getDeclaredConstructor();
180b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            defaultConstructor.setAccessible(true);
190b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            return defaultConstructor.newInstance();
200b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (InstantiationException e) {
210b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
220b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (IllegalAccessException e) {
230b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
240b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (NoSuchMethodException e) {
250b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
260b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (InvocationTargetException e) {
270b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
280b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        }
290b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    }
300b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
310b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    public static List<Class<?>> getGenericProxies() {
320b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        return Arrays.asList(
330b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeAbsSpinner.class,
340b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeActivity.class,
350b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeAdapterView.class,
36abde7367c1c6a322c18803941e9118b1daea35fbChristian Williams                FakeAddress.class,
378baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard                FakeAlertDialog.class,
388baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard                FakeAlertDialog.FakeBuilder.class,
398baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard                FakeApplication.class,
4090651a8499bcc859bd5c88a56a1d76c584e6bdfbChristian Williams & Ryan Richard                FakeAppWidgetManager.class,
417e59ae318f1fe609017d9f92f0ae2d55cf881d29Ian Fisher & Ryan Richard                FakeBaseAdapter.class,
42f1e19869f68b5b04688cc9701c3e2bf73cd35f76Ryan Richard                FakeBitmapDrawable.class,
4356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard                FakeCanvas.class,
44ba8b98937b07e341237239fe68d04672b6d200c1Christian Williams & Tyler Schultz                FakeCompoundButton.class,
456fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard                FakeComponentName.class,
469bf5074277d848a2a5e62d1e5afd7bc9a26cab8eChristian Williams                FakeContext.class,
470b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeContextWrapper.class,
48f1e19869f68b5b04688cc9701c3e2bf73cd35f76Ryan Richard                FakeDrawable.class,
49ba56737f9755348a512c33d004aa32fcb739474eChristian Williams & Tyler Schultz                FakeDialog.class,
50abde7367c1c6a322c18803941e9118b1daea35fbChristian Williams                FakeEditText.class,
510b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeGeoPoint.class,
520b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeHandler.class,
5356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard                FakeImageView.class,
540b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeIntent.class,
554cedbc6959d784ba9cb59e0e7f4e59460f3d5075Christian Williams & Ryan Richard                FakeIntentFilter.class,
560b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeItemizedOverlay.class,
5786335af816f048e32aad504aed0af63a73097a5fChristian Williams & Ryan Richard                FakeLayoutInflater.class,
58e8f58f6eb808b49b6e8e0b6beca09bfd7cf8666bChristian Williams & Ryan Richard                FakeLayoutParams.class,
59abde7367c1c6a322c18803941e9118b1daea35fbChristian Williams                FakeListActivity.class,
600b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeListView.class,
611d9f4919935ddc729e248df65ba6365f337eec42Christian Williams & Ryan Richard                FakeLocation.class,
628baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard                FakeLocationManager.class,
630b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeLooper.class,
640b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeMapController.class,
650b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeMapActivity.class,
660b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeMapView.class,
67315e61dd716c47d1f4daef379c559d362ae22deeTyler Schultz                FakeMotionEvent.class,
680b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeOverlayItem.class,
6956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard                FakePaint.class,
7056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard                FakePath.class,
716fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard                FakePendingIntent.class,
7248d362f6d040992990b0130057fa25748bea16cfChristian Williams & Ryan Richard                FakePoint.class,
73abde7367c1c6a322c18803941e9118b1daea35fbChristian Williams                FakeRect.class,
7490651a8499bcc859bd5c88a56a1d76c584e6bdfbChristian Williams & Ryan Richard                FakeRemoteViews.class,
75b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwin                FakeResources.class,
766fb1776c3dd0820074e31a750d991ce69a0597d2Christian Williams & Ryan Richard                FakeService.class,
778baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard                FakeSettings.class,
788baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard                FakeSettings.FakeSecure.class,
798baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard                FakeSettings.FakeSystem.class,
80e8f58f6eb808b49b6e8e0b6beca09bfd7cf8666bChristian Williams & Ryan Richard                FakeSpannableStringBuilder.class,
813a15df058f1e3fd7fbff5c3b17126249f1ed909aChristian Williams & Ryan Richard                FakeTextUtils.class,
820b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeTextView.class,
8390008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher                FakeToast.class,
84bc13a3d997b9ff39a55543d59d75231d90f8fca3Joe Moore & Ryan Richard                FakeTypedValue.class,
850b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher                FakeView.class,
8671eec9cd1f7346c359a96fd714c5c6c41ead790fRyan Richard                FakeViewGroup.class,
8783628c488feafc9655efb44de601004cf52ed0c7Christian Williams & Phil Goodwin                FakeWifiManager.class,
8871eec9cd1f7346c359a96fd714c5c6c41ead790fRyan Richard                FakeZoomButtonsController.class
8971eec9cd1f7346c359a96fd714c5c6c41ead790fRyan Richard                );
900b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    }
9190008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher
92345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams    public static void resetStaticState() {
93345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams        Robolectric.application = new Application();
9490008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher        TestSharedPreferences.reset();
9590008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher        FakeToast.reset();
96f11a21b57608f0585bd3c8f7ee29c6ed35dcdb88Ian Fisher & Tyler Schultz        FakeAlertDialog.reset();
97f11a21b57608f0585bd3c8f7ee29c6ed35dcdb88Ian Fisher & Tyler Schultz        FakeDialog.reset();
98abde7367c1c6a322c18803941e9118b1daea35fbChristian Williams        FakeLooper.resetAll();
9990008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher    }
1000b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher}
101