Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e72bfcd9 authored by George Mount's avatar George Mount
Browse files

Added tests for ViewBindingAdapter.

Also fixed:
Bug 19192030
parent 8a9d3762
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ android {

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.databinding:library:0.3-SNAPSHOT'
    compile project(":library")
    compile "com.android.support:support-v4:+"
    provided 'com.android.databinding:annotationprocessor:0.3-SNAPSHOT'
    provided project(":annotationprocessor")
}
+68 −0
Original line number Diff line number Diff line
/*
 * 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 com.android.databinding.testapp;

import com.android.databinding.library.PropertyChangeRegistry;
import com.android.databinding.testapp.generated.BasicBindingBinder;

import android.binding.Observable;
import android.binding.OnPropertyChangedListener;
import android.util.ArrayMap;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashSet;

public class ProcessBindableTest extends BaseDataBinderTest<BasicBindingBinder> {
    private static String[] EXPECTED_BINDING_NAMES = {
            "bindableField1",
            "bindableField2",
            "bindableField3",
            "bindableField4",
            "mbindableField5",
            "bindableField6",
            "bindableField7",
            "bindableField8",
    };

    public ProcessBindableTest() {
        super(BasicBindingBinder.class, R.layout.basic_binding);
    }

    public void testFieldsGenerated() throws IllegalAccessException {
        Field[] fields = android.binding.BR.class.getFields();

        ArrayMap<String, Integer> fieldValues = new ArrayMap<>();
        int modifiers = Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL;
        for (Field field: fields) {
            assertTrue(field.getModifiers() == modifiers);
            String name = field.getName();
            fieldValues.put(name, field.getInt(null));
        }

        assertTrue(fieldValues.containsKey("_all"));
        assertEquals(0, (int) fieldValues.get("_all"));
        HashSet<Integer> values = new HashSet<>();
        values.add(0);

        for (String fieldName : EXPECTED_BINDING_NAMES) {
            assertTrue("missing field: " + fieldName, fieldValues.containsKey(fieldName));
            assertFalse(values.contains(fieldValues.get(fieldName)));
            values.add(fieldValues.get(fieldName));
        }
    }
}
+193 −0
Original line number Diff line number Diff line
/*
 * 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 com.android.databinding.testapp;

import com.android.databinding.testapp.generated.ViewAdapterTestBinder;
import com.android.databinding.testapp.vo.ViewBindingObject;

import android.content.res.ColorStateList;
import android.os.Build;
import android.view.View;

public class ViewBindingAdapterTest extends BaseDataBinderTest<ViewAdapterTestBinder> {

    ViewBindingObject mViewBindingObject = new ViewBindingObject();

    public ViewBindingAdapterTest() {
        super(ViewAdapterTestBinder.class, R.layout.view_adapter_test);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        mBinder.setViewBinding(mViewBindingObject);
        mBinder.rebindDirty();
    }

    private void changeValues() throws Throwable {
        runTestOnUiThread(new Runnable() {
            @Override
            public void run() {
                mViewBindingObject.changeValues();
                mBinder.rebindDirty();
            }
        });
    }

    public void testPadding() throws Throwable {
        View view = mBinder.getPadding();
        assertEquals(mViewBindingObject.getPadding(), view.getPaddingBottom());
        assertEquals(mViewBindingObject.getPadding(), view.getPaddingTop());
        assertEquals(mViewBindingObject.getPadding(), view.getPaddingRight());
        assertEquals(mViewBindingObject.getPadding(), view.getPaddingLeft());

        changeValues();

        assertEquals(mViewBindingObject.getPadding(), view.getPaddingBottom());
        assertEquals(mViewBindingObject.getPadding(), view.getPaddingTop());
        assertEquals(mViewBindingObject.getPadding(), view.getPaddingRight());
        assertEquals(mViewBindingObject.getPadding(), view.getPaddingLeft());
    }

    public void testPaddingLeftRight() throws Throwable {
        View view = mBinder.getPaddingLeftRight();
        assertEquals(mViewBindingObject.getPaddingLeft(), view.getPaddingLeft());
        assertEquals(mViewBindingObject.getPaddingRight(), view.getPaddingRight());

        changeValues();

        assertEquals(mViewBindingObject.getPaddingLeft(), view.getPaddingLeft());
        assertEquals(mViewBindingObject.getPaddingRight(), view.getPaddingRight());
    }

    public void testPaddingStartEnd() throws Throwable {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            View view = mBinder.getPaddingStartEnd();
            assertEquals(mViewBindingObject.getPaddingStart(), view.getPaddingStart());
            assertEquals(mViewBindingObject.getPaddingEnd(), view.getPaddingEnd());

            changeValues();

            assertEquals(mViewBindingObject.getPaddingStart(), view.getPaddingStart());
            assertEquals(mViewBindingObject.getPaddingEnd(), view.getPaddingEnd());
        }
    }

    public void testPaddingTopBottom() throws Throwable {
        View view = mBinder.getPaddingTopBottom();
        assertEquals(mViewBindingObject.getPaddingTop(), view.getPaddingTop());
        assertEquals(mViewBindingObject.getPaddingBottom(), view.getPaddingBottom());

        changeValues();

        assertEquals(mViewBindingObject.getPaddingTop(), view.getPaddingTop());
        assertEquals(mViewBindingObject.getPaddingBottom(), view.getPaddingBottom());
    }

    public void testBackgroundTint() throws Throwable {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            View view = mBinder.getBackgroundTint();
            assertNotNull(view.getBackgroundTintList());
            ColorStateList colorStateList = view.getBackgroundTintList();
            assertEquals(mViewBindingObject.getBackgroundTint(), colorStateList.getDefaultColor());

            changeValues();

            assertNotNull(view.getBackgroundTintList());
            colorStateList = view.getBackgroundTintList();
            assertEquals(mViewBindingObject.getBackgroundTint(), colorStateList.getDefaultColor());
        }
    }

    public void testFadeScrollbars() throws Throwable {
        View view = mBinder.getFadeScrollbars();
        assertEquals(mViewBindingObject.getFadeScrollbars(), view.isScrollbarFadingEnabled());

        changeValues();

        assertEquals(mViewBindingObject.getFadeScrollbars(), view.isScrollbarFadingEnabled());
    }

    public void testNextFocus() throws Throwable {
        View view = mBinder.getNextFocus();

        assertEquals(mViewBindingObject.getNextFocusDown(), view.getNextFocusDownId());
        assertEquals(mViewBindingObject.getNextFocusUp(), view.getNextFocusUpId());
        assertEquals(mViewBindingObject.getNextFocusLeft(), view.getNextFocusLeftId());
        assertEquals(mViewBindingObject.getNextFocusRight(), view.getNextFocusRightId());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            assertEquals(mViewBindingObject.getNextFocusForward(), view.getNextFocusForwardId());
        }

        changeValues();

        assertEquals(mViewBindingObject.getNextFocusDown(), view.getNextFocusDownId());
        assertEquals(mViewBindingObject.getNextFocusUp(), view.getNextFocusUpId());
        assertEquals(mViewBindingObject.getNextFocusLeft(), view.getNextFocusLeftId());
        assertEquals(mViewBindingObject.getNextFocusRight(), view.getNextFocusRightId());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            assertEquals(mViewBindingObject.getNextFocusForward(), view.getNextFocusForwardId());
        }
    }

    public void testRequiresFadingEdge() throws Throwable {
        View view = mBinder.getRequiresFadingEdge();

        assertTrue(view.isVerticalFadingEdgeEnabled());
        assertFalse(view.isHorizontalFadingEdgeEnabled());

        changeValues();

        assertFalse(view.isVerticalFadingEdgeEnabled());
        assertTrue(view.isHorizontalFadingEdgeEnabled());
    }

    public void testScrollbar() throws Throwable {
        View view = mBinder.getScrollbar();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            assertEquals(mViewBindingObject.getScrollbarDefaultDelayBeforeFade(),
                    view.getScrollBarDefaultDelayBeforeFade());
            assertEquals(mViewBindingObject.getScrollbarFadeDuration(), view.getScrollBarFadeDuration());
            assertEquals(mViewBindingObject.getScrollbarSize(), view.getScrollBarSize());
        }
        assertEquals(mViewBindingObject.getScrollbarStyle(), view.getScrollBarStyle());

        changeValues();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            assertEquals(mViewBindingObject.getScrollbarDefaultDelayBeforeFade(),
                    view.getScrollBarDefaultDelayBeforeFade());
            assertEquals(mViewBindingObject.getScrollbarFadeDuration(), view.getScrollBarFadeDuration());
            assertEquals(mViewBindingObject.getScrollbarSize(), view.getScrollBarSize());
        }
        assertEquals(mViewBindingObject.getScrollbarStyle(), view.getScrollBarStyle());
    }

    public void testTransformPivot() throws Throwable {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            View view = mBinder.getTransformPivot();

            assertEquals(mViewBindingObject.getTransformPivotX(), view.getPivotX());
            assertEquals(mViewBindingObject.getTransformPivotY(), view.getPivotY());

            changeValues();

            assertEquals(mViewBindingObject.getTransformPivotX(), view.getPivotX());
            assertEquals(mViewBindingObject.getTransformPivotY(), view.getPivotY());
        }
    }
}
+52 −0
Original line number Diff line number Diff line
/*
 * 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 com.android.databinding.testapp.vo;

import android.binding.Bindable;

public class BindableTestObject {
    @Bindable
    public int bindableField1;

    @Bindable
    private int bindableField2;

    private int bindableField3;

    @Bindable
    public int m_bindableField4;

    @Bindable
    public int mbindableField5;

    @Bindable
    public int _bindableField6;

    @Bindable
    public int _BindableField7;

    @Bindable
    public int mBindableField8;

    public int getBindableField2() {
        return bindableField2;
    }

    @Bindable
    public int getBindableField3() {
        return bindableField3;
    }
}
+177 −0
Original line number Diff line number Diff line
/*
 * 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 com.android.databinding.testapp.vo;

import com.android.databinding.library.BaseObservable;
import com.android.databinding.testapp.R;

import android.binding.Bindable;
import android.binding.adapters.ViewBindingAdapter;
import android.view.View;

public class ViewBindingObject extends BaseObservable {
    @Bindable
    private int mBackgroundTint = 0xFF00FF00;
    @Bindable
    private boolean mFadeScrollbars = false;
    @Bindable
    private int mNextFocusForward = R.id.padding;
    @Bindable
    private int mNextFocusLeft = R.id.paddingStartEnd;
    @Bindable
    private int mNextFocusRight = R.id.paddingTopBottom;
    @Bindable
    private int mNextFocusUp = R.id.backgroundTint;
    @Bindable
    private int mNextFocusDown = R.id.fadeScrollbars;
    @Bindable
    private int mRequiresFadingEdge = ViewBindingAdapter.FADING_EDGE_VERTICAL;
    @Bindable
    private int mScrollbarDefaultDelayBeforeFade = 300;
    @Bindable
    private int mScrollbarFadeDuration = 400;
    @Bindable
    private int mScrollbarSize = 10;
    @Bindable
    private int mScrollbarStyle = View.SCROLLBARS_INSIDE_OVERLAY;
    @Bindable
    private float mTransformPivotX = 9;
    @Bindable
    private float mTransformPivotY = 8;
    @Bindable
    private int mPadding = 11;
    @Bindable
    private int mPaddingBottom = 12;
    @Bindable
    private int mPaddingTop = 13;
    @Bindable
    private int mPaddingLeft = 14;
    @Bindable
    private int mPaddingRight = 15;
    @Bindable
    private int mPaddingStart = 16;
    @Bindable
    private int mPaddingEnd = 17;

    public int getBackgroundTint() {
        return mBackgroundTint;
    }

    public int getScrollbarFadeDuration() {
        return mScrollbarFadeDuration;
    }

    public boolean getFadeScrollbars() {
        return mFadeScrollbars;
    }

    public int getNextFocusDown() {
        return mNextFocusDown;
    }

    public int getNextFocusForward() {
        return mNextFocusForward;
    }

    public int getNextFocusLeft() {
        return mNextFocusLeft;
    }

    public int getNextFocusRight() {
        return mNextFocusRight;
    }

    public int getNextFocusUp() {
        return mNextFocusUp;
    }

    public int getRequiresFadingEdge() {
        return mRequiresFadingEdge;
    }

    public int getScrollbarDefaultDelayBeforeFade() {
        return mScrollbarDefaultDelayBeforeFade;
    }

    public int getScrollbarSize() {
        return mScrollbarSize;
    }

    public int getScrollbarStyle() {
        return mScrollbarStyle;
    }

    public float getTransformPivotX() {
        return mTransformPivotX;
    }

    public float getTransformPivotY() {
        return mTransformPivotY;
    }

    public int getPadding() {
        return mPadding;
    }

    public int getPaddingBottom() {
        return mPaddingBottom;
    }

    public int getPaddingEnd() {
        return mPaddingEnd;
    }

    public int getPaddingLeft() {
        return mPaddingLeft;
    }

    public int getPaddingRight() {
        return mPaddingRight;
    }

    public int getPaddingStart() {
        return mPaddingStart;
    }

    public int getPaddingTop() {
        return mPaddingTop;
    }

    public void changeValues() {
        mBackgroundTint = 0xFFFF0000;
        mFadeScrollbars = true;
        mNextFocusForward = R.id.paddingStartEnd;
        mNextFocusLeft = R.id.paddingTopBottom;
        mNextFocusRight = R.id.backgroundTint;
        mNextFocusUp = R.id.fadeScrollbars;
        mNextFocusDown = R.id.padding;
        mRequiresFadingEdge = ViewBindingAdapter.FADING_EDGE_HORIZONTAL;
        mScrollbarDefaultDelayBeforeFade = 400;
        mScrollbarFadeDuration = 500;
        mScrollbarSize = 11;
        mScrollbarStyle = View.SCROLLBARS_INSIDE_INSET;
        mTransformPivotX = 7;
        mTransformPivotY = 6;
        mPadding = 110;
        mPaddingBottom = 120;
        mPaddingTop = 130;
        mPaddingLeft = 140;
        mPaddingRight = 150;
        mPaddingStart = 160;
        mPaddingEnd = 170;
        notifyChange();
    }
}
Loading