blob: f9ba63505eba8882447508ee73d4eb558b70caaf [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.databinding.testapp;
import android.databinding.testapp.databinding.LayoutWithIncludeBinding;
import android.databinding.testapp.databinding.MergeContainingMergeBinding;
import android.databinding.testapp.databinding.MergeLayoutBinding;
import android.databinding.testapp.vo.NotBindableVo;
import android.test.UiThreadTest;
import android.widget.TextView;
public class IncludeTagTest extends BaseDataBinderTest<LayoutWithIncludeBinding> {
public IncludeTagTest() {
super(LayoutWithIncludeBinding.class);
}
@UiThreadTest
public void testIncludeTag() {
initBinder();
NotBindableVo vo = new NotBindableVo(3, "a");
mBinder.setOuterObject(vo);
mBinder.executePendingBindings();
final TextView outerText = (TextView) mBinder.getRoot().findViewById(R.id.outerTextView);
assertEquals("a", outerText.getText());
final TextView innerText = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView);
assertEquals("modified 3a", innerText.getText().toString());
TextView textView1 = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView1);
assertEquals(mBinder.getRoot(), textView1.getParent().getParent());
TextView textView2 = (TextView) mBinder.getRoot().findViewById(R.id.innerTextView2);
assertEquals(mBinder.getRoot(), textView2.getParent().getParent());
assertEquals("a hello 3a", textView1.getText().toString());
assertEquals("b hello 3a", textView2.getText().toString());
MergeLayoutBinding mergeLayoutBinding = mBinder.secondMerge;
assertNotSame(textView1, mergeLayoutBinding.innerTextView1);
assertNotSame(textView2, mergeLayoutBinding.innerTextView2);
assertEquals("a goodbye 3a", mergeLayoutBinding.innerTextView1.getText().toString());
assertEquals("b goodbye 3a", mergeLayoutBinding.innerTextView2.getText().toString());
MergeContainingMergeBinding mergeContainingMergeBinding = mBinder.thirdMerge;
MergeLayoutBinding merge1 = mergeContainingMergeBinding.merge1;
MergeLayoutBinding merge2 = mergeContainingMergeBinding.merge2;
assertEquals("a 1 third 3a", merge1.innerTextView1.getText().toString());
assertEquals("b 1 third 3a", merge1.innerTextView2.getText().toString());
assertEquals("a 2 third 3a", merge2.innerTextView1.getText().toString());
assertEquals("b 2 third 3a", merge2.innerTextView2.getText().toString());
vo.setIntValue(5);
vo.setStringValue("b");
mBinder.invalidateAll();
mBinder.executePendingBindings();
assertEquals("b", outerText.getText());
assertEquals("modified 5b", innerText.getText().toString());
assertEquals("a hello 5b", textView1.getText().toString());
assertEquals("b hello 5b", textView2.getText().toString());
assertEquals("a goodbye 5b", mergeLayoutBinding.innerTextView1.getText().toString());
assertEquals("b goodbye 5b", mergeLayoutBinding.innerTextView2.getText().toString());
assertEquals("a 1 third 5b", merge1.innerTextView1.getText().toString());
assertEquals("b 1 third 5b", merge1.innerTextView2.getText().toString());
assertEquals("a 2 third 5b", merge2.innerTextView1.getText().toString());
assertEquals("b 2 third 5b", merge2.innerTextView2.getText().toString());
}
}