コード例 #1
0
 @Implementation
 public static Camera open(int cameraId) {
   lastOpenedCameraId = cameraId;
   Camera camera = Robolectric.newInstanceOf(Camera.class);
   Robolectric.shadowOf(camera).id = cameraId;
   return camera;
 }
コード例 #2
0
  @Test
  public void loadAd_whenCallingOnBannerFailed_shouldCancelExistingTimeoutRunnable()
      throws Exception {
    Robolectric.pauseMainLooper();

    Answer justCallOnBannerFailed =
        new Answer() {
          @Override
          public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
            assertThat(Robolectric.getUiThreadScheduler().enqueuedTaskCount()).isEqualTo(1);
            subject.onBannerFailed(null);
            assertThat(Robolectric.getUiThreadScheduler().enqueuedTaskCount()).isEqualTo(0);
            return null;
          }
        };

    doAnswer(justCallOnBannerFailed)
        .when(banner)
        .loadBanner(
            any(Context.class),
            any(CustomEventBanner.CustomEventBannerListener.class),
            any(Map.class),
            any(Map.class));

    assertThat(Robolectric.getUiThreadScheduler().enqueuedTaskCount()).isEqualTo(0);
    subject.loadAd();
    assertThat(Robolectric.getUiThreadScheduler().enqueuedTaskCount()).isEqualTo(0);
  }
コード例 #3
0
  @Test
  public void getNextSentHttpRequest_shouldRemoveHttpRequests() throws Exception {
    Robolectric.addPendingHttpResponse(200, "a happy response body");
    HttpGet httpGet = new HttpGet("http://example.com");
    requestDirector.execute(null, httpGet, null);

    assertSame(Robolectric.getNextSentHttpRequest(), httpGet);
    assertNull(Robolectric.getNextSentHttpRequest());
  }
コード例 #4
0
  @Test
  public void skipLoginAndCancel() {
    ShadowActivity shadowActivity = Robolectric.shadowOf(loginActivity);

    ((TextView) loginActivity.findViewById(R.id.skipLogin)).performClick();
    AlertDialog latestAlertDialog = ShadowAlertDialog.getLatestAlertDialog();
    ShadowAlertDialog dialog = Robolectric.shadowOf(latestAlertDialog);
    assertEquals(loginActivity.getString(R.string.noLoginWarn), dialog.getMessage());
    assertTrue(latestAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick());
    assertNull(shadowActivity.getNextStartedActivity());
  }
コード例 #5
0
  @Test
  public void shouldQueueUiTasksWhenUiThreadIsPaused() throws Exception {
    Robolectric.pauseMainLooper();

    activity = create(DialogLifeCycleActivity.class);
    TestRunnable runnable = new TestRunnable();
    activity.runOnUiThread(runnable);
    assertFalse(runnable.wasRun);

    Robolectric.unPauseMainLooper();
    assertTrue(runnable.wasRun);
  }
コード例 #6
0
  @Test
  public void clearPendingHttpResponses() throws Exception {
    Robolectric.addPendingHttpResponse(200, "earlier");
    Robolectric.clearPendingHttpResponses();
    Robolectric.addPendingHttpResponse(500, "later");

    HttpResponse response = requestDirector.execute(null, new HttpGet("http://some.uri"), null);

    assertNotNull(response);
    assertThat(response.getStatusLine().getStatusCode(), equalTo(500));
    assertThat(Strings.fromStream(response.getEntity().getContent()), equalTo("later"));
  }
コード例 #7
0
  @Test(expected = IllegalArgumentException.class)
  public void shouldNotBeAbleToExitTheWrongScope() {
    final ContextScope scope =
        RoboGuice.getOrCreateBaseApplicationInjector(Robolectric.application)
            .getInstance(ContextScope.class);
    final Activity a = Robolectric.buildActivity(A.class).get();
    final Activity b = Robolectric.buildActivity(B.class).get();

    scope.enter(a);
    scope.enter(b);
    scope.exit(a);
  }
コード例 #8
0
  @Test
  public void timeout_shouldSignalFailureAndInvalidateWithDefaultDelay() throws Exception {
    subject.loadAd();

    Robolectric.idleMainLooper(CustomEventBannerAdapter.DEFAULT_BANNER_TIMEOUT_DELAY - 1);
    verify(moPubView, never()).loadFailUrl(eq(NETWORK_TIMEOUT));
    assertThat(subject.isInvalidated()).isFalse();

    Robolectric.idleMainLooper(1);
    verify(moPubView).loadFailUrl(eq(NETWORK_TIMEOUT));
    assertThat(subject.isInvalidated()).isTrue();
  }
