package org.edx.mobile.test;
import android.support.annotation.NonNull;
import org.edx.mobile.util.observer.BasicObservable;
import org.edx.mobile.util.observer.Func1;
import org.edx.mobile.util.observer.Observable;
import org.edx.mobile.util.observer.Observables;
import org.edx.mobile.util.observer.Observer;
import org.junit.Test;
import static org.junit.Assert.*;
public class ObservablesTest extends BaseTestCase {
@Test
public void testMapSendsData() {
BasicObservable<String> observable = new BasicObservable<>();
Observable<String> upper = Observables.map(observable, new Func1<String, String>() {
@Override
public String call(String arg) {
// uppercase doesn't matter - just do something
return arg.toUpperCase();
}
});
final String[] observed = {null};
upper.subscribe(new Observer<String>() {
@Override
public void onData(@NonNull String data) {
observed[0] = data;
}
@Override
public void onError(@NonNull Throwable error) {
fail();
}
});
observable.sendData("test");
assertEquals(observed[0], "test".toUpperCase());
}
public void testMapSendsError() {
BasicObservable<String> observable = new BasicObservable<>();
Observable<String> upper = Observables.map(observable, new Func1<String, String>() {
@Override
public String call(String arg) {
// uppercase doesn't matter - just do something
return arg.toUpperCase();
}
});
Throwable error = new Exception("test");
final Throwable[] observed = {null};
upper.subscribe(new Observer<String>() {
@Override
public void onData(@NonNull String data) {
fail();
}
@Override
public void onError(@NonNull Throwable error) {
observed[0] = error;
}
});
assertEquals(observed[0], error);
}
}