1c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount/* 2c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * Copyright (C) 2016 The Android Open Source Project 3c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * 4c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * Licensed under the Apache License, Version 2.0 (the "License"); 5c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * you may not use this file except in compliance with the License. 6c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * You may obtain a copy of the License at 7c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * 8c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * http://www.apache.org/licenses/LICENSE-2.0 9c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * 10c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * Unless required by applicable law or agreed to in writing, software 11c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * distributed under the License is distributed on an "AS IS" BASIS, 12c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * See the License for the specific language governing permissions and 14c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount * limitations under the License. 15c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount */ 16c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 17c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mountpackage android.databinding.testapp; 18c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 19c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mountimport android.databinding.ViewStubProxy; 20c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mountimport android.databinding.testapp.databinding.ListenersWithDotBinding; 21c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mountimport android.databinding.testapp.vo.ListenerBindingObject; 22c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mountimport android.databinding.testapp.vo.ListenerBindingObject.Inner; 23c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mountimport android.test.UiThreadTest; 24c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mountimport android.view.View; 25c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 26c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mountpublic class ListenerWithDotTest extends BaseDataBinderTest<ListenersWithDotBinding> { 27c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount private ListenerBindingObject mBindingObject; 28c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 29c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public ListenerWithDotTest() { 30c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount super(ListenersWithDotBinding.class); 31c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 32c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 33c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @Override 34c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount protected void setUp() throws Exception { 35c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBindingObject = new ListenerBindingObject(getActivity()); 36c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount super.setUp(); 37c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount initBinder(new Runnable() { 38c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @Override 39c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public void run() { 40c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBinder.setObj(mBindingObject); 41c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 42c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount }); 43c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount ListenerBindingObject.lastClick = 0; 44c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 45c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 46c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @UiThreadTest 47c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public void testInstanceClick() throws Throwable { 48c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount View view = mBinder.click1; 49c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(0, ListenerBindingObject.lastClick); 50c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 51c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(1, ListenerBindingObject.lastClick); 52c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 53c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 54c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @UiThreadTest 55c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public void testStaticClick() throws Throwable { 56c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount View view = mBinder.click2; 57c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(0, ListenerBindingObject.lastClick); 58c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 59c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(2, ListenerBindingObject.lastClick); 60c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 61c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 62c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @UiThreadTest 63c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public void testInstanceClickTwoArgs() throws Throwable { 64c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount View view = mBinder.click3; 65c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(0, ListenerBindingObject.lastClick); 66c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 67c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(3, ListenerBindingObject.lastClick); 68c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertTrue(view.isClickable()); 69c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount ListenerBindingObject.lastClick = 0; 70c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBindingObject.clickable.set(false); 71c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBinder.executePendingBindings(); 72c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertFalse(view.isClickable()); 73c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBindingObject.useOne.set(true); 74c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBinder.executePendingBindings(); 75c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertFalse(view.isClickable()); 76c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBindingObject.clickable.set(true); 77c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBinder.executePendingBindings(); 78c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 79c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(1, ListenerBindingObject.lastClick); 80c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 81c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 82c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @UiThreadTest 83c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public void testStaticClickTwoArgs() throws Throwable { 84c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount View view = mBinder.click4; 85c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(0, ListenerBindingObject.lastClick); 86c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 87c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(4, ListenerBindingObject.lastClick); 88c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertTrue(view.isClickable()); 89c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount ListenerBindingObject.lastClick = 0; 90c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBindingObject.clickable.set(false); 91c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBinder.executePendingBindings(); 92c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertFalse(view.isClickable()); 93c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.setClickable(true); 94c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 95c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(4, ListenerBindingObject.lastClick); 96c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 97c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 98c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @UiThreadTest 99c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public void testClickExpression() throws Throwable { 100c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount View view = mBinder.click5; 101c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(0, ListenerBindingObject.lastClick); 102c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 103c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(2, ListenerBindingObject.lastClick); 104c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount ListenerBindingObject.lastClick = 0; 105c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBindingObject.useOne.set(true); 106c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBinder.executePendingBindings(); 107c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 108c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertEquals(1, ListenerBindingObject.lastClick); 109c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 110c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 111c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @UiThreadTest 112c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public void testInflateListener() throws Throwable { 113c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount ViewStubProxy viewStubProxy = mBinder.viewStub; 114c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertFalse(viewStubProxy.isInflated()); 115c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertFalse(mBindingObject.inflateCalled); 116c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount viewStubProxy.getViewStub().inflate(); 117c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertTrue(mBindingObject.inflateCalled); 118c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertTrue(viewStubProxy.isInflated()); 119c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 120c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount 121c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount @UiThreadTest 122c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount public void testBaseObservableClick() throws Throwable { 123c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount View view = mBinder.click6; 124c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount Inner inner = new Inner(); 125c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBinder.setObj2(inner); 126c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount mBinder.executePendingBindings(); 127c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertFalse(inner.clicked); 128c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount view.callOnClick(); 129c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount assertTrue(inner.clicked); 130c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount } 131c0c1dab0b6254e4d27f18c37a72a9e7952e958a0George Mount} 132