コード例 #9
0
  @Test
  public void shouldSupportRealHttpRequestsAddingRequestInfo() throws Exception {
    Robolectric.getFakeHttpLayer().interceptHttpRequests(false);
    DefaultHttpClient client = new DefaultHttpClient();

    // it's really bad to depend on an external server in order to get a test pass,
    // but this test is about making sure that we can intercept calls to external servers
    // so, I think that in this specific case, it's appropriate...
    client.execute(new HttpGet("http://google.com"));

    assertNotNull(Robolectric.getFakeHttpLayer().getLastSentHttpRequestInfo());
    assertNotNull(Robolectric.getFakeHttpLayer().getLastHttpResponse());
  }
コード例 #10
0
  @Test
  public void shouldRecordExtendedRequestData() throws Exception {
    Robolectric.addPendingHttpResponse(200, "a happy response body");
    HttpGet httpGet = new HttpGet("http://example.com");
    requestDirector.execute(null, httpGet, null);

    assertSame(Robolectric.getSentHttpRequestInfo(0).getHttpRequest(), httpGet);
    ConnectionKeepAliveStrategy strategy =
        shadowOf(
                (DefaultRequestDirector) Robolectric.getSentHttpRequestInfo(0).getRequestDirector())
            .getConnectionKeepAliveStrategy();
    assertSame(strategy, connectionKeepAliveStrategy);
  }
コード例 #11
0
  @Test
  public void clearHttpResponseRules_shouldRemoveAllRules() throws Exception {
    Robolectric.addHttpResponseRule("http://some.uri", "a cheery response body");
    Robolectric.clearHttpResponseRules();
    Robolectric.addHttpResponseRule("http://some.uri", "a gloomy response body");

    HttpResponse response = requestDirector.execute(null, new HttpGet("http://some.uri"), null);

    assertNotNull(response);
    assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
    assertThat(
        Strings.fromStream(response.getEntity().getContent()), equalTo("a gloomy response body"));
  }
コード例 #12
0
  @Test
  public void shouldReturnRequestsByRule_MatchingMethod() throws Exception {
    Robolectric.setDefaultHttpResponse(404, "no such page");
    Robolectric.addHttpResponseRule(
        HttpPost.METHOD_NAME,
        "http://some.uri",
        new TestHttpResponse(200, "a cheery response body"));

    HttpResponse response = requestDirector.execute(null, new HttpGet("http://some.uri"), null);

    assertNotNull(response);
    assertThat(response.getStatusLine().getStatusCode(), equalTo(404));
  }
コード例 #13
0
  @Test
  public void shouldBeAbleToOpenMultipleScopes() {
    final ContextScope scope =
        RoboGuice.getOrCreateBaseApplicationInjector(Robolectric.application)
            .getInstance(ContextScope.class);
    final Activity a = Robolectric.buildActivity(A.class).get();
    final Activity b = Robolectric.buildActivity(B.class).get();

    scope.enter(a);
    scope.enter(b);
    scope.exit(b);
    scope.exit(a);
  }
コード例 #14
0
@RunWith(TestRunners.WithDefaults.class)
public class SurfaceViewTest {

  private SurfaceHolder.Callback callback1 = new TestCallback();
  private SurfaceHolder.Callback callback2 = new TestCallback();

  private SurfaceView view =
      new SurfaceView(Robolectric.buildActivity(Activity.class).create().get());
  private SurfaceHolder surfaceHolder = view.getHolder();
  private ShadowSurfaceView shadowSurfaceView = (ShadowSurfaceView) Robolectric.shadowOf(view);
  private ShadowSurfaceView.FakeSurfaceHolder fakeSurfaceHolder =
      shadowSurfaceView.getFakeSurfaceHolder();

  @Test
  public void addCallback() {
    assertThat(fakeSurfaceHolder.getCallbacks()).isEmpty();

    surfaceHolder.addCallback(callback1);

    assertThat(fakeSurfaceHolder.getCallbacks()).contains(callback1);

    surfaceHolder.addCallback(callback2);

    assertThat(fakeSurfaceHolder.getCallbacks()).contains(callback1);
    assertThat(fakeSurfaceHolder.getCallbacks()).contains(callback2);
  }

