/*
* 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.BasicDependantBindingBinding;
import android.databinding.testapp.vo.NotBindableVo;
import android.test.UiThreadTest;
import java.util.ArrayList;
import java.util.List;
public class BasicDependantBindingTest extends BaseDataBinderTest<BasicDependantBindingBinding> {
public BasicDependantBindingTest() {
super(BasicDependantBindingBinding.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
initBinder();
}
public List<NotBindableVo> permutations(String value) {
List<NotBindableVo> result = new ArrayList<>();
result.add(null);
result.add(new NotBindableVo(null));
result.add(new NotBindableVo(value));
return result;
}
@UiThreadTest
public void testAllPermutations() {
List<NotBindableVo> obj1s = permutations("a");
List<NotBindableVo> obj2s = permutations("b");
for (NotBindableVo obj1 : obj1s) {
for (NotBindableVo obj2 : obj2s) {
reCreateBinder(null); //get a new one
testWith(obj1, obj2);
reCreateBinder(null);
mBinder.executePendingBindings();
testWith(obj1, obj2);
}
}
}
private void testWith(NotBindableVo obj1, NotBindableVo obj2) {
mBinder.setObj1(obj1);
mBinder.setObj2(obj2);
mBinder.executePendingBindings();
assertValues(safeGet(obj1), safeGet(obj2),
obj1 == null ? "" : obj1.mergeStringFields(obj2),
obj2 == null ? "" : obj2.mergeStringFields(obj1),
(obj1 == null ? null : obj1.getStringValue())
+ (obj2 == null ? null : obj2.getStringValue())
);
}
private String safeGet(NotBindableVo vo) {
if (vo == null || vo.getStringValue() == null) {
return "";
}
return vo.getStringValue();
}
private void assertValues(String textView1, String textView2,
String mergedView1, String mergedView2, String rawMerge) {
assertEquals(textView1, mBinder.textView1.getText().toString());
assertEquals(textView2, mBinder.textView2.getText().toString());
assertEquals(mergedView1, mBinder.mergedTextView1.getText().toString());
assertEquals(mergedView2, mBinder.mergedTextView2.getText().toString());
assertEquals(rawMerge, mBinder.rawStringMerge.getText().toString());
}
}