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