1e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount/* 2e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * Copyright (C) 2015 The Android Open Source Project 3e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * 4e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * Licensed under the Apache License, Version 2.0 (the "License"); 5e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * you may not use this file except in compliance with the License. 6e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * You may obtain a copy of the License at 7e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * 8e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * http://www.apache.org/licenses/LICENSE-2.0 9e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * 10e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * Unless required by applicable law or agreed to in writing, software 11e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * distributed under the License is distributed on an "AS IS" BASIS, 12e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * See the License for the specific language governing permissions and 14e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount * limitations under the License. 15e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount */ 16e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountpackage android.databinding.testapp; 17e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 18e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountimport android.databinding.DataBindingComponent; 19e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountimport android.databinding.DataBindingUtil; 20e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountimport android.databinding.testapp.adapter.InstanceAdapter; 21e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountimport android.databinding.testapp.databinding.IncludeInstanceAdapterBinding; 22e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountimport android.databinding.testapp.databinding.InstanceAdapterBinding; 23e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountimport android.test.UiThreadTest; 24e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountimport android.widget.TextView; 25e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 26e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mountpublic class InstanceAdapterTest extends BaseDataBinderTest<InstanceAdapterBinding> { 27e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public InstanceAdapterTest() { 28e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount super(InstanceAdapterBinding.class); 29e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 30e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 31e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @Override 32e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount protected void setUp() throws Exception { 33e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount super.setUp(); 34e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 35e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 36e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount private void initNormal() { 37e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount DataBindingUtil.setDefaultComponent(new TestComponent() { 38e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount private InstanceAdapter mInstanceAdapter = new InstanceAdapter("Hello %s %s %s %s"); 39e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 40e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @Override 41e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public InstanceAdapter getInstanceAdapter() { 42e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount return mInstanceAdapter; 43e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 44e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount }); 45e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initBinder(); 46e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 47e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 48e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 49e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 50e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testOneAttr() throws Throwable { 51e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 52e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("World"); 53e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 54e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello World foo bar baz", mBinder.textView1.getText().toString()); 55e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 56e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 57e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 58e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testTwoAttr() throws Throwable { 59e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 60e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("World"); 61e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 62e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello World baz foo bar", mBinder.textView2.getText().toString()); 63e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 64e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 65e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 66e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testOneAttrOld() throws Throwable { 67e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 68e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("World"); 69e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 70e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello null World foo bar", mBinder.textView3.getText().toString()); 71e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("Android"); 72e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 73e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello World Android foo bar", mBinder.textView3.getText().toString()); 74e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 75e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 76e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 77e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testTwoAttrOld() throws Throwable { 78e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 79e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("World"); 80e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 81e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello null baz World baz", mBinder.textView4.getText().toString()); 82e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("Android"); 83e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 84e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello World baz Android baz", mBinder.textView4.getText().toString()); 85e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 86e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 87e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 88e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testRequiredBinding() throws Throwable { 89e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount try { 90e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount InstanceAdapterBinding.inflate(getActivity().getLayoutInflater(), null); 91e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount fail("Binding should fail if a required BindingAdapter is missing."); 92e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } catch (IllegalStateException e) { 93e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount // Expected exception 94e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 95e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 96e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 97e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 98e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testInclude() throws Throwable { 99e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 100e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount DataBindingComponent component = DataBindingUtil.getDefaultComponent(); 101e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount DataBindingUtil.setDefaultComponent(null); 102e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount IncludeInstanceAdapterBinding binding = IncludeInstanceAdapterBinding.inflate(getActivity().getLayoutInflater(), component); 103e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount binding.setStr("World"); 104e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount binding.executePendingBindings(); 105e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello World foo bar baz", binding.includedLayout.textView1.getText().toString()); 106e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 107e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 108e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 109e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testViewStub() throws Throwable { 110e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 111e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount DataBindingComponent component = DataBindingUtil.getDefaultComponent(); 112e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount DataBindingUtil.setDefaultComponent(null); 113e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount IncludeInstanceAdapterBinding binding = DataBindingUtil.setContentView(getActivity(), 114e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount R.layout.include_instance_adapter, component); 115e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount binding.setStr("World"); 116e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount binding.executePendingBindings(); 117e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount binding.viewStub.getViewStub().inflate(); 118e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount TextView view = (TextView) binding.viewStub.getRoot().findViewById(R.id.textView1); 119e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello World foo bar baz", view.getText().toString()); 120e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 121e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 122e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 123e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testOneAttrWithComponentStatic() throws Throwable { 124e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 125e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("World"); 126e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 127e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("World component", mBinder.textView6.getText().toString()); 128e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 129e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 130e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 131e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testOneAttrWithComponentInstance() throws Throwable { 132e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 133e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("World"); 134e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 135e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello World component bar baz", mBinder.textView7.getText().toString()); 136e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 137e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount 138e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount @UiThreadTest 139e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount public void testTwoAttrsWithComponentInstance() throws Throwable { 140e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount initNormal(); 141e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.setStr("World"); 142e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount mBinder.executePendingBindings(); 143e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount assertEquals("Hello World foo component bar", mBinder.textView8.getText().toString()); 144e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount } 145e4cd38824a6627b9fef229c549c636e35ad63b5fGeorge Mount} 146