IncludeTagTest.java revision 5d8732072543d6f6fc1aa8f8a64654bcd1784347
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.FrameLayout;
23import android.widget.TextView;
24
25public 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