1716ba89e7f459f49ea85070d4710c1d79d715298George Mount/* 2716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Copyright (C) 2015 The Android Open Source Project 3716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Licensed under the Apache License, Version 2.0 (the "License"); 4716ba89e7f459f49ea85070d4710c1d79d715298George Mount * you may not use this file except in compliance with the License. 5716ba89e7f459f49ea85070d4710c1d79d715298George Mount * You may obtain a copy of the License at 6716ba89e7f459f49ea85070d4710c1d79d715298George Mount * http://www.apache.org/licenses/LICENSE-2.0 7716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Unless required by applicable law or agreed to in writing, software 8716ba89e7f459f49ea85070d4710c1d79d715298George Mount * distributed under the License is distributed on an "AS IS" BASIS, 9716ba89e7f459f49ea85070d4710c1d79d715298George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10716ba89e7f459f49ea85070d4710c1d79d715298George Mount * See the License for the specific language governing permissions and 11716ba89e7f459f49ea85070d4710c1d79d715298George Mount * limitations under the License. 12716ba89e7f459f49ea85070d4710c1d79d715298George Mount */ 13716ba89e7f459f49ea85070d4710c1d79d715298George Mount 14716ba89e7f459f49ea85070d4710c1d79d715298George Mountpackage android.databinding.testapp; 15716ba89e7f459f49ea85070d4710c1d79d715298George Mount 16716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.databinding.ViewStubProxy; 17716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.databinding.testapp.databinding.ListenersBinding; 18716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.databinding.testapp.vo.ListenerBindingObject; 19ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mountimport android.databinding.testapp.vo.ListenerBindingObject.Inner; 20716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.test.UiThreadTest; 21716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.view.View; 22716ba89e7f459f49ea85070d4710c1d79d715298George Mount 23716ba89e7f459f49ea85070d4710c1d79d715298George Mountpublic class ListenerTest extends BaseDataBinderTest<ListenersBinding> { 24716ba89e7f459f49ea85070d4710c1d79d715298George Mount private ListenerBindingObject mBindingObject; 25716ba89e7f459f49ea85070d4710c1d79d715298George Mount 26716ba89e7f459f49ea85070d4710c1d79d715298George Mount public ListenerTest() { 27716ba89e7f459f49ea85070d4710c1d79d715298George Mount super(ListenersBinding.class); 28716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 29716ba89e7f459f49ea85070d4710c1d79d715298George Mount 30716ba89e7f459f49ea85070d4710c1d79d715298George Mount @Override 31716ba89e7f459f49ea85070d4710c1d79d715298George Mount protected void setUp() throws Exception { 32716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBindingObject = new ListenerBindingObject(getActivity()); 33716ba89e7f459f49ea85070d4710c1d79d715298George Mount super.setUp(); 34716ba89e7f459f49ea85070d4710c1d79d715298George Mount initBinder(new Runnable() { 35716ba89e7f459f49ea85070d4710c1d79d715298George Mount @Override 36716ba89e7f459f49ea85070d4710c1d79d715298George Mount public void run() { 37716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBinder.setObj(mBindingObject); 38716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 39716ba89e7f459f49ea85070d4710c1d79d715298George Mount }); 40716ba89e7f459f49ea85070d4710c1d79d715298George Mount ListenerBindingObject.lastClick = 0; 41716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 42716ba89e7f459f49ea85070d4710c1d79d715298George Mount 43716ba89e7f459f49ea85070d4710c1d79d715298George Mount @UiThreadTest 44716ba89e7f459f49ea85070d4710c1d79d715298George Mount public void testInstanceClick() throws Throwable { 45716ba89e7f459f49ea85070d4710c1d79d715298George Mount View view = mBinder.click1; 46716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(0, ListenerBindingObject.lastClick); 47716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.callOnClick(); 48716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(1, ListenerBindingObject.lastClick); 49716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 50716ba89e7f459f49ea85070d4710c1d79d715298George Mount 51716ba89e7f459f49ea85070d4710c1d79d715298George Mount @UiThreadTest 52716ba89e7f459f49ea85070d4710c1d79d715298George Mount public void testStaticClick() throws Throwable { 53716ba89e7f459f49ea85070d4710c1d79d715298George Mount View view = mBinder.click2; 54716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(0, ListenerBindingObject.lastClick); 55716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.callOnClick(); 56716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(2, ListenerBindingObject.lastClick); 57716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 58716ba89e7f459f49ea85070d4710c1d79d715298George Mount 59716ba89e7f459f49ea85070d4710c1d79d715298George Mount @UiThreadTest 60716ba89e7f459f49ea85070d4710c1d79d715298George Mount public void testInstanceClickTwoArgs() throws Throwable { 61716ba89e7f459f49ea85070d4710c1d79d715298George Mount View view = mBinder.click3; 62716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(0, ListenerBindingObject.lastClick); 63716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.callOnClick(); 64716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(3, ListenerBindingObject.lastClick); 65716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertTrue(view.isClickable()); 66716ba89e7f459f49ea85070d4710c1d79d715298George Mount ListenerBindingObject.lastClick = 0; 67716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBindingObject.clickable.set(false); 68716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBinder.executePendingBindings(); 69716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertFalse(view.isClickable()); 70716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBindingObject.useOne.set(true); 71716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBinder.executePendingBindings(); 72716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertFalse(view.isClickable()); 73716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBindingObject.clickable.set(true); 74716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBinder.executePendingBindings(); 75716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.callOnClick(); 76716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(1, ListenerBindingObject.lastClick); 77716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 78716ba89e7f459f49ea85070d4710c1d79d715298George Mount 79716ba89e7f459f49ea85070d4710c1d79d715298George Mount @UiThreadTest 80716ba89e7f459f49ea85070d4710c1d79d715298George Mount public void testStaticClickTwoArgs() throws Throwable { 81716ba89e7f459f49ea85070d4710c1d79d715298George Mount View view = mBinder.click4; 82716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(0, ListenerBindingObject.lastClick); 83716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.callOnClick(); 84716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(4, ListenerBindingObject.lastClick); 85716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertTrue(view.isClickable()); 86716ba89e7f459f49ea85070d4710c1d79d715298George Mount ListenerBindingObject.lastClick = 0; 87716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBindingObject.clickable.set(false); 88716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBinder.executePendingBindings(); 89716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertFalse(view.isClickable()); 90716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.setClickable(true); 91716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.callOnClick(); 92716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(4, ListenerBindingObject.lastClick); 93716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 94716ba89e7f459f49ea85070d4710c1d79d715298George Mount 95716ba89e7f459f49ea85070d4710c1d79d715298George Mount @UiThreadTest 96716ba89e7f459f49ea85070d4710c1d79d715298George Mount public void testClickExpression() throws Throwable { 97716ba89e7f459f49ea85070d4710c1d79d715298George Mount View view = mBinder.click5; 98716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(0, ListenerBindingObject.lastClick); 99716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.callOnClick(); 100716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(2, ListenerBindingObject.lastClick); 101716ba89e7f459f49ea85070d4710c1d79d715298George Mount ListenerBindingObject.lastClick = 0; 102716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBindingObject.useOne.set(true); 103716ba89e7f459f49ea85070d4710c1d79d715298George Mount mBinder.executePendingBindings(); 104716ba89e7f459f49ea85070d4710c1d79d715298George Mount view.callOnClick(); 105716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertEquals(1, ListenerBindingObject.lastClick); 106716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 107716ba89e7f459f49ea85070d4710c1d79d715298George Mount 108716ba89e7f459f49ea85070d4710c1d79d715298George Mount @UiThreadTest 109716ba89e7f459f49ea85070d4710c1d79d715298George Mount public void testInflateListener() throws Throwable { 110716ba89e7f459f49ea85070d4710c1d79d715298George Mount ViewStubProxy viewStubProxy = mBinder.viewStub; 111716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertFalse(viewStubProxy.isInflated()); 112716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertFalse(mBindingObject.inflateCalled); 113716ba89e7f459f49ea85070d4710c1d79d715298George Mount viewStubProxy.getViewStub().inflate(); 114716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertTrue(mBindingObject.inflateCalled); 115716ba89e7f459f49ea85070d4710c1d79d715298George Mount assertTrue(viewStubProxy.isInflated()); 116716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 117ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount 118ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount @UiThreadTest 119ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount public void testBaseObservableClick() throws Throwable { 120ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount View view = mBinder.click6; 121ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount Inner inner = new Inner(); 122ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount mBinder.setObj2(inner); 123ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount mBinder.executePendingBindings(); 124ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount assertFalse(inner.clicked); 125ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount view.callOnClick(); 126ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount assertTrue(inner.clicked); 127ec3f23a318203a54ad6aea658ea452948087b73bGeorge Mount } 128716ba89e7f459f49ea85070d4710c1d79d715298George Mount} 129