package com.jakewharton.rxbinding2.support.design.widget; import android.annotation.TargetApi; import android.content.Context; import android.support.design.widget.AppBarLayout; import android.support.design.widget.CoordinatorLayout; import android.support.test.InstrumentationRegistry; import android.support.test.annotation.UiThreadTest; import android.support.test.filters.SdkSuppress; import android.support.test.rule.UiThreadTestRule; import android.support.test.runner.AndroidJUnit4; import android.view.ContextThemeWrapper; import android.view.View; import com.jakewharton.rxbinding2.RecordingObserver; import com.jakewharton.rxbinding2.support.design.R; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1; import static org.junit.Assert.assertEquals; @RunWith(AndroidJUnit4.class) public class RxAppBarLayoutTest { @Rule public final UiThreadTestRule uiThreadTestRule = new UiThreadTestRule(); private final Context rawContext = InstrumentationRegistry.getContext(); private final Context context = new ContextThemeWrapper(rawContext, R.style.Theme_AppCompat); private final CoordinatorLayout parent = new CoordinatorLayout(context); private final AppBarLayout view = new AppBarLayout(context); @Before public void setUp() { parent.addView(view); } @TargetApi(JELLY_BEAN_MR1) @SdkSuppress(minSdkVersion = JELLY_BEAN_MR1) @Test @UiThreadTest public void offsetChanges() { RecordingObserver<Integer> o = new RecordingObserver<>(); RxAppBarLayout.offsetChanges(view).subscribe(o); o.assertNoMoreEvents(); CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) view.getLayoutParams(); AppBarLayout.Behavior behavior = new AppBarLayout.Behavior(); params.setBehavior(behavior); behavior.onLayoutChild(parent, view, View.LAYOUT_DIRECTION_LTR); assertEquals(0, o.takeNext().intValue()); o.dispose(); behavior.onLayoutChild(parent, view, View.LAYOUT_DIRECTION_LTR); o.assertNoMoreEvents(); } }