ListenerTest.java revision 716ba89e7f459f49ea85070d4710c1d79d715298
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;
19716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.test.UiThreadTest;
20716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.view.View;
21716ba89e7f459f49ea85070d4710c1d79d715298George Mount
22716ba89e7f459f49ea85070d4710c1d79d715298George Mountpublic class ListenerTest extends BaseDataBinderTest<ListenersBinding> {
23716ba89e7f459f49ea85070d4710c1d79d715298George Mount    private ListenerBindingObject mBindingObject;
24716ba89e7f459f49ea85070d4710c1d79d715298George Mount
25716ba89e7f459f49ea85070d4710c1d79d715298George Mount    public ListenerTest() {
26716ba89e7f459f49ea85070d4710c1d79d715298George Mount        super(ListenersBinding.class);
27716ba89e7f459f49ea85070d4710c1d79d715298George Mount    }
28716ba89e7f459f49ea85070d4710c1d79d715298George Mount
29716ba89e7f459f49ea85070d4710c1d79d715298George Mount    @Override
30716ba89e7f459f49ea85070d4710c1d79d715298George Mount    protected void setUp() throws Exception {
31716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBindingObject = new ListenerBindingObject(getActivity());
32716ba89e7f459f49ea85070d4710c1d79d715298George Mount        super.setUp();
33716ba89e7f459f49ea85070d4710c1d79d715298George Mount        initBinder(new Runnable() {
34716ba89e7f459f49ea85070d4710c1d79d715298George Mount            @Override
35716ba89e7f459f49ea85070d4710c1d79d715298George Mount            public void run() {
36716ba89e7f459f49ea85070d4710c1d79d715298George Mount                mBinder.setObj(mBindingObject);
37716ba89e7f459f49ea85070d4710c1d79d715298George Mount            }
38716ba89e7f459f49ea85070d4710c1d79d715298George Mount        });
39716ba89e7f459f49ea85070d4710c1d79d715298George Mount        ListenerBindingObject.lastClick = 0;
40716ba89e7f459f49ea85070d4710c1d79d715298George Mount    }
41716ba89e7f459f49ea85070d4710c1d79d715298George Mount
42716ba89e7f459f49ea85070d4710c1d79d715298George Mount    @UiThreadTest
43716ba89e7f459f49ea85070d4710c1d79d715298George Mount    public void testInstanceClick() throws Throwable {
44716ba89e7f459f49ea85070d4710c1d79d715298George Mount        View view = mBinder.click1;
45716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(0, ListenerBindingObject.lastClick);
46716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.callOnClick();
47716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(1, ListenerBindingObject.lastClick);
48716ba89e7f459f49ea85070d4710c1d79d715298George Mount    }
49716ba89e7f459f49ea85070d4710c1d79d715298George Mount
50716ba89e7f459f49ea85070d4710c1d79d715298George Mount    @UiThreadTest
51716ba89e7f459f49ea85070d4710c1d79d715298George Mount    public void testStaticClick() throws Throwable {
52716ba89e7f459f49ea85070d4710c1d79d715298George Mount        View view = mBinder.click2;
53716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(0, ListenerBindingObject.lastClick);
54716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.callOnClick();
55716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(2, ListenerBindingObject.lastClick);
56716ba89e7f459f49ea85070d4710c1d79d715298George Mount    }
57716ba89e7f459f49ea85070d4710c1d79d715298George Mount
58716ba89e7f459f49ea85070d4710c1d79d715298George Mount    @UiThreadTest
59716ba89e7f459f49ea85070d4710c1d79d715298George Mount    public void testInstanceClickTwoArgs() throws Throwable {
60716ba89e7f459f49ea85070d4710c1d79d715298George Mount        View view = mBinder.click3;
61716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(0, ListenerBindingObject.lastClick);
62716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.callOnClick();
63716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(3, ListenerBindingObject.lastClick);
64716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertTrue(view.isClickable());
65716ba89e7f459f49ea85070d4710c1d79d715298George Mount        ListenerBindingObject.lastClick = 0;
66716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBindingObject.clickable.set(false);
67716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBinder.executePendingBindings();
68716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertFalse(view.isClickable());
69716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBindingObject.useOne.set(true);
70716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBinder.executePendingBindings();
71716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertFalse(view.isClickable());
72716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBindingObject.clickable.set(true);
73716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBinder.executePendingBindings();
74716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.callOnClick();
75716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(1, ListenerBindingObject.lastClick);
76716ba89e7f459f49ea85070d4710c1d79d715298George Mount    }
77716ba89e7f459f49ea85070d4710c1d79d715298George Mount
78716ba89e7f459f49ea85070d4710c1d79d715298George Mount    @UiThreadTest
79716ba89e7f459f49ea85070d4710c1d79d715298George Mount    public void testStaticClickTwoArgs() throws Throwable {
80716ba89e7f459f49ea85070d4710c1d79d715298George Mount        View view = mBinder.click4;
81716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(0, ListenerBindingObject.lastClick);
82716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.callOnClick();
83716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(4, ListenerBindingObject.lastClick);
84716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertTrue(view.isClickable());
85716ba89e7f459f49ea85070d4710c1d79d715298George Mount        ListenerBindingObject.lastClick = 0;
86716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBindingObject.clickable.set(false);
87716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBinder.executePendingBindings();
88716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertFalse(view.isClickable());
89716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.setClickable(true);
90716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.callOnClick();
91716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(4, ListenerBindingObject.lastClick);
92716ba89e7f459f49ea85070d4710c1d79d715298George Mount    }
93716ba89e7f459f49ea85070d4710c1d79d715298George Mount
94716ba89e7f459f49ea85070d4710c1d79d715298George Mount    @UiThreadTest
95716ba89e7f459f49ea85070d4710c1d79d715298George Mount    public void testClickExpression() throws Throwable {
96716ba89e7f459f49ea85070d4710c1d79d715298George Mount        View view = mBinder.click5;
97716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(0, ListenerBindingObject.lastClick);
98716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.callOnClick();
99716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(2, ListenerBindingObject.lastClick);
100716ba89e7f459f49ea85070d4710c1d79d715298George Mount        ListenerBindingObject.lastClick = 0;
101716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBindingObject.useOne.set(true);
102716ba89e7f459f49ea85070d4710c1d79d715298George Mount        mBinder.executePendingBindings();
103716ba89e7f459f49ea85070d4710c1d79d715298George Mount        view.callOnClick();
104716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertEquals(1, ListenerBindingObject.lastClick);
105716ba89e7f459f49ea85070d4710c1d79d715298George Mount    }
106716ba89e7f459f49ea85070d4710c1d79d715298George Mount
107716ba89e7f459f49ea85070d4710c1d79d715298George Mount    @UiThreadTest
108716ba89e7f459f49ea85070d4710c1d79d715298George Mount    public void testInflateListener() throws Throwable {
109716ba89e7f459f49ea85070d4710c1d79d715298George Mount        ViewStubProxy viewStubProxy = mBinder.viewStub;
110716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertFalse(viewStubProxy.isInflated());
111716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertFalse(mBindingObject.inflateCalled);
112716ba89e7f459f49ea85070d4710c1d79d715298George Mount        viewStubProxy.getViewStub().inflate();
113716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertTrue(mBindingObject.inflateCalled);
114716ba89e7f459f49ea85070d4710c1d79d715298George Mount        assertTrue(viewStubProxy.isInflated());
115716ba89e7f459f49ea85070d4710c1d79d715298George Mount    }
116716ba89e7f459f49ea85070d4710c1d79d715298George Mount}
117