IncludeTagTest.java revision 4d4979490e1fa374c0d7f3599fed0a9e83a579d0
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
14package android.databinding.testapp;
15
16import android.databinding.testapp.databinding.LayoutWithIncludeBinding;
17import android.databinding.testapp.databinding.MergeContainingMergeBinding;
18import android.databinding.testapp.databinding.MergeLayoutBinding;
19import android.databinding.testapp.vo.NotBindableVo;
20
21import android.test.UiThreadTest;
22import android.widget.TextView;
23
24public class IncludeTagTest extends BaseDataBinderTest<LayoutWithIncludeBinding> {
25
26    public IncludeTagTest() {
27        super(LayoutWithIncludeBinding.class);
28    }
29
30    @UiThreadTest
31    public void testIncludeTag() {
32        initBinder();
33        NotBindableVo vo = new NotBindableVo(3, "a");
34        mBinder.setOuterObject(vo);
35        mBinder.executePendingBindings();
36        final TextView outerText = (TextView) mBinder.getRoot().findViewById(R.id.outerTextView);
37        assertEquals("a", outerText.getText());
38        final TextView innerText = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView);
39        assertEquals("modified 3a", innerText.getText().toString());
40        TextView textView1 = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView1);
41        assertEquals(mBinder.getRoot(), textView1.getParent());
42        TextView textView2 = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView2);
43        assertEquals(mBinder.getRoot(), textView2.getParent());
44        assertEquals("a hello 3a", textView1.getText().toString());
45        assertEquals("b hello 3a", textView2.getText().toString());
46        MergeLayoutBinding mergeLayoutBinding = mBinder.secondMerge;
47        assertNotSame(textView1, mergeLayoutBinding.innerTextView1);
48        assertNotSame(textView2, mergeLayoutBinding.innerTextView2);
49        assertEquals("a goodbye 3a", mergeLayoutBinding.innerTextView1.getText().toString());
50        assertEquals("b goodbye 3a", mergeLayoutBinding.innerTextView2.getText().toString());
51        MergeContainingMergeBinding mergeContainingMergeBinding = mBinder.thirdMerge;
52        MergeLayoutBinding merge1 = mergeContainingMergeBinding.merge1;
53        MergeLayoutBinding merge2 = mergeContainingMergeBinding.merge2;
54        assertEquals("a 1 third 3a", merge1.innerTextView1.getText().toString());
55        assertEquals("b 1 third 3a", merge1.innerTextView2.getText().toString());
56        assertEquals("a 2 third 3a", merge2.innerTextView1.getText().toString());
57        assertEquals("b 2 third 3a", merge2.innerTextView2.getText().toString());
58
59        vo.setIntValue(5);
60        vo.setStringValue("b");
61        mBinder.invalidateAll();
62        mBinder.executePendingBindings();
63        assertEquals("b", outerText.getText());
64        assertEquals("modified 5b", innerText.getText().toString());
65        assertEquals("a hello 5b", textView1.getText().toString());
66        assertEquals("b hello 5b", textView2.getText().toString());
67        assertEquals("a goodbye 5b", mergeLayoutBinding.innerTextView1.getText().toString());
68        assertEquals("b goodbye 5b", mergeLayoutBinding.innerTextView2.getText().toString());
69        assertEquals("a 1 third 5b", merge1.innerTextView1.getText().toString());
70        assertEquals("b 1 third 5b", merge1.innerTextView2.getText().toString());
71        assertEquals("a 2 third 5b", merge2.innerTextView1.getText().toString());
72        assertEquals("b 2 third 5b", merge2.innerTextView2.getText().toString());
73    }
74}
75