171eb6908f2689bd17000237eb645896c36da0138George Mount/*
271eb6908f2689bd17000237eb645896c36da0138George Mount * Copyright (C) 2015 The Android Open Source Project
371eb6908f2689bd17000237eb645896c36da0138George Mount *
471eb6908f2689bd17000237eb645896c36da0138George Mount * Licensed under the Apache License, Version 2.0 (the "License");
571eb6908f2689bd17000237eb645896c36da0138George Mount * you may not use this file except in compliance with the License.
671eb6908f2689bd17000237eb645896c36da0138George Mount * You may obtain a copy of the License at
771eb6908f2689bd17000237eb645896c36da0138George Mount *
871eb6908f2689bd17000237eb645896c36da0138George Mount *      http://www.apache.org/licenses/LICENSE-2.0
971eb6908f2689bd17000237eb645896c36da0138George Mount *
1071eb6908f2689bd17000237eb645896c36da0138George Mount * Unless required by applicable law or agreed to in writing, software
1171eb6908f2689bd17000237eb645896c36da0138George Mount * distributed under the License is distributed on an "AS IS" BASIS,
1271eb6908f2689bd17000237eb645896c36da0138George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1371eb6908f2689bd17000237eb645896c36da0138George Mount * See the License for the specific language governing permissions and
1471eb6908f2689bd17000237eb645896c36da0138George Mount * limitations under the License.
1571eb6908f2689bd17000237eb645896c36da0138George Mount */
16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.testapp;
1771eb6908f2689bd17000237eb645896c36da0138George Mount
18cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mountimport android.content.ContentResolver;
192e2043d30f95585de2069e1cbb23e022ab0e71c4George Mountimport android.databinding.testapp.databinding.ImageViewAdapterTestBinding;
20fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.testapp.vo.ImageViewBindingObject;
2171eb6908f2689bd17000237eb645896c36da0138George Mount
22cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mountimport android.net.Uri;
23cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mountimport android.test.UiThreadTest;
2471eb6908f2689bd17000237eb645896c36da0138George Mountimport android.widget.ImageView;
2571eb6908f2689bd17000237eb645896c36da0138George Mount
2671eb6908f2689bd17000237eb645896c36da0138George Mountpublic class ImageViewBindingAdapterTest
274c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount        extends BindingAdapterTestBase<ImageViewAdapterTestBinding, ImageViewBindingObject> {
2871eb6908f2689bd17000237eb645896c36da0138George Mount
2971eb6908f2689bd17000237eb645896c36da0138George Mount    ImageView mView;
3071eb6908f2689bd17000237eb645896c36da0138George Mount
3171eb6908f2689bd17000237eb645896c36da0138George Mount    public ImageViewBindingAdapterTest() {
324c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount        super(ImageViewAdapterTestBinding.class, ImageViewBindingObject.class,
3371eb6908f2689bd17000237eb645896c36da0138George Mount                R.layout.image_view_adapter_test);
3471eb6908f2689bd17000237eb645896c36da0138George Mount    }
3571eb6908f2689bd17000237eb645896c36da0138George Mount
3671eb6908f2689bd17000237eb645896c36da0138George Mount    @Override
3771eb6908f2689bd17000237eb645896c36da0138George Mount    protected void setUp() throws Exception {
3871eb6908f2689bd17000237eb645896c36da0138George Mount        super.setUp();
3934a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount        mView = mBinder.view;
4071eb6908f2689bd17000237eb645896c36da0138George Mount    }
4171eb6908f2689bd17000237eb645896c36da0138George Mount
4271eb6908f2689bd17000237eb645896c36da0138George Mount    public void testImageView() throws Throwable {
4371eb6908f2689bd17000237eb645896c36da0138George Mount        assertEquals(mBindingObject.getSrc(), mView.getDrawable());
4471eb6908f2689bd17000237eb645896c36da0138George Mount        assertEquals(mBindingObject.getTint(), mView.getImageTintList().getDefaultColor());
4571eb6908f2689bd17000237eb645896c36da0138George Mount        assertEquals(mBindingObject.getTintMode(), mView.getImageTintMode());
4671eb6908f2689bd17000237eb645896c36da0138George Mount
4771eb6908f2689bd17000237eb645896c36da0138George Mount        changeValues();
4871eb6908f2689bd17000237eb645896c36da0138George Mount
4971eb6908f2689bd17000237eb645896c36da0138George Mount        assertEquals(mBindingObject.getSrc(), mView.getDrawable());
5071eb6908f2689bd17000237eb645896c36da0138George Mount        assertEquals(mBindingObject.getTint(), mView.getImageTintList().getDefaultColor());
5171eb6908f2689bd17000237eb645896c36da0138George Mount        assertEquals(mBindingObject.getTintMode(), mView.getImageTintMode());
5271eb6908f2689bd17000237eb645896c36da0138George Mount    }
53cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount
54cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount    @UiThreadTest
55cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount    public void testImageSource() throws Throwable {
56cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount        assertNull(mBinder.view2.getDrawable());
57cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount        assertNull(mBinder.view3.getDrawable());
58cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount
59cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount        String uriString = ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
60cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount                getActivity().getResources().getResourcePackageName(R.drawable.ic_launcher) + "/" +
61cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount                R.drawable.ic_launcher;
62cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount        mBinder.setUriString(uriString);
63cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount        mBinder.setUri(Uri.parse(uriString));
64cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount        mBinder.executePendingBindings();
65cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount
66cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount        assertNotNull(mBinder.view2.getDrawable());
67cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount        assertNotNull(mBinder.view3.getDrawable());
68cc0e609d998fa9f82d62050bea525afa3a6f92f3George Mount    }
69d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount
70d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount    @UiThreadTest
71d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount    public void testConditionalSource() throws Throwable {
72d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount        mBinder.setObj(null);
73d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount        mBinder.executePendingBindings();
74d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount        assertNotNull(mBinder.view4.getDrawable());
75d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount        mBinder.setObj(new ImageViewBindingObject());
76d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount        mBinder.executePendingBindings();
77d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount        assertNull(mBinder.view4.getDrawable());
78d6339f712b4b8ce04a1cb3eec9c2574f4d170990George Mount    }
7971eb6908f2689bd17000237eb645896c36da0138George Mount}
80