@Test public void getAllStream_emitsCurrentValueOnSubscribe() { final Map<String, ?> returnedMap = Collections.singletonMap("Test dummy long key", 23453534523L); when(mockSharedPreferences.getAll()).thenReturn((Map) returnedMap); final Disposable subscription = rxPreferences.getAllStream() .subscribeOn(testScheduler) .subscribe(); subscriptions.add(subscription); verifyGetStreamBeforeSubscribe(subscription); advanceScheduler(); verifyNoMoreInteractions(mockSharedPreferencesEditor); verify(mockSharedPreferences).getAll(); verify(mockSharedPreferences).registerOnSharedPreferenceChangeListener(isA(RxAllPreferencesListener.class)); verifyNoMoreInteractions(mockSharedPreferences); assertFalse(subscription.isDisposed()); }
@NonNull public Observable<Map<String, ?>> getAllStream() { return getAllOnce() .toObservable() .mergeWith(Observable.create(emitter -> { RxAllPreferencesListener listener = new RxAllPreferencesListener(emitter); registerRxPreferenceListener(listener, emitter); })); }
RxPreferences { @NonNull public Observable<Map<String, ?>> getAllStream() { return getAllOnce() .toObservable() .mergeWith(Observable.create(emitter -> { RxAllPreferencesListener listener = new RxAllPreferencesListener(emitter); registerRxPreferenceListener(listener, emitter); })); } }
RxPreferences { @NonNull public Observable<Map<String, ?>> getAllStream() { return getAllOnce() .toObservable() .mergeWith(Observable.create(emitter -> { RxAllPreferencesListener listener = new RxAllPreferencesListener(emitter); registerRxPreferenceListener(listener, emitter); })); } RxPreferences(@NonNull SharedPreferences preferences); }
RxPreferences { @NonNull public Observable<Map<String, ?>> getAllStream() { return getAllOnce() .toObservable() .mergeWith(Observable.create(emitter -> { RxAllPreferencesListener listener = new RxAllPreferencesListener(emitter); registerRxPreferenceListener(listener, emitter); })); } RxPreferences(@NonNull SharedPreferences preferences); @NonNull Single<Map<String, ?>> getAllOnce(); @NonNull Single<String> getStringOnce(@NonNull String key, @NonNull String defaultValue); @NonNull Single<Set<String>> getStringSetOnce(@NonNull String key, @NonNull Set<String> defaultValues); @NonNull Single<Integer> getIntOnce(@NonNull String key, int defaultValue); @NonNull Single<Long> getLongOnce(@NonNull String key, long defaultValue); @NonNull Single<Float> getFloatOnce(@NonNull String key, float defaultValue); @NonNull Single<Boolean> getBooleanOnce(@NonNull String key, boolean defaultValue); @NonNull Single<Boolean> containsOnce(@NonNull String key); @NonNull Observable<Map<String, ?>> getAllStream(); @NonNull Observable<String> getStringStream(@NonNull String key, @NonNull String defaultValue); @NonNull Observable<Set<String>> getStringSetStream(@NonNull String key, @NonNull Set<String> defaultValue); @NonNull Observable<Integer> getIntStream(@NonNull String key, int defaultValue); @NonNull Observable<Long> getLongStream(@NonNull String key, long defaultValue); @NonNull Observable<Float> getFloatStream(@NonNull String key, float defaultValue); @NonNull Observable<Boolean> getBooleanStream(@NonNull String key, boolean defaultValue); @NonNull Observable<Boolean> containsStream(@NonNull String key); @NonNull Editor edit(); }
RxPreferences { @NonNull public Observable<Map<String, ?>> getAllStream() { return getAllOnce() .toObservable() .mergeWith(Observable.create(emitter -> { RxAllPreferencesListener listener = new RxAllPreferencesListener(emitter); registerRxPreferenceListener(listener, emitter); })); } RxPreferences(@NonNull SharedPreferences preferences); @NonNull Single<Map<String, ?>> getAllOnce(); @NonNull Single<String> getStringOnce(@NonNull String key, @NonNull String defaultValue); @NonNull Single<Set<String>> getStringSetOnce(@NonNull String key, @NonNull Set<String> defaultValues); @NonNull Single<Integer> getIntOnce(@NonNull String key, int defaultValue); @NonNull Single<Long> getLongOnce(@NonNull String key, long defaultValue); @NonNull Single<Float> getFloatOnce(@NonNull String key, float defaultValue); @NonNull Single<Boolean> getBooleanOnce(@NonNull String key, boolean defaultValue); @NonNull Single<Boolean> containsOnce(@NonNull String key); @NonNull Observable<Map<String, ?>> getAllStream(); @NonNull Observable<String> getStringStream(@NonNull String key, @NonNull String defaultValue); @NonNull Observable<Set<String>> getStringSetStream(@NonNull String key, @NonNull Set<String> defaultValue); @NonNull Observable<Integer> getIntStream(@NonNull String key, int defaultValue); @NonNull Observable<Long> getLongStream(@NonNull String key, long defaultValue); @NonNull Observable<Float> getFloatStream(@NonNull String key, float defaultValue); @NonNull Observable<Boolean> getBooleanStream(@NonNull String key, boolean defaultValue); @NonNull Observable<Boolean> containsStream(@NonNull String key); @NonNull Editor edit();  }