197d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar/*
297d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * Copyright (C) 2015 The Android Open Source Project
397d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
497d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * you may not use this file except in compliance with the License.
597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * You may obtain a copy of the License at
697d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * Unless required by applicable law or agreed to in writing, software
897d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
997d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * See the License for the specific language governing permissions and
1197d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar * limitations under the License.
1297d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar */
1397d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
14fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.testapp;
1597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.DataBinderTrojan;
172e2043d30f95585de2069e1cbb23e022ab0e71c4George Mountimport android.databinding.testapp.databinding.NewApiLayoutBinding;
1897d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
1997d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyarimport android.os.Build;
2097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyarimport android.test.UiThreadTest;
2197d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyarimport android.view.View;
2297d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyarimport android.widget.TextView;
2397d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
2497d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyarimport java.util.ArrayList;
2597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
264c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mountpublic class NewApiTest extends BaseDataBinderTest<NewApiLayoutBinding> {
2797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    public NewApiTest() {
284c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount        super(NewApiLayoutBinding.class);
2997d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    }
3097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
313f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar    @Override
323f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar    protected void setUp() throws Exception {
333f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar        super.setUp();
343f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar    }
353f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar
3697d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    @UiThreadTest
3797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    public void testSetElevation() {
383f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar        initBinder();
3997d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        mBinder.setElevation(3);
4097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        mBinder.setName("foo");
4197d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        mBinder.setChildren(new ArrayList<View>());
424c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount        mBinder.executePendingBindings();
4334a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount        assertEquals("foo", mBinder.textView.getText().toString());
4434a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount        assertEquals(3f, mBinder.textView.getElevation());
4597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    }
4697d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
4797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    @UiThreadTest
4897d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    public void testSetElevationOlderAPI() {
493f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar        initBinder();
5097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        DataBinderTrojan.setBuildSdkInt(1);
5197d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        try {
5234a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount            TextView textView = mBinder.textView;
5397d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            float originalElevation = textView.getElevation();
5497d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            mBinder.setElevation(3);
5597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            mBinder.setName("foo2");
564c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount            mBinder.executePendingBindings();
5797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            assertEquals("foo2", textView.getText().toString());
5897d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            assertEquals(originalElevation, textView.getElevation());
5997d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        } finally {
6097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            DataBinderTrojan.setBuildSdkInt(Build.VERSION.SDK_INT);
6197d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        }
6297d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    }
6397d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
6497d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    @UiThreadTest
6597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    public void testGeneric() {
663f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar        initBinder();
6797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        ArrayList<View> views = new ArrayList<>();
6897d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        mBinder.setChildren(views);
694c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount        mBinder.executePendingBindings();
7097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        assertEquals(1, views.size());
7134a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount        assertSame(mBinder.textView, views.get(0));
7297d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    }
7397d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
7497d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    @UiThreadTest
7597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    public void testGenericOlderApi() {
763f73e3149732132c02f5d19aab7b5da429794058Yigit Boyar        initBinder();
7797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        DataBinderTrojan.setBuildSdkInt(1);
7897d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        try {
7997d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            ArrayList<View> views = new ArrayList<>();
8097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            mBinder.setChildren(views);
814c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount            mBinder.executePendingBindings();
8297d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            // we should not call the api on older platforms.
8397d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            assertEquals(0, views.size());
8497d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        } finally {
8597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar            DataBinderTrojan.setBuildSdkInt(Build.VERSION.SDK_INT);
8697d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        }
8797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    }
8897d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar}
89