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