ExpressionTest.java revision ff1d9e47e2b2b37d66e29a8e5a73f56a628ce56e
15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/* 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * Copyright (C) 2015 The Android Open Source Project 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License"); 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * you may not use this file except in compliance with the License. 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * You may obtain a copy of the License at 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * http://www.apache.org/licenses/LICENSE-2.0 937b74a387bb3993387029859c2d9d051c41c724eStephen Hines * 1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines * Unless required by applicable law or agreed to in writing, software 1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines * See the License for the specific language governing permissions and 1437b74a387bb3993387029859c2d9d051c41c724eStephen Hines * limitations under the License. 1537b74a387bb3993387029859c2d9d051c41c724eStephen Hines */ 1637b74a387bb3993387029859c2d9d051c41c724eStephen Hinespackage android.databinding.testapp; 1737b74a387bb3993387029859c2d9d051c41c724eStephen Hines 1837b74a387bb3993387029859c2d9d051c41c724eStephen Hinesimport android.databinding.testapp.databinding.ExpressionTestBinding; 1937b74a387bb3993387029859c2d9d051c41c724eStephen Hinesimport android.test.UiThreadTest; 2037b74a387bb3993387029859c2d9d051c41c724eStephen Hines 2137b74a387bb3993387029859c2d9d051c41c724eStephen Hinespublic class ExpressionTest extends BaseDataBinderTest<ExpressionTestBinding> { 2237b74a387bb3993387029859c2d9d051c41c724eStephen Hines public ExpressionTest() { 2337b74a387bb3993387029859c2d9d051c41c724eStephen Hines super(ExpressionTestBinding.class); 2437b74a387bb3993387029859c2d9d051c41c724eStephen Hines } 2537b74a387bb3993387029859c2d9d051c41c724eStephen Hines 2637b74a387bb3993387029859c2d9d051c41c724eStephen Hines @Override 2737b74a387bb3993387029859c2d9d051c41c724eStephen Hines protected void setUp() throws Exception { 2837b74a387bb3993387029859c2d9d051c41c724eStephen Hines super.setUp(); 2937b74a387bb3993387029859c2d9d051c41c724eStephen Hines initBinder(); 3037b74a387bb3993387029859c2d9d051c41c724eStephen Hines } 3137b74a387bb3993387029859c2d9d051c41c724eStephen Hines 3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines @UiThreadTest 3337b74a387bb3993387029859c2d9d051c41c724eStephen Hines public void testOr() throws Throwable { 3437b74a387bb3993387029859c2d9d051c41c724eStephen Hines // var1 == 0 || var2 == 0 ? "hello" : "world" 3537b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar1(0); 3637b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar2(0); 3737b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 3837b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("hello", mBinder.textView0.getText().toString()); 3937b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar2(1); 4037b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 4137b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("hello", mBinder.textView0.getText().toString()); 4237b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar1(1); 4337b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar2(0); 4487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines mBinder.executePendingBindings(); 450dea6bc96bb52346737966839ac68644f7939f58Stephen Hines assertEquals("hello", mBinder.textView0.getText().toString()); 4687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines mBinder.setVar2(1); 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao mBinder.executePendingBindings(); 480dea6bc96bb52346737966839ac68644f7939f58Stephen Hines assertEquals("world", mBinder.textView0.getText().toString()); 490dea6bc96bb52346737966839ac68644f7939f58Stephen Hines } 500dea6bc96bb52346737966839ac68644f7939f58Stephen Hines 510dea6bc96bb52346737966839ac68644f7939f58Stephen Hines @UiThreadTest 520dea6bc96bb52346737966839ac68644f7939f58Stephen Hines public void testAnd() throws Throwable { 530dea6bc96bb52346737966839ac68644f7939f58Stephen Hines // var1 == 0 && var2 == 0 ? "hello" : "world" 540dea6bc96bb52346737966839ac68644f7939f58Stephen Hines mBinder.setVar1(0); 55f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines mBinder.setVar2(0); 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao mBinder.executePendingBindings(); 5737b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("hello", mBinder.textView1.getText().toString()); 5822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mBinder.setVar2(1); 5922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mBinder.executePendingBindings(); 60f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines assertEquals("world", mBinder.textView1.getText().toString()); 6137b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar1(1); 62cfcb22478ca64c308df58f9abe6fa2dedb213c16Stephen Hines mBinder.setVar2(0); 6337b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 6437b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("world", mBinder.textView1.getText().toString()); 6522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mBinder.setVar2(1); 6622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mBinder.executePendingBindings(); 6737b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("world", mBinder.textView1.getText().toString()); 6837b74a387bb3993387029859c2d9d051c41c724eStephen Hines } 6937b74a387bb3993387029859c2d9d051c41c724eStephen Hines 7022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao @UiThreadTest 7122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao public void testBinary() throws Throwable { 7237b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar1(0); 73f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines mBinder.setVar2(0); 7437b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 75f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines assertEquals("0", mBinder.textView2.getText().toString()); // var1 & var2 765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assertEquals("0", mBinder.textView3.getText().toString()); // var1 | var2 775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assertEquals("0", mBinder.textView4.getText().toString()); // var1 ^ var2 78cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao mBinder.setVar2(1); 79d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao mBinder.executePendingBindings(); 8037b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("0", mBinder.textView2.getText().toString()); // var1 & var2 8137b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("1", mBinder.textView3.getText().toString()); // var1 | var2 8237b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("1", mBinder.textView4.getText().toString()); // var1 ^ var2 8337b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar1(1); 8437b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 8537b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("1", mBinder.textView2.getText().toString()); // var1 & var2 8637b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("1", mBinder.textView3.getText().toString()); // var1 | var2 8737b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("0", mBinder.textView4.getText().toString()); // var1 ^ var2 8837b74a387bb3993387029859c2d9d051c41c724eStephen Hines } 8937b74a387bb3993387029859c2d9d051c41c724eStephen Hines 9037b74a387bb3993387029859c2d9d051c41c724eStephen Hines @UiThreadTest 9137b74a387bb3993387029859c2d9d051c41c724eStephen Hines public void testComparison() throws Throwable { 9237b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar1(0); 9337b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar2(0); 9437b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 9537b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("false", mBinder.textView5.getText().toString()); // < 9637b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("false", mBinder.textView6.getText().toString()); // > 9737b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("true", mBinder.textView7.getText().toString()); // <= 9837b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("true", mBinder.textView8.getText().toString()); // >= 9937b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("true", mBinder.textView9.getText().toString()); // == 10037b74a387bb3993387029859c2d9d051c41c724eStephen Hines 10137b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar2(1); 10237b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 10337b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("true", mBinder.textView5.getText().toString()); // < 10437b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("false", mBinder.textView6.getText().toString()); // > 10537b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("true", mBinder.textView7.getText().toString()); // <= 10637b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("false", mBinder.textView8.getText().toString()); // >= 10737b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("false", mBinder.textView9.getText().toString()); // == 10837b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar1(1); 10937b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setVar2(0); 11037b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 11137b74a387bb3993387029859c2d9d051c41c724eStephen Hines assertEquals("false", mBinder.textView5.getText().toString()); // < 11287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines assertEquals("true", mBinder.textView6.getText().toString()); // > 1135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assertEquals("false", mBinder.textView7.getText().toString()); // <= 11487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines assertEquals("true", mBinder.textView8.getText().toString()); // >= 1155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assertEquals("false", mBinder.textView9.getText().toString()); // == 1165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 11737b74a387bb3993387029859c2d9d051c41c724eStephen Hines 11887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines @UiThreadTest 119d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao public void testShift() throws Throwable { 12022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mBinder.setVar1(-2); 12122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mBinder.setVar2(1); 1226f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines mBinder.executePendingBindings(); 12322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao int var1 = -2; 12422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao int var2 = 1; 12587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines assertEquals(String.valueOf(var1 << var2), mBinder.textView10.getText().toString()); 1266f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines assertEquals(String.valueOf(var1 >> var2), mBinder.textView11.getText().toString()); 1276f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines assertEquals(String.valueOf(var1 >>> var2), mBinder.textView12.getText().toString()); 1285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 13037b74a387bb3993387029859c2d9d051c41c724eStephen Hines @UiThreadTest 131d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao public void testUnary() throws Throwable { 132d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao mBinder.setVar1(2); 133d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao mBinder.setVar2(1); 134d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao mBinder.executePendingBindings(); 135d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao int var1 = 2; 136d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao int var2 = 1; 13787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines assertEquals("1", mBinder.textView13.getText().toString()); // 2 + -1 138d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao assertEquals(String.valueOf(var1 + ~var2), mBinder.textView14.getText().toString()); // 2 + ~1 139d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao } 14087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines @UiThreadTest 141d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao public void testInstanceOf() throws Throwable { 142d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao mBinder.executePendingBindings(); 143d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao assertEquals("true", mBinder.textView15.getText().toString()); 144d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao assertEquals("true", mBinder.textView16.getText().toString()); 145d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao assertEquals("false", mBinder.textView17.getText().toString()); 1465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 14837b74a387bb3993387029859c2d9d051c41c724eStephen Hines @UiThreadTest 149f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines public void testTernaryChain() throws Throwable { 15037b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setBool1(true); 151f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines mBinder.setBool2(false); 15222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mBinder.executePendingBindings(); 1536f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines String appName = getActivity().getResources().getString(R.string.app_name); 154affc150dc44fab1911775a49636d0ce85333b634Zonr Chang String rain = getActivity().getResources().getString(R.string.rain); 155affc150dc44fab1911775a49636d0ce85333b634Zonr Chang assertEquals(mBinder.getBool1() ? appName : mBinder.getBool2() ? rain : "", 1566f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines mBinder.textView18.getText().toString()); 157affc150dc44fab1911775a49636d0ce85333b634Zonr Chang } 158affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 15937b74a387bb3993387029859c2d9d051c41c724eStephen Hines @UiThreadTest 16037b74a387bb3993387029859c2d9d051c41c724eStephen Hines public void testBoundTag() throws Throwable { 16122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao mBinder.setBool1(false); 1625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao mBinder.executePendingBindings(); 1635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assertEquals("bar", mBinder.textView19.getTag()); 16437b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.setBool1(true); 165d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao mBinder.executePendingBindings(); 16622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao assertEquals("foo", mBinder.textView19.getTag()); 1675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 16937b74a387bb3993387029859c2d9d051c41c724eStephen Hines @UiThreadTest 170d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao public void testConstantExpression() throws Throwable { 171d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao mBinder.setVar1(1000); 172d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao mBinder.setVar2(2000); 17337b74a387bb3993387029859c2d9d051c41c724eStephen Hines mBinder.executePendingBindings(); 17487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines assertEquals("1000", mBinder.textView20.getText().toString()); 1755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assertEquals("2000", mBinder.textView21.getText().toString()); 1765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 17737b74a387bb3993387029859c2d9d051c41c724eStephen Hines} 178d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao