BasicDependantBindingTest.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.BasicDependantBindingBinding;
17import android.databinding.testapp.vo.NotBindableVo;
18
19import android.test.UiThreadTest;
20
21import java.util.ArrayList;
22import java.util.List;
23
24public class BasicDependantBindingTest extends BaseDataBinderTest<BasicDependantBindingBinding> {
25
26    public BasicDependantBindingTest() {
27        super(BasicDependantBindingBinding.class);
28    }
29
30    @Override
31    protected void setUp() throws Exception {
32        super.setUp();
33        initBinder();
34    }
35
36    public List<NotBindableVo> permutations(String value) {
37        List<NotBindableVo> result = new ArrayList<>();
38        result.add(null);
39        result.add(new NotBindableVo(null));
40        result.add(new NotBindableVo(value));
41        return result;
42    }
43
44    @UiThreadTest
45    public void testAllPermutations() {
46        List<NotBindableVo> obj1s = permutations("a");
47        List<NotBindableVo> obj2s = permutations("b");
48        for (NotBindableVo obj1 : obj1s) {
49            for (NotBindableVo obj2 : obj2s) {
50                reCreateBinder(null); //get a new one
51                testWith(obj1, obj2);
52                reCreateBinder(null);
53                mBinder.executePendingBindings();
54                testWith(obj1, obj2);
55            }
56        }
57    }
58
59    private void testWith(NotBindableVo obj1, NotBindableVo obj2) {
60        mBinder.setObj1(obj1);
61        mBinder.setObj2(obj2);
62        mBinder.executePendingBindings();
63        assertValues(safeGet(obj1), safeGet(obj2),
64                obj1 == null ? "" : obj1.mergeStringFields(obj2),
65                obj2 == null ? "" : obj2.mergeStringFields(obj1),
66                (obj1 == null ? null : obj1.getStringValue())
67                        + (obj2 == null ? null : obj2.getStringValue())
68        );
69    }
70
71    private String safeGet(NotBindableVo vo) {
72        if (vo == null || vo.getStringValue() == null) {
73            return "";
74        }
75        return vo.getStringValue();
76    }
77
78    private void assertValues(String textView1, String textView2,
79            String mergedView1, String mergedView2, String rawMerge) {
80        assertEquals(textView1, mBinder.textView1.getText().toString());
81        assertEquals(textView2, mBinder.textView2.getText().toString());
82        assertEquals(mergedView1, mBinder.mergedTextView1.getText().toString());
83        assertEquals(mergedView2, mBinder.mergedTextView2.getText().toString());
84        assertEquals(rawMerge, mBinder.rawStringMerge.getText().toString());
85    }
86}
87