  @Test
  public void removeCallback() {
    surfaceHolder.addCallback(callback1);
    surfaceHolder.addCallback(callback2);

    assertThat(fakeSurfaceHolder.getCallbacks().size()).isEqualTo(2);

    surfaceHolder.removeCallback(callback1);

    assertThat(fakeSurfaceHolder.getCallbacks()).doesNotContain(callback1);
    assertThat(fakeSurfaceHolder.getCallbacks()).contains(callback2);
  }

  private static class TestCallback implements SurfaceHolder.Callback {
    @Override
    public void surfaceCreated(SurfaceHolder holder) {}

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {}

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {}
  }
}
コード例 #15
0
  @Test
  public void timeout_withNonNullAdTimeoutDelay_shouldSignalFailureAndInvalidateWithCustomDelay()
      throws Exception {
    stub(moPubView.getAdTimeoutDelay()).toReturn(77);

    subject.loadAd();

    Robolectric.idleMainLooper(77000 - 1);
    verify(moPubView, never()).loadFailUrl(eq(NETWORK_TIMEOUT));
    assertThat(subject.isInvalidated()).isFalse();

    Robolectric.idleMainLooper(1);
    verify(moPubView).loadFailUrl(eq(NETWORK_TIMEOUT));
    assertThat(subject.isInvalidated()).isTrue();
  }
コード例 #16
0
  @Test
  public void shouldFindLastRequestMade() throws Exception {
    Robolectric.addPendingHttpResponse(200, "a happy response body");
    Robolectric.addPendingHttpResponse(200, "a happy response body");
    Robolectric.addPendingHttpResponse(200, "a happy response body");

    DefaultHttpClient client = new DefaultHttpClient();
    client.execute(new HttpGet("http://www.first.org"));
    client.execute(new HttpGet("http://www.second.org"));
    client.execute(new HttpGet("http://www.third.org"));

    assertThat(
        ((HttpUriRequest) Robolectric.getLatestSentHttpRequest()).getURI(),
        equalTo(URI.create("http://www.third.org")));
  }
コード例 #17
0
  @Test
  public void shouldSupportBasicResponseHandlerHandleResponse() throws Exception {
    Robolectric.addPendingHttpResponse(200, "OK", new BasicHeader("Content-Type", "text/plain"));

    DefaultHttpClient client = new DefaultHttpClient();
    HttpResponse response = client.execute(new HttpGet("http://www.nowhere.org"));

    assertThat(
        ((HttpUriRequest) Robolectric.getSentHttpRequest(0)).getURI(),
        equalTo(URI.create("http://www.nowhere.org")));

    Assert.assertNotNull(response);
    String responseStr = new BasicResponseHandler().handleResponse(response);
    Assert.assertEquals("OK", responseStr);
  }
コード例 #18
0
  @Test
  public void execute_whenUberAppInsalled_shouldPointToUberApp() throws IOException {
    String expectedUri =
        readUriResourceWithUserAgentParam(
            "src/test/resources/deeplinkuris/just_client_provided", USER_AGENT_DEEPLINK);

    Activity activity = Robolectric.setupActivity(Activity.class);
    ShadowActivity shadowActivity = shadowOf(activity);

    RobolectricPackageManager packageManager =
        (RobolectricPackageManager) shadowActivity.getPackageManager();

    PackageInfo uberPackage = new PackageInfo();
    uberPackage.packageName = UBER_PACKAGE_NAME;
    packageManager.addPackage(uberPackage);

    RideParameters rideParameters = new RideParameters.Builder().build();

    RequestDeeplink requestDeeplink =
        new RequestDeeplink.Builder()
            .setClientId(CLIENT_ID)
            .setRideParameters(rideParameters)
            .build();

    requestDeeplink.execute(activity);

    Intent startedIntent = shadowActivity.getNextStartedActivity();
    assertEquals(expectedUri, startedIntent.getData().toString());
  }
コード例 #19
0
 @Implementation
 public static CookieManager getInstance() {
   if (sRef == null) {
     sRef = Robolectric.newInstanceOf(CookieManager.class);
   }
   return sRef;
 }
