package com.jakewharton.rxbinding2.view;
import android.app.Instrumentation;
import android.support.test.InstrumentationRegistry;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.view.View;
import android.widget.FrameLayout;
import com.jakewharton.rxbinding2.RecordingObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertEquals;
@RunWith(AndroidJUnit4.class)
public final class RxViewSystemUiVisibilityTest {
@Rule public final ActivityTestRule<RxViewSystemUiVisibilityTestActivity> activityRule =
new ActivityTestRule<>(RxViewSystemUiVisibilityTestActivity.class);
private final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
FrameLayout root;
@Before public void setUp() {
RxViewSystemUiVisibilityTestActivity activity = activityRule.getActivity();
root = activity.root;
root.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
@Test public void systemUiVisibilityChanges() {
RecordingObserver<Integer> o = new RecordingObserver<>();
RxView.systemUiVisibilityChanges(root)
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(o);
o.assertNoMoreEvents();
instrumentation.runOnMainSync(new Runnable() {
@Override public void run() {
root.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
});
assertEquals(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION, o.takeNext().intValue());
instrumentation.runOnMainSync(new Runnable() {
@Override public void run() {
root.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
});
assertEquals(View.SYSTEM_UI_FLAG_VISIBLE, o.takeNext().intValue());
o.dispose();
instrumentation.runOnMainSync(new Runnable() {
@Override public void run() {
root.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
});
o.assertNoMoreEvents();
}
}