/** when locationis received, shall stop updates immediately */
  @Test
  public void testThatLocationRequestUsCanceledUponLocationReceiving(
      @Mocked("stopUpdates") final LegacyLocationProcessor llp,
      @NonStrict final Location location,
      @NonStrict Log log) {

    new Expectations() {
      {
        llp.stopUpdates();
      }
    };

    assertSame(location, llp.processLocationUpdate(location));
    assertSame(location, Deencapsulation.getField(llp, "cached"));
  }
  /** shall request updates from enabled providers and */
  @Test
  public void testProperUpdateRequest(
      @Mocked final LocationManager locationManager,
      @Mocked final Context context,
      @Mocked final Configuration configuration,
      @Cascading Intent intent,
      @Mocked Log log,
      @Mocked(methods = {"scheduleLocationUpdates", "scheduleCancelationIntent"})
          final LegacyLocationProcessor llp) {

    Deencapsulation.setField(llp, "locationManager", locationManager);
    Deencapsulation.setField(llp, "configuration", configuration);
    new Expectations() {

      {
        configuration.getLocationProvider();
        returns("grumple|grample|grimple");

        locationManager.isProviderEnabled("grumple");
        returns(true);
        Log.d(LegacyLocationProcessor.LOG_TAG, withAny(""));
        invoke(llp, "scheduleLocationUpdates", "grumple");

        locationManager.isProviderEnabled("grample");
        returns(false);

        locationManager.isProviderEnabled("grimple");
        returns(true);

        Log.d(LegacyLocationProcessor.LOG_TAG, withAny(""));
        invoke(llp, "scheduleLocationUpdates", "grimple");

        invoke(llp, "scheduleCancelationIntent");
      }
    };

    llp.requestLocationUpdate();

    // nothing else is allowed
    new FullVerifications() {
      {
      }
    };
  }