コード例 #20
0
  @Test
  public void deveAtualizarEstadoListaItemsCardapio() {

    Marmitaria m =
        new MarmitariaBuilder()
            .newMarmitaria("camilo", "12345", "tereza campos")
            .criaCardapio("Segunda-Feira")
            .adicioneGrupo("Carnes")
            .comOpcao("Patinho")
            .comOpcao("Frango Grelhado")
            .ok()
            .adicioneGrupo("Acompanhamentos")
            .comOpcao("Feijao")
            .comOpcao("Arroz")
            .ok()
            .adicioneGrupo("Salada")
            .comOpcao("Hortaliças")
            .comOpcao("Legumes no Vapor")
            .ok()
            .okCardapio()
            .getMarmitaria();

    Intent i = new Intent(RuntimeEnvironment.application, GrupoOpcaoCardapioActivity.class);
    i.putExtra(GrupoOpcaoListFragment.ARG_NAME_CARDAPIO, m.getCardapios().get(0));

    GrupoOpcaoCardapioActivity grupoOpcaoCardapioActivity =
        Robolectric.buildActivity(GrupoOpcaoCardapioActivity.class).withIntent(i).visible().get();

    // FIXME terminar este teste

  }
コード例 #21
0
 @Ignore // todo we need to figure out a better way to deal with this...
 @Test // the shadow will still have its default constructor called; it would be duplicative to
       // call __constructor__() too.
 @Config(shadows = {ShadowForClassWithNoDefaultConstructor.class})
 public void forClassWithNoDefaultConstructor_generatedDefaultConstructorShouldNotCallShadow()
     throws Exception {
   Constructor<ClassWithNoDefaultConstructor> ctor =
       ClassWithNoDefaultConstructor.class.getDeclaredConstructor();
   ctor.setAccessible(true);
   ClassWithNoDefaultConstructor instance = ctor.newInstance();
   assertThat(Robolectric.shadowOf_(instance)).isNotNull();
   assertThat(Robolectric.shadowOf_(instance))
       .isInstanceOf(ShadowForClassWithNoDefaultConstructor.class);
   assertTrue(ShadowForClassWithNoDefaultConstructor.shadowDefaultConstructorCalled);
   assertFalse(ShadowForClassWithNoDefaultConstructor.shadowDefaultConstructorImplementorCalled);
 }
コード例 #22
0
@RunWith(RobolectricTestRunner.class)
public class RefereeActivityTest {

  private final Referee referee = Robolectric.buildActivity(Referee.class).create().get();
  private final Button player1Score = (Button) referee.findViewById(R.id.player1Score);
  private final TextView scoreView = (TextView) referee.findViewById(R.id.scoreView);

  @Test
  public void display_Love_All_as_init_score() {
    assertEquals("Love All", scoreView.getText().toString());
  }

  @Test
  public void fifteen_love_after_player1_scores() {
    player1Score.performClick();

    assertEquals("Fifteen Love", scoreView.getText().toString());
  }

  @Test
  public void Thirty_Love_after_player1_scores_twice() {
    player1Score.performClick();
    player1Score.performClick();

    assertEquals("Thirty Love", scoreView.getText().toString());
  }
}
コード例 #23
0
  /** - 内容:sendInBackground(POST)が成功することを確認する - 結果:非同期でプッシュの送信が出来る事 */
  @Test
  public void sendInBackground_post() throws Exception {
    Assert.assertFalse(callbackFlag);
    // post
    NCMBPush push = new NCMBPush();
    push.setMessage("message");
    push.setTitle("title");
    push.sendInBackground(
        new DoneCallback() {

          @Override
          public void done(NCMBException e) {
            Assert.assertNull(e);
            callbackFlag = true;
          }
        });

    Robolectric.flushBackgroundThreadScheduler();
    ShadowLooper.runUiThreadTasks();

    Assert.assertTrue(callbackFlag);

    // check
    Assert.assertEquals("message", push.getMessage());
    Assert.assertEquals("title", push.getTitle());
    Assert.assertEquals("7FrmPTBKSNtVjajm", push.getObjectId());
    DateFormat format = NCMBDateFormat.getIso8601();
    Assert.assertEquals(format.parse("2014-06-03T11:28:30.348Z"), push.getCreateDate());
  }
コード例 #24
0
 @Test
 public void getActionBar_shouldWorkIfActivityHasAnAppropriateTheme() throws Exception {
   ActionBarThemedActivity myActivity =
       Robolectric.buildActivity(ActionBarThemedActivity.class).create().get();
   ActionBar actionBar = myActivity.getActionBar();
   assertThat(actionBar).isNotNull();
 }
