/** * {@link android.app.Activity#onSaveInstanceState(Bundle)}, {@link android.app.Fragment#onSaveInstanceState(Bundle)}, {@link android.view.View#onSaveInstanceState()}. */ public Bundle onSaveInstanceState() { Bundle bundle = new Bundle(); getPresenter(); if (presenter != null) { Bundle presenterBundle = new Bundle(); presenter.save(presenterBundle); bundle.putBundle(PRESENTER_KEY, presenterBundle); bundle.putString(PRESENTER_ID_KEY, PresenterStorage.INSTANCE.getId(presenter)); } return bundle; }
@Test public void testSavePresenter() throws Exception { Presenter presenter = new Presenter(); PresenterStorage.INSTANCE.add(presenter); Presenter presenter2 = new Presenter(); PresenterStorage.INSTANCE.add(presenter2); String id = PresenterStorage.INSTANCE.getId(presenter); assertNotEquals(id, PresenterStorage.INSTANCE.getId(presenter2)); assertEquals(presenter, PresenterStorage.INSTANCE.getPresenter(id)); presenter.destroy(); assertNull(PresenterStorage.INSTANCE.getPresenter(id)); }
public PresenterStorage mockStorage() { PresenterStorage storage = mock(PresenterStorage.class); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { presenters.add((Presenter) invocation.getArguments()[0]); return null; } }).when(storage).add(any(Presenter.class)); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return "" + presenters.indexOf(invocation.getArguments()[0]); } }).when(storage).getId(any(Presenter.class)); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return presenters.get(Integer.parseInt((String) invocation.getArguments()[0])); } }).when(storage).getPresenter(anyString()); Whitebox.setInternalState(PresenterStorage.class, "INSTANCE", storage); return storage; }