1a23c768a1a61495852074869b244064cf535b4c1Dake Gu/* 2a23c768a1a61495852074869b244064cf535b4c1Dake Gu * Copyright (C) 2017 The Android Open Source Project 3a23c768a1a61495852074869b244064cf535b4c1Dake Gu * 4a23c768a1a61495852074869b244064cf535b4c1Dake Gu * Licensed under the Apache License, Version 2.0 (the "License"); 5a23c768a1a61495852074869b244064cf535b4c1Dake Gu * you may not use this file except in compliance with the License. 6a23c768a1a61495852074869b244064cf535b4c1Dake Gu * You may obtain a copy of the License at 7a23c768a1a61495852074869b244064cf535b4c1Dake Gu * 8a23c768a1a61495852074869b244064cf535b4c1Dake Gu * http://www.apache.org/licenses/LICENSE-2.0 9a23c768a1a61495852074869b244064cf535b4c1Dake Gu * 10a23c768a1a61495852074869b244064cf535b4c1Dake Gu * Unless required by applicable law or agreed to in writing, software 11a23c768a1a61495852074869b244064cf535b4c1Dake Gu * distributed under the License is distributed on an "AS IS" BASIS, 12a23c768a1a61495852074869b244064cf535b4c1Dake Gu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a23c768a1a61495852074869b244064cf535b4c1Dake Gu * See the License for the specific language governing permissions and 14a23c768a1a61495852074869b244064cf535b4c1Dake Gu * limitations under the License. 15a23c768a1a61495852074869b244064cf535b4c1Dake Gu */ 16a23c768a1a61495852074869b244064cf535b4c1Dake Gu 17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.leanback.widget; 18a23c768a1a61495852074869b244064cf535b4c1Dake Gu 19fa39e2bca1b284ad7c931d9194287770b7b507faAurimas Liutikasimport static org.junit.Assert.assertEquals; 20fa39e2bca1b284ad7c931d9194287770b7b507faAurimas Liutikasimport static org.junit.Assert.assertFalse; 21fa39e2bca1b284ad7c931d9194287770b7b507faAurimas Liutikasimport static org.junit.Assert.assertTrue; 22a23c768a1a61495852074869b244064cf535b4c1Dake Gu 23a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.content.Context; 24a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.graphics.Color; 25a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.graphics.drawable.ColorDrawable; 26a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.graphics.drawable.Drawable; 27a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.os.Build; 28a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.support.test.InstrumentationRegistry; 29a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.support.test.filters.SmallTest; 30a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.support.test.runner.AndroidJUnit4; 31a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.view.View; 32a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.view.ViewGroup; 33a23c768a1a61495852074869b244064cf535b4c1Dake Guimport android.widget.FrameLayout; 34a23c768a1a61495852074869b244064cf535b4c1Dake Gu 358619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport androidx.core.view.ViewCompat; 368619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport androidx.leanback.R; 378619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas 38a23c768a1a61495852074869b244064cf535b4c1Dake Guimport org.junit.Test; 39a23c768a1a61495852074869b244064cf535b4c1Dake Guimport org.junit.runner.RunWith; 40a23c768a1a61495852074869b244064cf535b4c1Dake Gu 41a23c768a1a61495852074869b244064cf535b4c1Dake Gu@RunWith(AndroidJUnit4.class) 42a23c768a1a61495852074869b244064cf535b4c1Dake Gu@SmallTest 43a23c768a1a61495852074869b244064cf535b4c1Dake Gupublic class ListRowPresenterTest { 44a23c768a1a61495852074869b244064cf535b4c1Dake Gu 456a3e5a1ea0f4791413a81bf1667f358f1eda1affDake Gu static final float DELTA = 1f; 46a23c768a1a61495852074869b244064cf535b4c1Dake Gu // default overlay color when setSelectLevel(0.5f) 47a23c768a1a61495852074869b244064cf535b4c1Dake Gu static final int HALF_OVERLAY_COLOR = 0x4C000000; 48a23c768a1a61495852074869b244064cf535b4c1Dake Gu static int sFocusedZ; 49a23c768a1a61495852074869b244064cf535b4c1Dake Gu 50a23c768a1a61495852074869b244064cf535b4c1Dake Gu static class DummyPresenter extends Presenter { 51d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu int mWidth; 52d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu int mHeight; 53d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu 54d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu DummyPresenter() { 55d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu this(100, 100); 56d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu } 57d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu 58d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu DummyPresenter(int width, int height) { 59d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu mWidth = width; 60d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu mHeight = height; 61d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu } 62d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu 63a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 64a23c768a1a61495852074869b244064cf535b4c1Dake Gu public ViewHolder onCreateViewHolder(ViewGroup parent) { 65a23c768a1a61495852074869b244064cf535b4c1Dake Gu View view = new View(parent.getContext()); 66a23c768a1a61495852074869b244064cf535b4c1Dake Gu view.setFocusable(true); 67a23c768a1a61495852074869b244064cf535b4c1Dake Gu view.setId(R.id.lb_action_button); 68d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu view.setLayoutParams(new ViewGroup.LayoutParams(mWidth, mHeight)); 69a23c768a1a61495852074869b244064cf535b4c1Dake Gu return new Presenter.ViewHolder(view); 70a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 71a23c768a1a61495852074869b244064cf535b4c1Dake Gu 72a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 73a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void onBindViewHolder(ViewHolder viewHolder, Object item) { 74a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 75a23c768a1a61495852074869b244064cf535b4c1Dake Gu 76a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 77a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void onUnbindViewHolder(ViewHolder viewHolder) { 78a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 79a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 80a23c768a1a61495852074869b244064cf535b4c1Dake Gu 81a23c768a1a61495852074869b244064cf535b4c1Dake Gu Context mContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 82a23c768a1a61495852074869b244064cf535b4c1Dake Gu ListRowPresenter mListRowPresenter; 83a23c768a1a61495852074869b244064cf535b4c1Dake Gu ListRow mRow; 84a23c768a1a61495852074869b244064cf535b4c1Dake Gu ListRowPresenter.ViewHolder mListVh; 85a23c768a1a61495852074869b244064cf535b4c1Dake Gu 86a23c768a1a61495852074869b244064cf535b4c1Dake Gu void setup(ListRowPresenter listRowPresenter, ObjectAdapter adapter) { 87a23c768a1a61495852074869b244064cf535b4c1Dake Gu sFocusedZ = mContext.getResources().getDimensionPixelSize( 88a23c768a1a61495852074869b244064cf535b4c1Dake Gu R.dimen.lb_material_shadow_focused_z); 89a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertTrue(sFocusedZ > 0); 90a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListRowPresenter = listRowPresenter; 91a23c768a1a61495852074869b244064cf535b4c1Dake Gu mRow = new ListRow(adapter); 92a23c768a1a61495852074869b244064cf535b4c1Dake Gu InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 93a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 94a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void run() { 95a23c768a1a61495852074869b244064cf535b4c1Dake Gu final ViewGroup parent = new FrameLayout(mContext); 96a23c768a1a61495852074869b244064cf535b4c1Dake Gu Presenter.ViewHolder containerVh = mListRowPresenter.onCreateViewHolder(parent); 97a23c768a1a61495852074869b244064cf535b4c1Dake Gu parent.addView(containerVh.view, 1000, 1000); 98a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListVh = (ListRowPresenter.ViewHolder) mListRowPresenter.getRowViewHolder( 99a23c768a1a61495852074869b244064cf535b4c1Dake Gu containerVh); 100a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListRowPresenter.onBindViewHolder(mListVh, mRow); 101a23c768a1a61495852074869b244064cf535b4c1Dake Gu runRecyclerViewLayout(); 102a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 103a23c768a1a61495852074869b244064cf535b4c1Dake Gu }); 104a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 105a23c768a1a61495852074869b244064cf535b4c1Dake Gu 106a23c768a1a61495852074869b244064cf535b4c1Dake Gu void runRecyclerViewLayout() { 107a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListVh.view.measure(View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY), 108a23c768a1a61495852074869b244064cf535b4c1Dake Gu View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY)); 109a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListVh.view.layout(0, 0, 1000, 1000); 110a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 111a23c768a1a61495852074869b244064cf535b4c1Dake Gu 112a23c768a1a61495852074869b244064cf535b4c1Dake Gu static void assertChildrenHaveAlpha(ViewGroup group, int numChildren, float alpha) { 113a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(numChildren, group.getChildCount()); 114a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (int i = 0; i < numChildren; i++) { 115fa39e2bca1b284ad7c931d9194287770b7b507faAurimas Liutikas assertEquals(alpha, group.getChildAt(i).getAlpha(), 0.01f); 116a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 117a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 118a23c768a1a61495852074869b244064cf535b4c1Dake Gu 119a23c768a1a61495852074869b244064cf535b4c1Dake Gu static Drawable getForeground(View view) { 120a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (Build.VERSION.SDK_INT >= 23) { 121a23c768a1a61495852074869b244064cf535b4c1Dake Gu return view.getForeground(); 122a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 123a23c768a1a61495852074869b244064cf535b4c1Dake Gu return null; 124a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 125a23c768a1a61495852074869b244064cf535b4c1Dake Gu 126a23c768a1a61495852074869b244064cf535b4c1Dake Gu static void assertChildrenHaveColorOverlay(ViewGroup group, int numChildren, int overlayColor, 127a23c768a1a61495852074869b244064cf535b4c1Dake Gu boolean keepChildForeground) { 128a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(numChildren, group.getChildCount()); 129a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (int i = 0; i < numChildren; i++) { 130a23c768a1a61495852074869b244064cf535b4c1Dake Gu View view = group.getChildAt(i); 131a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (keepChildForeground) { 132a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertTrue("When keepChildForeground, always create a" 133a23c768a1a61495852074869b244064cf535b4c1Dake Gu + " ShadowOverlayContainer", view instanceof ShadowOverlayContainer); 134a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(overlayColor, ((ShadowOverlayContainer) view).mOverlayColor); 135a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 136a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (view instanceof ShadowOverlayContainer) { 137a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(overlayColor, ((ShadowOverlayContainer) view).mOverlayColor); 138a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 139a23c768a1a61495852074869b244064cf535b4c1Dake Gu Drawable foreground = getForeground(view); 140a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(overlayColor, 141a23c768a1a61495852074869b244064cf535b4c1Dake Gu foreground instanceof ColorDrawable 142a23c768a1a61495852074869b244064cf535b4c1Dake Gu ? ((ColorDrawable) foreground).getColor() : Color.TRANSPARENT); 143a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 144a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 145a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 146a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 147a23c768a1a61495852074869b244064cf535b4c1Dake Gu 148d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu @Test 149d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu public void measureWithScrapViewHeight() { 150d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu final ArrayObjectAdapter arrayAdapter = new ArrayObjectAdapter( 151d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu new DummyPresenter(100, 213)); 152d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu arrayAdapter.add("abc"); 153d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu mListRowPresenter = new ListRowPresenter(); 154d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu mRow = new ListRow(arrayAdapter); 155d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 156d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu @Override 157d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu public void run() { 158d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu final ViewGroup parent = new FrameLayout(mContext); 159d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu Presenter.ViewHolder containerVh = mListRowPresenter.onCreateViewHolder(parent); 160d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu parent.addView(containerVh.view, 1000, ViewGroup.LayoutParams.WRAP_CONTENT); 161d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu mListVh = (ListRowPresenter.ViewHolder) mListRowPresenter.getRowViewHolder( 162d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu containerVh); 163d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu mListRowPresenter.onBindViewHolder(mListVh, mRow); 164d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu mListVh.view.measure( 165d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.AT_MOST), 166d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 167d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu } 168d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu }); 169d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu // measure hight should equals item height plus top and bottom paddings 170d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu assertEquals(213 + mListVh.view.getPaddingTop() + mListVh.view.getPaddingBottom(), 171d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu mListVh.view.getMeasuredHeight()); 172d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu } 173d3d2ade096dafb0a8e504c27d2d4661c75ae7682Dake Gu 174a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void defaultListRowOverlayColor(ListRowPresenter listRowPresenter) { 175a23c768a1a61495852074869b244064cf535b4c1Dake Gu final ArrayObjectAdapter arrayAdapter = new ArrayObjectAdapter(new DummyPresenter()); 176a23c768a1a61495852074869b244064cf535b4c1Dake Gu arrayAdapter.add("abc"); 177a23c768a1a61495852074869b244064cf535b4c1Dake Gu setup(listRowPresenter, arrayAdapter); 178a23c768a1a61495852074869b244064cf535b4c1Dake Gu InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 179a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 180a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void run() { 181a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListVh.getGridView().setItemAnimator(null); 182a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListRowPresenter.setSelectLevel(mListVh, 0.5f); 183a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 184a23c768a1a61495852074869b244064cf535b4c1Dake Gu }); 185a23c768a1a61495852074869b244064cf535b4c1Dake Gu boolean keepChildForeground = listRowPresenter.isKeepChildForeground(); 186a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertChildrenHaveColorOverlay(mListVh.getGridView(), 1, HALF_OVERLAY_COLOR, 187a23c768a1a61495852074869b244064cf535b4c1Dake Gu keepChildForeground); 188a23c768a1a61495852074869b244064cf535b4c1Dake Gu InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 189a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 190a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void run() { 191a23c768a1a61495852074869b244064cf535b4c1Dake Gu arrayAdapter.add("def"); 192a23c768a1a61495852074869b244064cf535b4c1Dake Gu runRecyclerViewLayout(); 193a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 194a23c768a1a61495852074869b244064cf535b4c1Dake Gu }); 195a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertChildrenHaveColorOverlay(mListVh.getGridView(), 2, HALF_OVERLAY_COLOR, 196a23c768a1a61495852074869b244064cf535b4c1Dake Gu keepChildForeground); 197a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 198a23c768a1a61495852074869b244064cf535b4c1Dake Gu 199a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 200a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void defaultListRowOverlayColor() { 201a23c768a1a61495852074869b244064cf535b4c1Dake Gu defaultListRowOverlayColor(new ListRowPresenter()); 202a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 203a23c768a1a61495852074869b244064cf535b4c1Dake Gu 204a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 205a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void defaultListRowOverlayColorCombinations() { 206a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean keepChildForeground: new boolean[] {false, true}) { 207a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean isUzingZorder : new boolean[]{false, true}) { 208a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean isUsingDefaultShadow : new boolean[]{false, true}) { 209a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean enableRoundedCorner : new boolean[]{false, true}) { 210a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean shadowEnabled : new boolean[]{false, true}) { 211a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean paramIsUsingZorder = isUzingZorder; 212a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean paramIsUsingDefaultShadow = isUsingDefaultShadow; 213a23c768a1a61495852074869b244064cf535b4c1Dake Gu ListRowPresenter presenter = new ListRowPresenter() { 214a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 215a23c768a1a61495852074869b244064cf535b4c1Dake Gu public boolean isUsingZOrder(Context context) { 216a23c768a1a61495852074869b244064cf535b4c1Dake Gu return paramIsUsingZorder; 217a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 218a23c768a1a61495852074869b244064cf535b4c1Dake Gu 219a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 220a23c768a1a61495852074869b244064cf535b4c1Dake Gu public boolean isUsingDefaultShadow() { 221a23c768a1a61495852074869b244064cf535b4c1Dake Gu return paramIsUsingDefaultShadow; 222a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 223a23c768a1a61495852074869b244064cf535b4c1Dake Gu }; 224a23c768a1a61495852074869b244064cf535b4c1Dake Gu presenter.setKeepChildForeground(keepChildForeground); 225a23c768a1a61495852074869b244064cf535b4c1Dake Gu presenter.setShadowEnabled(shadowEnabled); 226a23c768a1a61495852074869b244064cf535b4c1Dake Gu presenter.enableChildRoundedCorners(enableRoundedCorner); 227a23c768a1a61495852074869b244064cf535b4c1Dake Gu defaultListRowOverlayColor(presenter); 228a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 229a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 230a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 231a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 232a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 233a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 234a23c768a1a61495852074869b244064cf535b4c1Dake Gu 235a23c768a1a61495852074869b244064cf535b4c1Dake Gu static class CustomSelectEffectRowPresenter extends ListRowPresenter { 236a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 237a23c768a1a61495852074869b244064cf535b4c1Dake Gu public boolean isUsingDefaultListSelectEffect() { 238a23c768a1a61495852074869b244064cf535b4c1Dake Gu return false; 239a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 240a23c768a1a61495852074869b244064cf535b4c1Dake Gu 241a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 242a23c768a1a61495852074869b244064cf535b4c1Dake Gu protected void applySelectLevelToChild(ViewHolder rowViewHolder, View childView) { 243a23c768a1a61495852074869b244064cf535b4c1Dake Gu childView.setAlpha(rowViewHolder.getSelectLevel()); 244a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 245a23c768a1a61495852074869b244064cf535b4c1Dake Gu }; 246a23c768a1a61495852074869b244064cf535b4c1Dake Gu 247a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void customListRowSelectEffect(ListRowPresenter presenter) { 248a23c768a1a61495852074869b244064cf535b4c1Dake Gu final ArrayObjectAdapter arrayAdapter = new ArrayObjectAdapter(new DummyPresenter()); 249a23c768a1a61495852074869b244064cf535b4c1Dake Gu arrayAdapter.add("abc"); 250a23c768a1a61495852074869b244064cf535b4c1Dake Gu setup(presenter, arrayAdapter); 251a23c768a1a61495852074869b244064cf535b4c1Dake Gu InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 252a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 253a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void run() { 254a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListVh.getGridView().setItemAnimator(null); 255a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListRowPresenter.setSelectLevel(mListVh, 0.5f); 256a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 257a23c768a1a61495852074869b244064cf535b4c1Dake Gu }); 258a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertChildrenHaveAlpha(mListVh.getGridView(), 1, 0.5f); 259a23c768a1a61495852074869b244064cf535b4c1Dake Gu InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 260a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 261a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void run() { 262a23c768a1a61495852074869b244064cf535b4c1Dake Gu arrayAdapter.add("def"); 263a23c768a1a61495852074869b244064cf535b4c1Dake Gu runRecyclerViewLayout(); 264a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 265a23c768a1a61495852074869b244064cf535b4c1Dake Gu }); 266a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertChildrenHaveAlpha(mListVh.getGridView(), 2, 0.5f); 267a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 268a23c768a1a61495852074869b244064cf535b4c1Dake Gu 269a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 270a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void customListRowSelectEffect() { 271a23c768a1a61495852074869b244064cf535b4c1Dake Gu customListRowSelectEffect(new CustomSelectEffectRowPresenter()); 272a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 273a23c768a1a61495852074869b244064cf535b4c1Dake Gu 274a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 275a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void customListRowSelectEffectCombinations() { 276a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean keepChildForeground: new boolean[] {false, true}) { 277a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean isUzingZorder: new boolean[] {false, true}) { 278a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean isUsingDefaultShadow: new boolean[] {false, true}) { 279a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean enableRoundedCorner : new boolean[]{false, true}) { 280a23c768a1a61495852074869b244064cf535b4c1Dake Gu for (boolean shadowEnabled : new boolean[]{false, true}) { 281a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean paramIsUsingZorder = isUzingZorder; 282a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean paramIsUsingDefaultShadow = isUsingDefaultShadow; 283a23c768a1a61495852074869b244064cf535b4c1Dake Gu ListRowPresenter presenter = new CustomSelectEffectRowPresenter() { 284a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 285a23c768a1a61495852074869b244064cf535b4c1Dake Gu public boolean isUsingZOrder(Context context) { 286a23c768a1a61495852074869b244064cf535b4c1Dake Gu return paramIsUsingZorder; 287a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 288a23c768a1a61495852074869b244064cf535b4c1Dake Gu 289a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 290a23c768a1a61495852074869b244064cf535b4c1Dake Gu public boolean isUsingDefaultShadow() { 291a23c768a1a61495852074869b244064cf535b4c1Dake Gu return paramIsUsingDefaultShadow; 292a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 293a23c768a1a61495852074869b244064cf535b4c1Dake Gu }; 294a23c768a1a61495852074869b244064cf535b4c1Dake Gu presenter.setKeepChildForeground(keepChildForeground); 295a23c768a1a61495852074869b244064cf535b4c1Dake Gu presenter.setShadowEnabled(shadowEnabled); 296a23c768a1a61495852074869b244064cf535b4c1Dake Gu presenter.enableChildRoundedCorners(enableRoundedCorner); 297a23c768a1a61495852074869b244064cf535b4c1Dake Gu customListRowSelectEffect(presenter); 298a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 299a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 300a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 301a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 302a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 303a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 304a23c768a1a61495852074869b244064cf535b4c1Dake Gu 305a23c768a1a61495852074869b244064cf535b4c1Dake Gu static class ShadowOverlayResult { 306a23c768a1a61495852074869b244064cf535b4c1Dake Gu boolean mShadowOverlayContainer; 307a23c768a1a61495852074869b244064cf535b4c1Dake Gu int mShadowOverlayContainerOverlayColor; 308a23c768a1a61495852074869b244064cf535b4c1Dake Gu float mShadowOverlayContainerOverlayZ; 309a23c768a1a61495852074869b244064cf535b4c1Dake Gu boolean mShadowOverlayContainerOpticalBounds; 31001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu boolean mShadowOverlayContainerClipToOutline; 311a23c768a1a61495852074869b244064cf535b4c1Dake Gu int mViewOverlayColor; 312a23c768a1a61495852074869b244064cf535b4c1Dake Gu float mViewZ; 313a23c768a1a61495852074869b244064cf535b4c1Dake Gu boolean mViewOpticalBounds; 31401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu boolean mViewClipToOutline; 315a23c768a1a61495852074869b244064cf535b4c1Dake Gu void expect(boolean shadowOverlayContainer, int shadowOverlayContainerOverlayColor, 316a23c768a1a61495852074869b244064cf535b4c1Dake Gu float shadowOverlayContainerOverlayZ, boolean shadowOverlayContainerOpticalBounds, 31701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu boolean shadowOverlayContainerClipToOutline, 31801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu int viewOverlayColor, float viewZ, boolean viewOpticalBounds, 31901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu boolean viewClipToOutline) { 320a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(this.mShadowOverlayContainer, shadowOverlayContainer); 321a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(this.mShadowOverlayContainerOverlayColor, 322a23c768a1a61495852074869b244064cf535b4c1Dake Gu shadowOverlayContainerOverlayColor); 3236a3e5a1ea0f4791413a81bf1667f358f1eda1affDake Gu assertEquals(this.mShadowOverlayContainerOverlayZ, shadowOverlayContainerOverlayZ, 3246a3e5a1ea0f4791413a81bf1667f358f1eda1affDake Gu DELTA); 325a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(this.mShadowOverlayContainerOpticalBounds, 326a23c768a1a61495852074869b244064cf535b4c1Dake Gu shadowOverlayContainerOpticalBounds); 32701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu assertEquals(this.mShadowOverlayContainerClipToOutline, 32801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu shadowOverlayContainerClipToOutline); 329a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(this.mViewOverlayColor, viewOverlayColor); 3306a3e5a1ea0f4791413a81bf1667f358f1eda1affDake Gu assertEquals(this.mViewZ, viewZ, DELTA); 331a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertEquals(this.mViewOpticalBounds, viewOpticalBounds); 33201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu assertEquals(this.mViewClipToOutline, viewClipToOutline); 333a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 334a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 335a23c768a1a61495852074869b244064cf535b4c1Dake Gu 336a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult setupDefaultPresenterWithSingleElement(final boolean isUsingZorder, 337a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow, 338a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner, 339a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled, 340a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground) { 341a23c768a1a61495852074869b244064cf535b4c1Dake Gu ArrayObjectAdapter adapter = new ArrayObjectAdapter(new DummyPresenter()); 342a23c768a1a61495852074869b244064cf535b4c1Dake Gu adapter.add("abc"); 343a23c768a1a61495852074869b244064cf535b4c1Dake Gu ListRowPresenter listRowPresenter = new ListRowPresenter() { 344a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 345a23c768a1a61495852074869b244064cf535b4c1Dake Gu public boolean isUsingZOrder(Context context) { 346a23c768a1a61495852074869b244064cf535b4c1Dake Gu return isUsingZorder; 347a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 348a23c768a1a61495852074869b244064cf535b4c1Dake Gu 349a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 350a23c768a1a61495852074869b244064cf535b4c1Dake Gu public boolean isUsingDefaultShadow() { 351a23c768a1a61495852074869b244064cf535b4c1Dake Gu return isUsingDefaultShadow; 352a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 353534be4efda1eec8ed48f9e70a4ea4482975bbb58Dake Gu 354534be4efda1eec8ed48f9e70a4ea4482975bbb58Dake Gu @Override 3559ba32514a3e522d4a2602a2bb97eb530d8447d35Dake Gu public boolean isUsingOutlineClipping(Context context) { 356534be4efda1eec8ed48f9e70a4ea4482975bbb58Dake Gu // force to use ViewOutline for rounded corner test 357534be4efda1eec8ed48f9e70a4ea4482975bbb58Dake Gu return true; 358534be4efda1eec8ed48f9e70a4ea4482975bbb58Dake Gu } 359a23c768a1a61495852074869b244064cf535b4c1Dake Gu }; 360a23c768a1a61495852074869b244064cf535b4c1Dake Gu listRowPresenter.setShadowEnabled(shadowEnabled); 361a23c768a1a61495852074869b244064cf535b4c1Dake Gu listRowPresenter.enableChildRoundedCorners(enableRoundedCorner); 362a23c768a1a61495852074869b244064cf535b4c1Dake Gu listRowPresenter.setKeepChildForeground(keepChildForeground); 363a23c768a1a61495852074869b244064cf535b4c1Dake Gu setup(listRowPresenter, adapter); 364a23c768a1a61495852074869b244064cf535b4c1Dake Gu InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 365a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Override 366a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void run() { 367a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListVh.getGridView().setItemAnimator(null); 368a23c768a1a61495852074869b244064cf535b4c1Dake Gu mListRowPresenter.setSelectLevel(mListVh, 0.5f); 369a23c768a1a61495852074869b244064cf535b4c1Dake Gu View child = mListVh.getGridView().getChildAt(0); 370a23c768a1a61495852074869b244064cf535b4c1Dake Gu FocusHighlightHelper.FocusAnimator animator = (FocusHighlightHelper.FocusAnimator) 371a23c768a1a61495852074869b244064cf535b4c1Dake Gu child.getTag(R.id.lb_focus_animator); 372a23c768a1a61495852074869b244064cf535b4c1Dake Gu animator.animateFocus(true, true); 373a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 374a23c768a1a61495852074869b244064cf535b4c1Dake Gu }); 375a23c768a1a61495852074869b244064cf535b4c1Dake Gu return collectResult(); 376a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 377a23c768a1a61495852074869b244064cf535b4c1Dake Gu 378a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult collectResult() { 379a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = new ShadowOverlayResult(); 380a23c768a1a61495852074869b244064cf535b4c1Dake Gu View view = mListVh.getGridView().getChildAt(0); 381a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (view instanceof ShadowOverlayContainer) { 382a23c768a1a61495852074869b244064cf535b4c1Dake Gu result.mShadowOverlayContainer = true; 383a23c768a1a61495852074869b244064cf535b4c1Dake Gu result.mShadowOverlayContainerOverlayColor = ((ShadowOverlayContainer) view) 384a23c768a1a61495852074869b244064cf535b4c1Dake Gu .mOverlayColor; 385a23c768a1a61495852074869b244064cf535b4c1Dake Gu result.mShadowOverlayContainerOverlayZ = ViewCompat.getZ(view); 386a23c768a1a61495852074869b244064cf535b4c1Dake Gu result.mShadowOverlayContainerOpticalBounds = view.getWidth() > 100; 38701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.mShadowOverlayContainerClipToOutline = Build.VERSION.SDK_INT >= 21 38801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu ? view.getClipToOutline() : false; 389a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 390a23c768a1a61495852074869b244064cf535b4c1Dake Gu result.mShadowOverlayContainer = false; 391a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 392a23c768a1a61495852074869b244064cf535b4c1Dake Gu view = view.findViewById(R.id.lb_action_button); 393a23c768a1a61495852074869b244064cf535b4c1Dake Gu Drawable d = getForeground(view); 394a23c768a1a61495852074869b244064cf535b4c1Dake Gu result.mViewOverlayColor = d instanceof ColorDrawable ? ((ColorDrawable) d).getColor() 395a23c768a1a61495852074869b244064cf535b4c1Dake Gu : Color.TRANSPARENT; 396a23c768a1a61495852074869b244064cf535b4c1Dake Gu result.mViewZ = ViewCompat.getZ(view); 397a23c768a1a61495852074869b244064cf535b4c1Dake Gu result.mViewOpticalBounds = view.getWidth() > 100; 39801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.mViewClipToOutline = Build.VERSION.SDK_INT >= 21 ? view.getClipToOutline() : false; 399a23c768a1a61495852074869b244064cf535b4c1Dake Gu return result; 400a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 401a23c768a1a61495852074869b244064cf535b4c1Dake Gu 402a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 403a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest01() { 404a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 405a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 406a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 407a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 408a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 409a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 410a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 411a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 412a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 413a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 41401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 41501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 416a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 417a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 41801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 41901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 420a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 421a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 42201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 42301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, false); 424a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 425a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 426a23c768a1a61495852074869b244064cf535b4c1Dake Gu 427a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 428a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest02() { 429a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 430a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 431a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 432a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 433a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 434a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 435a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 436a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 437a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 438a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 43901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 44001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 441a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 442a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 44301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 44401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 445a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 446a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 44701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 44801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 449a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 450a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 451a23c768a1a61495852074869b244064cf535b4c1Dake Gu 452a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 453a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest03() { 454a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 455a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 456a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 457a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 458a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 459a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 460a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 461a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 462a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 463a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 46401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 46501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 466a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 467a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 46801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 46901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 470a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 471a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 47201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 47301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, false); 474a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 475a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 476a23c768a1a61495852074869b244064cf535b4c1Dake Gu 477a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 478a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest04() { 479a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 480a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 481a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 482a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 483a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 484a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 485a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 486a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 487a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 488a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 48901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 49001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 491a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 492a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 49301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 49401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 495a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 496a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 49701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 49801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 499a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 500a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 501a23c768a1a61495852074869b244064cf535b4c1Dake Gu 502a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 503a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest05() { 504a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 505a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 506a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 507a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 508a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 509a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 510a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 511a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 512a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 513a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 51401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 51501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 516a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 517a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 5180521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 5190521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 520a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 521a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 52201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 52301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, true); 524a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 525a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 526a23c768a1a61495852074869b244064cf535b4c1Dake Gu 527a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 528a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest06() { 529a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 530a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 531a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 532a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 533a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 534a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 535a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 536a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 537a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 538a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 53901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 54001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 541a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 542a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 5430521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 5440521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 545a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 546a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 5470521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 5480521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 549a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 550a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 551a23c768a1a61495852074869b244064cf535b4c1Dake Gu 552a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 553a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest07() { 554a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 555a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 556a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 557a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 558a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 559a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 560a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 561a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 562a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 563a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 56401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 56501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 566a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 567a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 5680521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 5690521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 570a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 571a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 57201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 57301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, true); 574a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 575a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 576a23c768a1a61495852074869b244064cf535b4c1Dake Gu 577a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 578a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest08() { 579a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 580a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 581a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 582a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 583a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 584a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 585a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 586a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 587a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 588a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 58901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 59001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 591a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 592a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 5930521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 5940521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 595a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 596a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 5970521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 5980521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 599a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 600a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 601a23c768a1a61495852074869b244064cf535b4c1Dake Gu 602a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 603a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest09() { 604a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 605a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 606a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 607a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 608a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 609a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 610a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 611a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 612a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 613a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 61401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 61501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 616a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 617a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 61801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 61901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 620a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 621a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 62201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 62301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, false); 624a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 625a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 626a23c768a1a61495852074869b244064cf535b4c1Dake Gu 627a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 628a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest10() { 629a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 630a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 631a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 632a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 633a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 634a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 635a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 636a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 637a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 638a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 63901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 64001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 641a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 642a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 64301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 64401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 645a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 646a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 64701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 64801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 649a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 650a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 651a23c768a1a61495852074869b244064cf535b4c1Dake Gu 652a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 653a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest11() { 654a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 655a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 656a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 657a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 658a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 659a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 660a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 661a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 662a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 663a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 66401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 66501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 666a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 667a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 66801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, true, false, 66901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 670a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 671a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 67201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, true, false, 67301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 674a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 675a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 676a23c768a1a61495852074869b244064cf535b4c1Dake Gu 677a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 678a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest12() { 679a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 680a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 681a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 682a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 683a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 684a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 685a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 686a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 687a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 688a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 68901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 69001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 691a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 692a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 69301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, true, false, 69401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 695a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 696a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 69701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, true, false, 69801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 699a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 700a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 701a23c768a1a61495852074869b244064cf535b4c1Dake Gu 702a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 703a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest13() { 704a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 705a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 706a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 707a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 708a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 709a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 710a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 711a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 712a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 713a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 71401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 71501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 716a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 717a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 7180521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 7190521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 720a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 721a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 72201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 72301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, true); 724a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 725a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 726a23c768a1a61495852074869b244064cf535b4c1Dake Gu 727a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 728a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest14() { 729a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 730a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 731a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 732a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 733a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 734a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 735a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 736a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 737a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 738a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 73901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 74001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 741a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 742a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 7430521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 7440521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 745a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 746a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 7470521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 7480521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 749a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 750a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 751a23c768a1a61495852074869b244064cf535b4c1Dake Gu 752a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 753a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest15() { 754a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 755a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 756a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 757a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 758a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 759a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 760a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 761a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 762a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 763a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 76401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 76501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 766a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 767a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 7680521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, true, true, 7690521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 770a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 771a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 7720521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, true, true, 7730521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 774a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 775a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 776a23c768a1a61495852074869b244064cf535b4c1Dake Gu 777a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 778a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest16() { 779a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = false; 780a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 781a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 782a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 783a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 784a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 785a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 786a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 787a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 788a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 78901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 79001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 791a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 792a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 7930521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, true, true, 7940521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 795a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 796a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 7970521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, true, true, 7980521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 799a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 800a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 801a23c768a1a61495852074869b244064cf535b4c1Dake Gu 802a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 803a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest17() { 804a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 805a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 806a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 807a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 808a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 809a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 810a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 811a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 812a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 813a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 81401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 81501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 816a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 817a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 81801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 81901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 820a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 821a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 82201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 82301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, false); 824a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 825a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 826a23c768a1a61495852074869b244064cf535b4c1Dake Gu 827a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 828a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest18() { 829a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 830a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 831a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 832a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 833a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 834a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 835a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 836a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 837a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 838a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 83901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 84001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 841a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 842a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 84301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 84401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 845a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 846a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 84701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 84801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 849a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 850a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 851a23c768a1a61495852074869b244064cf535b4c1Dake Gu 852a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 853a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest19() { 854a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 855a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 856a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 857a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 858a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 859a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 860a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 861a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 862a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 863a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 86401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 86501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 866a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 867a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 86801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 86901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 870a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 871a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 87201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 87301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, false); 874a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 875a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 876a23c768a1a61495852074869b244064cf535b4c1Dake Gu 877a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 878a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest20() { 879a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 880a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 881a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 882a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 883a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 884a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 885a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 886a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 887a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 888a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 88901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 89001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 891a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 892a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 89301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 89401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 895a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 896a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 89701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 89801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 899a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 900a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 901a23c768a1a61495852074869b244064cf535b4c1Dake Gu 902a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 903a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest21() { 904a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 905a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 906a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 907a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 908a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 909a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 910a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 911a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 912a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 913a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 91401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 91501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 916a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 917a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 9180521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 9190521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 920a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 921a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 92201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 92301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, true); 924a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 925a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 926a23c768a1a61495852074869b244064cf535b4c1Dake Gu 927a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 928a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest22() { 929a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 930a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 931a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 932a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 933a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 934a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 935a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 936a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 937a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 938a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 93901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 94001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 941a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 942a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 9430521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 9440521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 945a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 946a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 9470521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 9480521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 949a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 950a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 951a23c768a1a61495852074869b244064cf535b4c1Dake Gu 952a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 953a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest23() { 954a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 955a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 956a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 957a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 958a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 959a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 960a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 961a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 962a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 963a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 96401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 96501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 966a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 967a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 9680521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 9690521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 970a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 971a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 97201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 97301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, true); 974a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 975a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 976a23c768a1a61495852074869b244064cf535b4c1Dake Gu 977a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 978a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest24() { 979a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 980a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = false; 981a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 982a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 983a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 984a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 985a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 986a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 987a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 988a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 98901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 99001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 991a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 992a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 9930521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 9940521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 995a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 996a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 9970521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 9980521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 999a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1000a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1001a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1002a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1003a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest25() { 1004a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 1005a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 1006a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 1007a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 1008a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 1009a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1010a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1011a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1012a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1013a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 101401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 101501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1016a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 1017a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 101801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 101901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1020a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1021a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 102201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 102301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, false); 1024a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1025a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1026a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1027a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1028a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest26() { 1029a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 1030a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 1031a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 1032a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 1033a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 1034a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1035a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1036a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1037a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1038a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 103901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 104001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1041a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 1042a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 104301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 104401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1045a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1046a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 104701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 104801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1049a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1050a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1051a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1052a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1053a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest27() { 1054a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 1055a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 1056a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 1057a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 1058a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 1059a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1060a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1061a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1062a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1063a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 106401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 106501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1066a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 1067a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 106801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, false, 106901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1070a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1071a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 107201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 107301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, sFocusedZ, false, false); 1074a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1075a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1076a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1077a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1078a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest28() { 1079a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 1080a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 1081a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = false; 1082a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 1083a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 1084a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1085a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1086a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1087a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1088a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 108901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 109001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1091a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 1092a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 109301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, false, 109401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1095a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1096a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 109701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, false, 109801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1099a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1100a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1101a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1102a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1103a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest29() { 1104a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 1105a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 1106a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 1107a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 1108a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 1109a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1110a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1111a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1112a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1113a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 111401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 111501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1116a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 1117a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 11180521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 11190521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 1120a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1121a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 112201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 112301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, 0, false, true); 1124a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1125a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1126a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1127a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1128a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest30() { 1129a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 1130a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 1131a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 1132a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = false; 1133a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 1134a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1135a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1136a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1137a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1138a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 113901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 114001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1141a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 1142a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 11430521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 11440521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 1145a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1146a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 11470521fad0d52093efa336d562928327a7260b70daDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 11480521fad0d52093efa336d562928327a7260b70daDake Gu 0, 0, false, false); 1149a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1150a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1151a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1152a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1153a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest31() { 1154a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 1155a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 1156a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 1157a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 1158a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = false; 1159a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1160a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1161a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1162a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1163a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 116401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 116501a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1166a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 1167a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 116801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, true, 116901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1170a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1171a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 117201a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(false, 0, 0, false, false, 117301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu HALF_OVERLAY_COLOR, sFocusedZ, false, true); 1174a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1175a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1176a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1177a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1178a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTest32() { 1179a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingZorder = true; 1180a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean isUsingDefaultShadow = true; 1181a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean enableRoundedCorner = true; 1182a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean shadowEnabled = true; 1183a23c768a1a61495852074869b244064cf535b4c1Dake Gu final boolean keepChildForeground = true; 1184a23c768a1a61495852074869b244064cf535b4c1Dake Gu ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1185a23c768a1a61495852074869b244064cf535b4c1Dake Gu isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1186a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1187a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1188a23c768a1a61495852074869b244064cf535b4c1Dake Gu // nothing supported 118901a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 119001a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1191a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else if (version < 23) { 1192a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports static/dynamic shadow, supports rounded corner 119301a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, true, 119401a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1195a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1196a23c768a1a61495852074869b244064cf535b4c1Dake Gu // supports foreground 119701a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, true, 119801a567100c9b8120d590e9e9f4cc6395ab0159feDake Gu 0, 0, false, false); 1199a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1200a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1201a23c768a1a61495852074869b244064cf535b4c1Dake Gu 1202a23c768a1a61495852074869b244064cf535b4c1Dake Gu @Test 1203a23c768a1a61495852074869b244064cf535b4c1Dake Gu public void shadowOverlayContainerTestDefaultSettings() { 1204a23c768a1a61495852074869b244064cf535b4c1Dake Gu ListRowPresenter presenter = new ListRowPresenter(); 1205a23c768a1a61495852074869b244064cf535b4c1Dake Gu final int version = Build.VERSION.SDK_INT; 1206a23c768a1a61495852074869b244064cf535b4c1Dake Gu if (version < 21) { 1207a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertFalse(presenter.isUsingZOrder(mContext)); 1208a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertFalse(presenter.isUsingDefaultShadow()); 1209a23c768a1a61495852074869b244064cf535b4c1Dake Gu } else { 1210a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertTrue(presenter.isUsingZOrder(mContext)); 1211a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertTrue(presenter.isUsingDefaultShadow()); 1212a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1213a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertTrue(presenter.areChildRoundedCornersEnabled()); 1214a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertTrue(presenter.getShadowEnabled()); 1215a23c768a1a61495852074869b244064cf535b4c1Dake Gu assertTrue(presenter.isKeepChildForeground()); 1216a23c768a1a61495852074869b244064cf535b4c1Dake Gu } 1217a23c768a1a61495852074869b244064cf535b4c1Dake Gu} 1218