/* * Copyright (C) 2015 The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.databinding.testapp; import android.databinding.ViewStubProxy; import android.databinding.testapp.databinding.ListenersBinding; import android.databinding.testapp.vo.ListenerBindingObject; import android.test.UiThreadTest; import android.view.View; public class ListenerTest extends BaseDataBinderTest<ListenersBinding> { private ListenerBindingObject mBindingObject; public ListenerTest() { super(ListenersBinding.class); } @Override protected void setUp() throws Exception { mBindingObject = new ListenerBindingObject(getActivity()); super.setUp(); initBinder(new Runnable() { @Override public void run() { mBinder.setObj(mBindingObject); } }); ListenerBindingObject.lastClick = 0; } @UiThreadTest public void testInstanceClick() throws Throwable { View view = mBinder.click1; assertEquals(0, ListenerBindingObject.lastClick); view.callOnClick(); assertEquals(1, ListenerBindingObject.lastClick); } @UiThreadTest public void testStaticClick() throws Throwable { View view = mBinder.click2; assertEquals(0, ListenerBindingObject.lastClick); view.callOnClick(); assertEquals(2, ListenerBindingObject.lastClick); } @UiThreadTest public void testInstanceClickTwoArgs() throws Throwable { View view = mBinder.click3; assertEquals(0, ListenerBindingObject.lastClick); view.callOnClick(); assertEquals(3, ListenerBindingObject.lastClick); assertTrue(view.isClickable()); ListenerBindingObject.lastClick = 0; mBindingObject.clickable.set(false); mBinder.executePendingBindings(); assertFalse(view.isClickable()); mBindingObject.useOne.set(true); mBinder.executePendingBindings(); assertFalse(view.isClickable()); mBindingObject.clickable.set(true); mBinder.executePendingBindings(); view.callOnClick(); assertEquals(1, ListenerBindingObject.lastClick); } @UiThreadTest public void testStaticClickTwoArgs() throws Throwable { View view = mBinder.click4; assertEquals(0, ListenerBindingObject.lastClick); view.callOnClick(); assertEquals(4, ListenerBindingObject.lastClick); assertTrue(view.isClickable()); ListenerBindingObject.lastClick = 0; mBindingObject.clickable.set(false); mBinder.executePendingBindings(); assertFalse(view.isClickable()); view.setClickable(true); view.callOnClick(); assertEquals(4, ListenerBindingObject.lastClick); } @UiThreadTest public void testClickExpression() throws Throwable { View view = mBinder.click5; assertEquals(0, ListenerBindingObject.lastClick); view.callOnClick(); assertEquals(2, ListenerBindingObject.lastClick); ListenerBindingObject.lastClick = 0; mBindingObject.useOne.set(true); mBinder.executePendingBindings(); view.callOnClick(); assertEquals(1, ListenerBindingObject.lastClick); } @UiThreadTest public void testInflateListener() throws Throwable { ViewStubProxy viewStubProxy = mBinder.viewStub; assertFalse(viewStubProxy.isInflated()); assertFalse(mBindingObject.inflateCalled); viewStubProxy.getViewStub().inflate(); assertTrue(mBindingObject.inflateCalled); assertTrue(viewStubProxy.isInflated()); } }