Home | History | Annotate | Download | only in testapp
      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