@Test public void testLeakFree() { NaviEmitter fragment = NaviEmitter.createFragmentEmitter(); LifecycleProvider<FragmentEvent> provider = NaviLifecycle.createFragmentLifecycleProvider(fragment); WeakReference<NaviEmitter> fragmentRef = new WeakReference<>(fragment); WeakReference<LifecycleProvider<FragmentEvent>> providerRef = new WeakReference<>(provider); Observable<Object> observable = PublishSubject.create().hide(); TestObserver<Object> testObserver = observable.compose(provider.bindUntilEvent(FragmentEvent.STOP)).test(); fragment.onAttach(null); fragment.onCreate(null); fragment.onCreateView(null); fragment.onStart(); fragment.onResume(); fragment.onPause(); fragment.onStop(); fragment.onDestroyView(); fragment.onDestroy(); fragment.onDetach(); fragment = null; provider = null; TestUtil.cleanGarbage(); assertNull(fragmentRef.get()); assertNull(providerRef.get()); } }
@Test public void testLifecycle() { NaviEmitter fragment = NaviEmitter.createFragmentEmitter(); LifecycleProvider<FragmentEvent> provider = NaviLifecycle.createFragmentLifecycleProvider(fragment); TestObserver<FragmentEvent> testObserver = provider.lifecycle().test(); fragment.onAttach(null); fragment.onCreate(null); fragment.onCreateView(null); fragment.onStart(); fragment.onResume(); fragment.onPause(); fragment.onStop(); fragment.onDestroyView(); fragment.onDestroy(); fragment.onDetach(); testObserver.assertValues( FragmentEvent.ATTACH, FragmentEvent.CREATE, FragmentEvent.CREATE_VIEW, FragmentEvent.START, FragmentEvent.RESUME, FragmentEvent.PAUSE, FragmentEvent.STOP, FragmentEvent.DESTROY_VIEW, FragmentEvent.DESTROY, FragmentEvent.DETACH ); }
@Test public void testBindUntilEvent() { NaviEmitter fragment = createFragmentEmitter(); LifecycleProvider<FragmentEvent> provider = createFragmentLifecycleProvider(fragment); Observable<Object> observable = create().hide(); TestObserver<Object> testObserver = observable.compose(provider.bindUntilEvent(STOP)).test(); fragment.onAttach(null); testObserver.assertNotComplete(); fragment.onCreate(null); testObserver.assertNotComplete(); fragment.onCreate(null); testObserver.assertNotComplete(); fragment.onStart(); testObserver.assertNotComplete(); fragment.onResume(); testObserver.assertNotComplete(); fragment.onPause(); testObserver.assertNotComplete(); fragment.onStop(); testObserver.assertComplete(); }
fragment.onAttach(null); TestObserver<Object> attachObserver = observable.compose(provider.bindToLifecycle()).test();
@Override @CallSuper public void onAttach(Activity activity) { super.onAttach(activity); base.onAttach(activity); }
@Override @CallSuper public void onAttach(Context context) { super.onAttach(context); base.onAttach(context); }
@Override @CallSuper public void onAttach(Context context) { super.onAttach(context); base.onAttach(context); }
@Override @CallSuper public void onAttach(Activity activity) { super.onAttach(activity); base.onAttach(activity); }
@Override @CallSuper public void onAttach(Context context) { super.onAttach(context); base.onAttach(context); }
@Override @CallSuper public void onAttach(Activity activity) { super.onAttach(activity); base.onAttach(activity); }
@Override @CallSuper public void onAttach(Activity activity) { super.onAttach(activity); base.onAttach(activity); }
@Override @CallSuper public void onAttach(Context context) { super.onAttach(context); base.onAttach(context); }
@Override @CallSuper public void onAttach(Context context) { super.onAttach(context); base.onAttach(context); }
@Override @CallSuper public void onAttach(Activity activity) { super.onAttach(activity); base.onAttach(activity); }
@Test public void attachListener() { setSdkInt(21); Listener<Context> listener = mock(Listener.class); emitter.addListener(Event.ATTACH, listener); Activity activity = mock(Activity.class); emitter.onAttach(activity); verify(listener).call(activity); emitter.removeListener(listener); emitter.onAttach(activity); verifyNoMoreInteractions(listener); }
@Test public void attachListenerApi23() { setSdkInt(23); Listener<Context> listener = mock(Listener.class); emitter.addListener(Event.ATTACH, listener); Context context = mock(Context.class); emitter.onAttach(context); verify(listener).call(context); emitter.removeListener(listener); emitter.onAttach(context); verifyNoMoreInteractions(listener); }
@Test public void observeAttachApi23() { setSdkInt(23); TestObserver<Context> testObserver = RxNavi.observe(emitter, Event.ATTACH).test(); testObserver.assertNoValues(); Context context = mock(Context.class); emitter.onAttach(context); testObserver.dispose(); emitter.onAttach(context); testObserver.assertValue(context); testObserver.assertNotTerminated(); }
@Test public void observeAttach() { setSdkInt(21); TestObserver<Context> testObserver = RxNavi.observe(emitter, Event.ATTACH).test(); testObserver.assertNoValues(); Activity activity = mock(Activity.class); emitter.onAttach(activity); testObserver.dispose(); emitter.onAttach(activity); testObserver.assertValue(activity); testObserver.assertNotTerminated(); }