1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * http://www.apache.org/licenses/LICENSE-2.0 7 * Unless required by applicable law or agreed to in writing, software 8 * distributed under the License is distributed on an "AS IS" BASIS, 9 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 * See the License for the specific language governing permissions and 11 * limitations under the License. 12 */ 13 14 package android.databinding.testapp; 15 16 import android.databinding.testapp.databinding.LayoutWithIncludeBinding; 17 import android.databinding.testapp.databinding.MergeContainingMergeBinding; 18 import android.databinding.testapp.databinding.MergeLayoutBinding; 19 import android.databinding.testapp.vo.NotBindableVo; 20 21 import android.test.UiThreadTest; 22 import android.widget.FrameLayout; 23 import android.widget.TextView; 24 25 public class IncludeTagTest extends BaseDataBinderTest<LayoutWithIncludeBinding> { 26 27 public IncludeTagTest() { 28 super(LayoutWithIncludeBinding.class); 29 } 30 31 @UiThreadTest 32 public void testIncludeTag() { 33 initBinder(); 34 assertNotNull(mBinder.includedPlainLayout); 35 assertTrue(mBinder.includedPlainLayout instanceof FrameLayout); 36 NotBindableVo vo = new NotBindableVo(3, "a"); 37 mBinder.setOuterObject(vo); 38 mBinder.executePendingBindings(); 39 final TextView outerText = (TextView) mBinder.getRoot().findViewById(R.id.outerTextView); 40 assertEquals("a", outerText.getText()); 41 final TextView innerText = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView); 42 assertEquals("modified 3a", innerText.getText().toString()); 43 TextView textView1 = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView1); 44 assertEquals(mBinder.getRoot(), textView1.getParent().getParent()); 45 TextView textView2 = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView2); 46 assertEquals(mBinder.getRoot(), textView2.getParent().getParent()); 47 assertEquals("a hello 3a", textView1.getText().toString()); 48 assertEquals("b hello 3a", textView2.getText().toString()); 49 MergeLayoutBinding mergeLayoutBinding = mBinder.secondMerge; 50 assertNotSame(textView1, mergeLayoutBinding.innerTextView1); 51 assertNotSame(textView2, mergeLayoutBinding.innerTextView2); 52 assertEquals("a goodbye 3a", mergeLayoutBinding.innerTextView1.getText().toString()); 53 assertEquals("b goodbye 3a", mergeLayoutBinding.innerTextView2.getText().toString()); 54 MergeContainingMergeBinding mergeContainingMergeBinding = mBinder.thirdMerge; 55 MergeLayoutBinding merge1 = mergeContainingMergeBinding.merge1; 56 MergeLayoutBinding merge2 = mergeContainingMergeBinding.merge2; 57 assertEquals("a 1 third 3a", merge1.innerTextView1.getText().toString()); 58 assertEquals("b 1 third 3a", merge1.innerTextView2.getText().toString()); 59 assertEquals("a 2 third 3a", merge2.innerTextView1.getText().toString()); 60 assertEquals("b 2 third 3a", merge2.innerTextView2.getText().toString()); 61 62 vo.setIntValue(5); 63 vo.setStringValue("b"); 64 mBinder.invalidateAll(); 65 mBinder.executePendingBindings(); 66 assertEquals("b", outerText.getText()); 67 assertEquals("modified 5b", innerText.getText().toString()); 68 assertEquals("a hello 5b", textView1.getText().toString()); 69 assertEquals("b hello 5b", textView2.getText().toString()); 70 assertEquals("a goodbye 5b", mergeLayoutBinding.innerTextView1.getText().toString()); 71 assertEquals("b goodbye 5b", mergeLayoutBinding.innerTextView2.getText().toString()); 72 assertEquals("a 1 third 5b", merge1.innerTextView1.getText().toString()); 73 assertEquals("b 1 third 5b", merge1.innerTextView2.getText().toString()); 74 assertEquals("a 2 third 5b", merge2.innerTextView1.getText().toString()); 75 assertEquals("b 2 third 5b", merge2.innerTextView2.getText().toString()); 76 } 77 } 78