11b9940e612fc73202837fbe9db2f9035f307b5d1George Mount/*
21b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * Copyright (C) 2015 The Android Open Source Project
31b9940e612fc73202837fbe9db2f9035f307b5d1George Mount *
41b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * Licensed under the Apache License, Version 2.0 (the "License");
51b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * you may not use this file except in compliance with the License.
61b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * You may obtain a copy of the License at
71b9940e612fc73202837fbe9db2f9035f307b5d1George Mount *
81b9940e612fc73202837fbe9db2f9035f307b5d1George Mount *      http://www.apache.org/licenses/LICENSE-2.0
91b9940e612fc73202837fbe9db2f9035f307b5d1George Mount *
101b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * Unless required by applicable law or agreed to in writing, software
111b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * distributed under the License is distributed on an "AS IS" BASIS,
121b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * See the License for the specific language governing permissions and
141b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * limitations under the License.
151b9940e612fc73202837fbe9db2f9035f307b5d1George Mount */
16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.testapp;
171b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
182e2043d30f95585de2069e1cbb23e022ab0e71c4George Mountimport android.databinding.testapp.databinding.AbsSpinnerAdapterTestBinding;
19fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.testapp.vo.AbsSpinnerBindingObject;
201b9940e612fc73202837fbe9db2f9035f307b5d1George Mountimport android.os.Build;
21c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mountimport android.test.UiThreadTest;
221b9940e612fc73202837fbe9db2f9035f307b5d1George Mountimport android.widget.Spinner;
231b9940e612fc73202837fbe9db2f9035f307b5d1George Mountimport android.widget.SpinnerAdapter;
241b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
25c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mountimport java.util.List;
26c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount
271b9940e612fc73202837fbe9db2f9035f307b5d1George Mountpublic class AbsSpinnerBindingAdapterTest
284c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount        extends BindingAdapterTestBase<AbsSpinnerAdapterTestBinding, AbsSpinnerBindingObject> {
291b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
301b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    Spinner mView;
311b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
321b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    public AbsSpinnerBindingAdapterTest() {
334c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount        super(AbsSpinnerAdapterTestBinding.class, AbsSpinnerBindingObject.class,
341b9940e612fc73202837fbe9db2f9035f307b5d1George Mount                R.layout.abs_spinner_adapter_test);
351b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    }
361b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
371b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    @Override
381b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    protected void setUp() throws Exception {
391b9940e612fc73202837fbe9db2f9035f307b5d1George Mount        super.setUp();
4034a18e6a231f3b64726bd93e7e097a0d5a75995dGeorge Mount        mView = mBinder.view;
411b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    }
421b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
43c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount    @UiThreadTest
441b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    public void testEntries() throws Throwable {
451b9940e612fc73202837fbe9db2f9035f307b5d1George Mount        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
461b9940e612fc73202837fbe9db2f9035f307b5d1George Mount            validateEntries();
471b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
481b9940e612fc73202837fbe9db2f9035f307b5d1George Mount            changeValues();
491b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
501b9940e612fc73202837fbe9db2f9035f307b5d1George Mount            validateEntries();
511b9940e612fc73202837fbe9db2f9035f307b5d1George Mount        }
521b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    }
531b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
54c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount    @UiThreadTest
55c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount    public void testList() throws Throwable {
56c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
57c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount            validateList();
58c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount
59c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount            mBindingObject.getList().add(1, "Cruel");
60c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount            mBinder.executePendingBindings();
61c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount
62c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount            validateList();
63c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount        }
64c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount    }
65c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount
661b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    private void validateEntries() {
671b9940e612fc73202837fbe9db2f9035f307b5d1George Mount        assertEquals(mBindingObject.getEntries().length, mView.getAdapter().getCount());
681b9940e612fc73202837fbe9db2f9035f307b5d1George Mount        CharSequence[] entries = mBindingObject.getEntries();
691b9940e612fc73202837fbe9db2f9035f307b5d1George Mount        SpinnerAdapter adapter = mView.getAdapter();
701b9940e612fc73202837fbe9db2f9035f307b5d1George Mount        for (int i = 0; i < entries.length; i++) {
711b9940e612fc73202837fbe9db2f9035f307b5d1George Mount            assertEquals(adapter.getItem(i), entries[i]);
721b9940e612fc73202837fbe9db2f9035f307b5d1George Mount        }
731b9940e612fc73202837fbe9db2f9035f307b5d1George Mount    }
74c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount
75c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount    private void validateList() {
76c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount        List<String> entries = mBindingObject.getList();
77c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount        SpinnerAdapter adapter = mBinder.view2.getAdapter();
78c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount        assertEquals(entries.size(), adapter.getCount());
79c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount        for (int i = 0; i < entries.size(); i++) {
80c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount            assertEquals(adapter.getItem(i), entries.get(i));
81c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount        }
82c7cd9c61e55b43b712d20f855ca59d6fbc49e5b1George Mount    }
831b9940e612fc73202837fbe9db2f9035f307b5d1George Mount}
84