1e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar/* 2e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * Copyright (C) 2015 The Android Open Source Project 3e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 4e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * you may not use this file except in compliance with the License. 5e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * You may obtain a copy of the License at 6e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 7e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * Unless required by applicable law or agreed to in writing, software 8e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 9e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * See the License for the specific language governing permissions and 11e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * limitations under the License. 12e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar */ 13e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 14e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarpackage android.databinding.testapp; 15e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 16e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.databinding.testapp.BR; 17e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.databinding.testapp.databinding.MultiArgAdapterEvaluationTestBinding; 18e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.databinding.testapp.databinding.MultiArgAdapterTestBinding; 19e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.test.UiThreadTest; 20e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 21e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport static android.databinding.testapp.adapter.MultiArgTestAdapter.MultiBindingClass1; 22e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport static android.databinding.testapp.adapter.MultiArgTestAdapter.MultiBindingClass2; 23e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport static android.databinding.testapp.adapter.MultiArgTestAdapter.join; 24e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 25e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarpublic class MultiArgAdapterEvaluationTest extends BaseDataBinderTest<MultiArgAdapterEvaluationTestBinding> { 26e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 27e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public MultiArgAdapterEvaluationTest() { 28e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar super(MultiArgAdapterEvaluationTestBinding.class); 29e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 30e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 31e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar @UiThreadTest 32e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public void testMultiArgIsCalled() { 333f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar initBinder(); 34e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar MultiBindingClass1 obj1 = new MultiBindingClass1(); 35e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar MultiBindingClass2 obj2 = new MultiBindingClass2(); 36e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar obj1.setValue("a", false); 37e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar obj2.setValue("b", false); 38e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mBinder.setObj1(obj1); 39e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mBinder.setObj2(obj2); 40e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mBinder.executePendingBindings(); 41e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 42e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar assertEquals(mBinder.merged.getText().toString(), join(obj1.getValue(), obj2.getValue())); 43e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar assertEquals(mBinder.view2.getText().toString(), join(obj2.getValue())); 44e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar assertEquals(mBinder.view2text.getText().toString(), obj2.getValue()); 45e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 46e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar String prev2 = mBinder.view2.getText().toString(); 47e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar String prevValue = mBinder.merged.getText().toString(); 48e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar obj1.setValue("o", false); 49e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mBinder.executePendingBindings(); 50e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar assertEquals(prevValue, mBinder.merged.getText().toString()); 51e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar obj2.setValue("p", false); 52e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mBinder.executePendingBindings(); 53e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar assertEquals(prevValue, mBinder.merged.getText().toString()); 54e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar // now invalidate obj1 only, obj2 should be evaluated as well 55e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar obj1.setValue("o2", true); 56e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mBinder.executePendingBindings(); 57e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar assertEquals(join(obj1, obj2), mBinder.merged.getText().toString()); 58e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar assertEquals("obj2 should not be re-evaluated", prev2, mBinder.view2.getText().toString()); 59e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar assertEquals("obj2 should not be re-evaluated", prev2, 60e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mBinder.view2text.getText().toString()); 61e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 62e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar} 63