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