package com.halzhang.android.example.rxexample;
import android.graphics.drawable.Drawable;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
import android.widget.Toast;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import rx.Observable;
import rx.Observer;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* Rx操作测试
* Created by zhanghanguo@yy.com on 2015/12/16.
*/
@RunWith(AndroidJUnit4.class)
public class RxOperatorsTest extends ActivityInstrumentationTestCase2 {
public RxOperatorsTest() {
super(TestActivity.class);
}
@Before
@Override
public void setUp() throws Exception {
super.setUp();
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
}
static class DrawableInfo {
public int mResId;
public Drawable mDrawable;
}
@Test
public void textConcat() {
assertTrue(getInstrumentation().getContext() != null);
final int resId1 = 0;
final int resId2 = 0;
final int resId3 = 0;
Observable<DrawableInfo> drawableObservable1 = Observable.create(new Observable.OnSubscribe<DrawableInfo>() {
@Override
public void call(Subscriber<? super DrawableInfo> subscriber) {
if (resId1 > 0) {
Drawable drawable = getInstrumentation().getContext().getResources().getDrawable(resId1);
if (drawable != null) {
DrawableInfo drawableInfo = new DrawableInfo();
drawableInfo.mResId = resId1;
drawableInfo.mDrawable = drawable;
subscriber.onNext(drawableInfo);
subscriber.onCompleted();
} else {
subscriber.onError(new Exception());
}
} else {
subscriber.onError(new Exception());
}
}
});
Observable<DrawableInfo> drawableObservable2 = Observable.create(new Observable.OnSubscribe<DrawableInfo>() {
@Override
public void call(Subscriber<? super DrawableInfo> subscriber) {
if (resId2 > 0) {
Drawable drawable = getInstrumentation().getContext().getResources().getDrawable(resId2);
if (drawable != null) {
DrawableInfo drawableInfo = new DrawableInfo();
drawableInfo.mResId = resId2;
drawableInfo.mDrawable = drawable;
subscriber.onNext(drawableInfo);
subscriber.onCompleted();
} else {
subscriber.onError(new Exception());
}
} else {
subscriber.onError(new Exception());
}
}
});
Observable<DrawableInfo> drawableObservable3 = Observable.create(new Observable.OnSubscribe<DrawableInfo>() {
@Override
public void call(Subscriber<? super DrawableInfo> subscriber) {
if (resId3 > 0) {
Drawable drawable = getInstrumentation().getContext().getResources().getDrawable(resId3);
if (drawable != null) {
DrawableInfo drawableInfo = new DrawableInfo();
drawableInfo.mResId = resId3;
drawableInfo.mDrawable = drawable;
subscriber.onNext(drawableInfo);
subscriber.onCompleted();
} else {
subscriber.onError(new Exception());
}
} else {
subscriber.onError(new Exception());
}
}
});
Observable.concat(drawableObservable1, drawableObservable2, drawableObservable3)
.first()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<DrawableInfo>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.e("RX", e.getMessage(), e);
}
@Override
public void onNext(DrawableInfo drawable) {
Toast.makeText(getInstrumentation().getContext(), String.valueOf(drawable.mResId), Toast.LENGTH_SHORT).show();
}
});
}
@Test
public void textRetryWhen(){
}
}