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