@Test
  public void testPreservesOptions() {
    Fixture.fakePhase(PhaseId.READ_DATA);
    when(adapter.getFlavor()).thenReturn(NeedsPositionFlavor.CONTINUOUS);
    GeolocationOptions options =
        new GeolocationOptions().setFrequency(10).enableHighAccuracy().setMaximumAge(10);
    when(adapter.getOptions()).thenReturn(options);

    synchronizer.preserveValues(object);

    assertNotNull(
        RWT.getServiceStore()
            .getAttribute(
                synchronizer.getObjectId()
                    + "."
                    + GeolocationSynchronizer.PROP_ENABLE_HIGH_ACCURACY));
    assertNotNull(
        RWT.getServiceStore()
            .getAttribute(
                synchronizer.getObjectId() + "." + GeolocationSynchronizer.PROP_FREQUENCY));
    assertNotNull(
        RWT.getServiceStore()
            .getAttribute(
                synchronizer.getObjectId() + "." + GeolocationSynchronizer.PROP_MAXIMUM_AGE));
  }
  @Test
  public void testOptions() {
    GeolocationOptions mock = mock(GeolocationOptions.class);

    adapter.setOptions(mock);

    assertEquals(mock, adapter.getOptions());
  }
  @Test
  public void testError() {
    PositionError mock = mock(PositionError.class);

    adapter.setError(mock);

    assertEquals(mock, adapter.getError());
  }
  @Test
  public void testCallback() {
    GeolocationCallback mock = mock(GeolocationCallback.class);

    adapter.setCallback(mock);

    assertEquals(mock, adapter.getCallback());
  }
  @Test
  public void testPosition() {
    Position position = mock(Position.class);

    adapter.setPosition(position);

    assertEquals(position, adapter.getPosition());
  }
  @Test
  public void testProcessActionWithContinous() {
    when(adapter.getFlavor()).thenReturn(NeedsPositionFlavor.CONTINUOUS);
    Position position = mock(Position.class);
    when(adapter.getPosition()).thenReturn(position);
    GeolocationCallback callback = mock(GeolocationCallback.class);
    when(adapter.getCallback()).thenReturn(callback);

    synchronizer.processAction(object);

    verify(callback).onSuccess(position);
    verify(adapter).setPosition(null);
    verify(adapter, never()).setCallback(null);
    verify(adapter, never()).setOptions(null);
    verify(adapter, never()).setFlavor(NeedsPositionFlavor.NEVER);
  }
  @Test
  public void testPreservesValues() {
    Fixture.fakePhase(PhaseId.READ_DATA);
    when(adapter.getFlavor()).thenReturn(NeedsPositionFlavor.CONTINUOUS);
    synchronizer.preserveValues(object);

    assertNotNull(
        RWT.getServiceStore()
            .getAttribute(
                synchronizer.getObjectId() + "." + GeolocationSynchronizer.PROP_NEEDS_POSITION));
  }
  @Test
  public void testRenderChanges() {
    Fixture.fakePhase(PhaseId.READ_DATA);
    when(adapter.getFlavor()).thenReturn(NeedsPositionFlavor.CONTINUOUS);
    GeolocationOptions options =
        new GeolocationOptions().setFrequency(10).enableHighAccuracy().setMaximumAge(10);
    when(adapter.getOptions()).thenReturn(options);

    synchronizer.renderChanges(object);

    verify(synchronizer)
        .renderProperty(
            eq(GeolocationSynchronizer.PROP_NEEDS_POSITION),
            any(NeedsPositionFlavor.class),
            any(NeedsPositionFlavor.class));
    verify(synchronizer)
        .renderProperty(
            eq(GeolocationSynchronizer.PROP_MAXIMUM_AGE), any(Integer.class), any(Integer.class));
    verify(synchronizer)
        .renderProperty(
            eq(GeolocationSynchronizer.PROP_FREQUENCY), any(Integer.class), any(Integer.class));
  }
  @Test
  public void testFlavor() {
    adapter.setFlavor(NeedsPositionFlavor.CONTINUOUS);

    assertEquals(NeedsPositionFlavor.CONTINUOUS, adapter.getFlavor());
  }