@Test public void testPersistance() { NaviEmitter activity = NaviEmitter.createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = NaviLifecycle.createActivityLifecycleProvider(activity); TestObserver<ActivityEvent> testObserver = provider.lifecycle().test(); activity.onCreate(null); activity.onStart(); activity.onResume(); activity.onPause(); activity.onStop(); activity.onDestroy(); // Verify that you can remain subscribed until the Activity is completely gone activity.onCreate(null); testObserver.assertValues( ActivityEvent.CREATE, ActivityEvent.START, ActivityEvent.RESUME, ActivityEvent.PAUSE, ActivityEvent.STOP, ActivityEvent.DESTROY, ActivityEvent.CREATE ); }
@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 testLeakFree() { NaviEmitter activity = NaviEmitter.createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = NaviLifecycle.createActivityLifecycleProvider(activity); WeakReference<NaviEmitter> activityRef = new WeakReference<>(activity); WeakReference<LifecycleProvider<ActivityEvent>> providerRef = new WeakReference<>(provider); Observable<Object> observable = PublishSubject.create().hide(); TestObserver<Object> testObserver = observable.compose(provider.bindUntilEvent(ActivityEvent.STOP)).test(); activity.onCreate(null); activity.onStart(); activity.onResume(); activity.onPause(); activity.onStop(); activity.onDestroy(); activity = null; provider = null; TestUtil.cleanGarbage(); assertNull(activityRef.get()); assertNull(providerRef.get()); } }
fragment.onCreate(null); fragment.onCreateView(null); fragment.onStart();
@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(); }
TestObserver<Object> attachObserver = observable.compose(provider.bindToLifecycle()).test(); fragment.onCreate(null); attachObserver.assertNotComplete(); TestObserver<Object> createObserver = observable.compose(provider.bindToLifecycle()).test();
@Test public void testLifecycle() { NaviEmitter activity = NaviEmitter.createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = NaviLifecycle.createActivityLifecycleProvider(activity); TestObserver<ActivityEvent> testObserver = provider.lifecycle().test(); activity.onCreate(null); activity.onStart(); activity.onResume(); activity.onPause(); activity.onStop(); activity.onDestroy(); testObserver.assertValues( ActivityEvent.CREATE, ActivityEvent.START, ActivityEvent.RESUME, ActivityEvent.PAUSE, ActivityEvent.STOP, ActivityEvent.DESTROY ); }
@Test public void createViewListener() { Listener<Bundle> listener = mock(Listener.class); emitter.addListener(Event.CREATE_VIEW, listener); Bundle bundle = new Bundle(); emitter.onCreateView(bundle); verify(listener).call(bundle); emitter.removeListener(listener); emitter.onCreate(bundle); verifyNoMoreInteractions(listener); }
@Test public void testBindUntilEvent() { NaviEmitter activity = createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = createActivityLifecycleProvider(activity); Observable<Object> observable = create().hide(); TestObserver<Object> testObserver = observable.compose(provider.bindUntilEvent(STOP)).test(); activity.onCreate(null); testObserver.assertNotComplete(); activity.onStart(); testObserver.assertNotComplete(); activity.onResume(); testObserver.assertNotComplete(); activity.onPause(); testObserver.assertNotComplete(); activity.onStop(); testObserver.assertComplete(); }
@Test public void testBindToLifecycle() { NaviEmitter activity = createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = createActivityLifecycleProvider(activity); Observable<Object> observable = create().hide(); activity.onCreate(null); TestObserver<Object> createObserver = observable.compose(provider.bindToLifecycle()).test(); activity.onStart(); createObserver.assertNotComplete(); TestObserver<Object> startObserver = observable.compose(provider.bindToLifecycle()).test(); activity.onResume(); createObserver.assertNotComplete(); startObserver.assertNotComplete(); TestObserver<Object> resumeTestSub = observable.compose(provider.bindToLifecycle()).test(); activity.onPause(); createObserver.assertNotComplete(); startObserver.assertNotComplete(); resumeTestSub.assertComplete(); TestObserver<Object> pauseObserver = observable.compose(provider.bindToLifecycle()).test(); activity.onStop(); createObserver.assertNotComplete(); startObserver.assertComplete(); pauseObserver.assertComplete(); TestObserver<Object> stopObserver = observable.compose(provider.bindToLifecycle()).test(); activity.onDestroy(); createObserver.assertComplete(); stopObserver.assertComplete(); }
@Test public void createPersistableListener() { emitter.addListener(Event.ALL, listener); Bundle bundle = new Bundle(); PersistableBundle persistableBundle = mock(PersistableBundle.class); emitter.onCreate(bundle); emitter.onCreate(bundle, persistableBundle); verify(listener).call(Type.CREATE); verify(listener).call(Type.CREATE_PERSISTABLE); emitter.removeListener(listener); emitter.onCreate(bundle, persistableBundle); } }
@Test public void createListener() { Listener<Bundle> listener = mock(Listener.class); emitter.addListener(Event.CREATE, listener); Bundle bundle = new Bundle(); emitter.onCreate(bundle); verify(listener).call(bundle); emitter.removeListener(listener); emitter.onCreate(bundle); verifyNoMoreInteractions(listener); }
@Test public void createListener() { Listener<Bundle> listener = mock(Listener.class); emitter.addListener(Event.CREATE, listener); Bundle bundle = new Bundle(); emitter.onCreate(bundle); verify(listener).call(bundle); emitter.removeListener(listener); emitter.onCreate(bundle); verifyNoMoreInteractions(listener); }
@Test public void createWithNullBundle() { NaviEmitter emitter = NaviEmitter.createActivityEmitter(); Listener<Bundle> listener = mock(Listener.class); emitter.addListener(Event.CREATE, listener); emitter.onCreate(null); verify(listener).call(any(Bundle.class)); }
@Test public void onViewCreatedListener() { Listener<ViewCreated> listener = mock(Listener.class); emitter.addListener(Event.VIEW_CREATED, listener); View view = mock(View.class); Bundle bundle = new Bundle(); emitter.onViewCreated(view, bundle); verify(listener).call(ViewCreated.create(view, bundle)); emitter.removeListener(listener); emitter.onCreate(new Bundle()); verifyNoMoreInteractions(listener); }
@Test public void observeCreate() { TestObserver<Bundle> testObserver = RxNavi.observe(emitter, Event.CREATE).test(); testObserver.assertNoValues(); Bundle bundle = new Bundle(); emitter.onCreate(bundle); testObserver.dispose(); emitter.onCreate(bundle); testObserver.assertValue(bundle); testObserver.assertNotTerminated(); }
@Test public void observeCreate() { TestObserver<Bundle> testObserver = RxNavi.observe(emitter, Event.CREATE).test(); testObserver.assertNoValues(); Bundle bundle = new Bundle(); emitter.onCreate(bundle); testObserver.dispose(); emitter.onCreate(bundle); testObserver.assertValue(bundle); testObserver.assertNotTerminated(); }
@Test public void observeAllCreate() { TestObserver<Type> testObserver = RxNavi.observe(emitter, Event.ALL).test(); testObserver.assertNoValues(); Bundle bundle = new Bundle(); emitter.onCreate(bundle); testObserver.dispose(); emitter.onCreate(bundle); testObserver.assertValue(Type.CREATE); testObserver.assertNotTerminated(); }