124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam/*
224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * Copyright (C) 2017 The Android Open Source Project
324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam *
424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * you may not use this file except in compliance with the License.
624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * You may obtain a copy of the License at
724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam *
824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam *
1024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * Unless required by applicable law or agreed to in writing, software
1124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
1224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * See the License for the specific language governing permissions and
1424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * limitations under the License.
1524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam */
1624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
1724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lampackage com.android.setupwizardlib.test;
1824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
1924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport static android.support.test.InstrumentationRegistry.getTargetContext;
2024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
2124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport static org.junit.Assert.assertNotNull;
2224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
2324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport android.content.Context;
2424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport android.support.test.filters.SmallTest;
2524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport android.view.ContextThemeWrapper;
2624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport android.view.LayoutInflater;
2724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport android.widget.FrameLayout;
2824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
2924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport com.android.setupwizardlib.R;
3024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport com.android.setupwizardlib.items.Item;
3124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
3224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport org.junit.Test;
3324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport org.junit.runner.RunWith;
3424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport org.junit.runners.Parameterized;
3524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport org.junit.runners.Parameterized.Parameters;
3624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
3724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport java.util.ArrayList;
3824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lamimport java.util.List;
3924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
4024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam/**
4124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * Sanity test for all the item layouts to make sure they won't crash when being inflated in
4224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam * different themes.
4324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam */
4424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam@RunWith(Parameterized.class)
4524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam@SmallTest
4624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lampublic class ItemLayoutTest {
4724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
4824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    @Parameters
4924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    public static Iterable<Object[]> data() {
5024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        int[] themes = new int[] {
5124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.style.SuwThemeMaterial_Light,
5224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.style.SuwThemeMaterial,
5324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.style.SuwThemeGlif_Light,
5424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.style.SuwThemeGlif,
5524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.style.SuwThemeGlifV2_Light,
5624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.style.SuwThemeGlifV2
5724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        };
5824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        int[] layouts = new int[] {
5924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.layout.suw_items_default,
6024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.layout.suw_items_verbose,
6124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                R.layout.suw_items_description
6224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        };
6324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
6424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        // Test all the possible combinations of themes and layouts.
6524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        List<Object[]> params = new ArrayList<>();
6624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        for (int theme : themes) {
6724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam            for (int layout : layouts) {
6824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam                params.add(new Object[] { theme, layout });
6924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam            }
7024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        }
7124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        return params;
7224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    }
7324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
7424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    private final Context mContext;
7524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    private final FrameLayout mParent;
7624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    private final Item mItem;
7724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
7824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    public ItemLayoutTest(int theme, int layout) {
7924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        mContext = new ContextThemeWrapper(getTargetContext(), theme);
8024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        mParent = new FrameLayout(mContext);
8124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        mItem = new Item();
8224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        mItem.setLayoutResource(layout);
8324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    }
8424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
8524885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    @Test
8624885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    public void testInflateLayoutHasBasicViews() {
8724885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        LayoutInflater.from(mContext).inflate(mItem.getLayoutResource(), mParent, true);
8824885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        mItem.onBindView(mParent);
8924885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam
9024885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        assertNotNull("Title should exist", mParent.findViewById(R.id.suw_items_title));
9124885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        assertNotNull("Summary should exist", mParent.findViewById(R.id.suw_items_summary));
9224885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam        assertNotNull("Icon should exist", mParent.findViewById(R.id.suw_items_icon));
9324885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam    }
9424885729e3571ebca96c3fb8041f882d79e0fc0cMaurice Lam}
95