コード例 #25
0
  @Test
  public void shouldAllowBackgroundThreadsToFinishUsingContextAfterOnDestroy() throws Exception {
    final SoftReference<F> ref =
        new SoftReference<F>(Robolectric.buildActivity(F.class).create().get());

    final BlockingQueue<Context> queue = new ArrayBlockingQueue<Context>(1);
    new Thread() {
      final Context context = RoboGuice.getInjector(ref.get()).getInstance(Context.class);

      @Override
      public void run() {
        queue.add(context);
      }
    }.start();

    ref.get().onDestroy();

    // Force an OoM
    // http://stackoverflow.com/questions/3785713/how-to-make-the-java-system-release-soft-references/3810234
    boolean oomHappened = false;
    try {
      @SuppressWarnings({"MismatchedQueryAndUpdateOfCollection"})
      final ArrayList<Object[]> allocations = new ArrayList<Object[]>();
      int size;
      while ((size = Math.min(Math.abs((int) Runtime.getRuntime().freeMemory()), Integer.MAX_VALUE))
          > 0) allocations.add(new Object[size]);

    } catch (OutOfMemoryError e) {
      // Yeah!
      oomHappened = true;
    }

    assertTrue(oomHappened);
    assertNotNull(queue.poll(10, TimeUnit.SECONDS));
  }
コード例 #26
0
 @Before
 public void prepare() {
   ActivityController<MainActivity_> activityController =
       Robolectric.buildActivity(MainActivity_.class);
   activityController.create();
   activity = activityController.get();
 }
コード例 #27
0
  @Before
  public void setUp() throws Exception {
    MockitoAnnotations.initMocks(this);
    Mockito.stub(mPhotoListManager.getPhotoListFetched()).toReturn(true);

    activityController = Robolectric.buildActivity(PhotosListViewActivity.class);
    subject = activityController.get();
    Mockito.doAnswer(
            new Answer() {
              @Override
              public Object answer(InvocationOnMock invocation) throws Throwable {
                subject.requestPermissionCallback.Granted(1);
                return null;
              }
            })
        .when(mRequestPermissionUtils)
        .requestPermission(
            subject,
            Manifest.permission.ACCESS_FINE_LOCATION,
            subject.requestPermissionCallback,
            Constants.MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
    flickrPhotoList =
        new ArrayList<FlickrPhoto>(
            Arrays.asList(new FlickrPhoto("some-photo", "some-small-url", "some-big-url")));
    subject.setFlickrPhotoList(flickrPhotoList);
    activityController.create().start();
  }
コード例 #28
0
ファイル: MapFragmentTest.java プロジェクト: haovn577/open
 @Test
 public void onResume_shouldRegisterFindMeReceiver() {
   Intent expectedIntent = new Intent(COM_MAPZEN_FIND_ME);
   List<BroadcastReceiver> findMeReceivers =
       Robolectric.getShadowApplication().getReceiversForIntent(expectedIntent);
   assertThat(findMeReceivers).hasSize(1);
 }
コード例 #29
0
  /** - 内容:executeScriptInBackgroundが成功することを確認する - 結果:エラーが発生しないこと */
  @Test
  public void executeScriptInBackground() throws Exception {
    NCMBScriptService scriptService = (NCMBScriptService) NCMB.factory(NCMB.ServiceType.SCRIPT);
    scriptService.executeScriptInBackground(
        "testScript.js",
        NCMBScript.MethodType.GET,
        null,
        null,
        null,
        mScriptUrl,
        new ExecuteScriptCallback() {
          @Override
          public void done(byte[] result, NCMBException e) {
            if (e != null) {
              Assert.fail(e.getMessage());
            } else {
              try {
                Assert.assertEquals("hello", new String(result, "UTF-8"));
              } catch (UnsupportedEncodingException error) {
                Assert.fail(error.getMessage());
              }
            }
            mCallbackFlag = true;
          }
        });

    Robolectric.flushBackgroundThreadScheduler();
    ShadowLooper.runUiThreadTasks();

    Assert.assertTrue(mCallbackFlag);
  }
コード例 #30
0
 @Test
 public void viewPager_CurrentPage() {
   MainActivity mainActivity = Robolectric.setupActivity(MainActivity.class);
   ViewPager viewPager = (ViewPager) mainActivity.findViewById(R.id.viewPager);
   assertEquals(viewPager.getCurrentItem(), 2);
   assertEquals(viewPager.getAdapter().getPageTitle(2).toString(), "Today");
 }