ExpressionTest.java revision 92a428505b9102bc0560d2d5be1768da097909c2
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 @UiThreadTest 152 public void testTernaryChain() throws Throwable { 153 mBinder.setBool1(true); 154 mBinder.setBool2(false); 155 mBinder.executePendingBindings(); 156 String appName = getActivity().getResources().getString(R.string.app_name); 157 String rain = getActivity().getResources().getString(R.string.rain); 158 assertEquals(mBinder.getBool1() ? appName : mBinder.getBool2() ? rain : "", 159 mBinder.textView18.getText().toString()); 160 } 161 162 @UiThreadTest 163 public void testBoundTag() throws Throwable { 164 mBinder.setBool1(false); 165 mBinder.executePendingBindings(); 166 assertEquals("bar", mBinder.textView19.getTag()); 167 mBinder.setBool1(true); 168 mBinder.executePendingBindings(); 169 assertEquals("foo", mBinder.textView19.getTag()); 170 } 171} 172