ExpressionTest.java revision 4d4979490e1fa374c0d7f3599fed0a9e83a579d0
1/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package android.databinding.testapp;
17
18import android.databinding.testapp.databinding.ExpressionTestBinding;
19import android.support.v4.util.ArrayMap;
20import android.test.UiThreadTest;
21
22import java.util.ArrayList;
23
24public class ExpressionTest extends BaseDataBinderTest<ExpressionTestBinding> {
25    public ExpressionTest() {
26        super(ExpressionTestBinding.class);
27    }
28
29    @Override
30    protected void setUp() throws Exception {
31        super.setUp();
32        initBinder();
33    }
34
35    @UiThreadTest
36    public void testOr() throws Throwable {
37        // var1 == 0 || var2 == 0 ? "hello" : "world"
38        mBinder.setVar1(0);
39        mBinder.setVar2(0);
40        mBinder.executePendingBindings();
41        assertEquals("hello", mBinder.textView0.getText().toString());
42        mBinder.setVar2(1);
43        mBinder.executePendingBindings();
44        assertEquals("hello", mBinder.textView0.getText().toString());
45        mBinder.setVar1(1);
46        mBinder.setVar2(0);
47        mBinder.executePendingBindings();
48        assertEquals("hello", mBinder.textView0.getText().toString());
49        mBinder.setVar2(1);
50        mBinder.executePendingBindings();
51        assertEquals("world", mBinder.textView0.getText().toString());
52    }
53
54    @UiThreadTest
55    public void testAnd() throws Throwable {
56        // var1 == 0 && var2 == 0 ? "hello" : "world"
57        mBinder.setVar1(0);
58        mBinder.setVar2(0);
59        mBinder.executePendingBindings();
60        assertEquals("hello", mBinder.textView1.getText().toString());
61        mBinder.setVar2(1);
62        mBinder.executePendingBindings();
63        assertEquals("world", mBinder.textView1.getText().toString());
64        mBinder.setVar1(1);
65        mBinder.setVar2(0);
66        mBinder.executePendingBindings();
67        assertEquals("world", mBinder.textView1.getText().toString());
68        mBinder.setVar2(1);
69        mBinder.executePendingBindings();
70        assertEquals("world", mBinder.textView1.getText().toString());
71    }
72
73    @UiThreadTest
74    public void testBinary() throws Throwable {
75        mBinder.setVar1(0);
76        mBinder.setVar2(0);
77        mBinder.executePendingBindings();
78        assertEquals("0", mBinder.textView2.getText().toString()); // var1 & var2
79        assertEquals("0", mBinder.textView3.getText().toString()); // var1 | var2
80        assertEquals("0", mBinder.textView4.getText().toString()); // var1 ^ var2
81        mBinder.setVar2(1);
82        mBinder.executePendingBindings();
83        assertEquals("0", mBinder.textView2.getText().toString()); // var1 & var2
84        assertEquals("1", mBinder.textView3.getText().toString()); // var1 | var2
85        assertEquals("1", mBinder.textView4.getText().toString()); // var1 ^ var2
86        mBinder.setVar1(1);
87        mBinder.executePendingBindings();
88        assertEquals("1", mBinder.textView2.getText().toString()); // var1 & var2
89        assertEquals("1", mBinder.textView3.getText().toString()); // var1 | var2
90        assertEquals("0", mBinder.textView4.getText().toString()); // var1 ^ var2
91    }
92
93    @UiThreadTest
94    public void testComparison() throws Throwable {
95        mBinder.setVar1(0);
96        mBinder.setVar2(0);
97        mBinder.executePendingBindings();
98        assertEquals("false", mBinder.textView5.getText().toString()); // <
99        assertEquals("false", mBinder.textView6.getText().toString()); // >
100        assertEquals("true", mBinder.textView7.getText().toString());  // <=
101        assertEquals("true", mBinder.textView8.getText().toString());  // >=
102        assertEquals("true", mBinder.textView9.getText().toString());  // ==
103
104        mBinder.setVar2(1);
105        mBinder.executePendingBindings();
106        assertEquals("true", mBinder.textView5.getText().toString()); // <
107        assertEquals("false", mBinder.textView6.getText().toString()); // >
108        assertEquals("true", mBinder.textView7.getText().toString());  // <=
109        assertEquals("false", mBinder.textView8.getText().toString());  // >=
110        assertEquals("false", mBinder.textView9.getText().toString());  // ==
111        mBinder.setVar1(1);
112        mBinder.setVar2(0);
113        mBinder.executePendingBindings();
114        assertEquals("false", mBinder.textView5.getText().toString()); // <
115        assertEquals("true", mBinder.textView6.getText().toString()); // >
116        assertEquals("false", mBinder.textView7.getText().toString());  // <=
117        assertEquals("true", mBinder.textView8.getText().toString());  // >=
118        assertEquals("false", mBinder.textView9.getText().toString());  // ==
119    }
120
121    @UiThreadTest
122    public void testShift() throws Throwable {
123        mBinder.setVar1(-2);
124        mBinder.setVar2(1);
125        mBinder.executePendingBindings();
126        int var1 = -2;
127        int var2 = 1;
128        assertEquals(String.valueOf(var1 << var2), mBinder.textView10.getText().toString());
129        assertEquals(String.valueOf(var1 >> var2), mBinder.textView11.getText().toString());
130        assertEquals(String.valueOf(var1 >>> var2), mBinder.textView12.getText().toString());
131    }
132
133    @UiThreadTest
134    public void testUnary() throws Throwable {
135        mBinder.setVar1(2);
136        mBinder.setVar2(1);
137        mBinder.executePendingBindings();
138        int var1 = 2;
139        int var2 = 1;
140        assertEquals("1", mBinder.textView13.getText().toString()); // 2 + -1
141        assertEquals(String.valueOf(var1 + ~var2), mBinder.textView14.getText().toString()); // 2 + ~1
142    }
143    @UiThreadTest
144    public void testInstanceOf() throws Throwable {
145        mBinder.executePendingBindings();
146        assertEquals("true", mBinder.textView15.getText().toString());
147        assertEquals("true", mBinder.textView16.getText().toString());
148        assertEquals("false", mBinder.textView17.getText().toString());
149    }
150}
151