1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.leanback.widget; 18 19 import static org.junit.Assert.assertEquals; 20 import static org.junit.Assert.assertFalse; 21 import static org.junit.Assert.assertTrue; 22 23 import android.content.Context; 24 import android.graphics.Color; 25 import android.graphics.drawable.ColorDrawable; 26 import android.graphics.drawable.Drawable; 27 import android.os.Build; 28 import android.support.test.InstrumentationRegistry; 29 import android.support.test.filters.SmallTest; 30 import android.support.test.runner.AndroidJUnit4; 31 import android.view.View; 32 import android.view.ViewGroup; 33 import android.widget.FrameLayout; 34 35 import androidx.core.view.ViewCompat; 36 import androidx.leanback.R; 37 38 import org.junit.Test; 39 import org.junit.runner.RunWith; 40 41 @RunWith(AndroidJUnit4.class) 42 @SmallTest 43 public class ListRowPresenterTest { 44 45 static final float DELTA = 1f; 46 // default overlay color when setSelectLevel(0.5f) 47 static final int HALF_OVERLAY_COLOR = 0x4C000000; 48 static int sFocusedZ; 49 50 static class DummyPresenter extends Presenter { 51 int mWidth; 52 int mHeight; 53 54 DummyPresenter() { 55 this(100, 100); 56 } 57 58 DummyPresenter(int width, int height) { 59 mWidth = width; 60 mHeight = height; 61 } 62 63 @Override 64 public ViewHolder onCreateViewHolder(ViewGroup parent) { 65 View view = new View(parent.getContext()); 66 view.setFocusable(true); 67 view.setId(R.id.lb_action_button); 68 view.setLayoutParams(new ViewGroup.LayoutParams(mWidth, mHeight)); 69 return new Presenter.ViewHolder(view); 70 } 71 72 @Override 73 public void onBindViewHolder(ViewHolder viewHolder, Object item) { 74 } 75 76 @Override 77 public void onUnbindViewHolder(ViewHolder viewHolder) { 78 } 79 } 80 81 Context mContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 82 ListRowPresenter mListRowPresenter; 83 ListRow mRow; 84 ListRowPresenter.ViewHolder mListVh; 85 86 void setup(ListRowPresenter listRowPresenter, ObjectAdapter adapter) { 87 sFocusedZ = mContext.getResources().getDimensionPixelSize( 88 R.dimen.lb_material_shadow_focused_z); 89 assertTrue(sFocusedZ > 0); 90 mListRowPresenter = listRowPresenter; 91 mRow = new ListRow(adapter); 92 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 93 @Override 94 public void run() { 95 final ViewGroup parent = new FrameLayout(mContext); 96 Presenter.ViewHolder containerVh = mListRowPresenter.onCreateViewHolder(parent); 97 parent.addView(containerVh.view, 1000, 1000); 98 mListVh = (ListRowPresenter.ViewHolder) mListRowPresenter.getRowViewHolder( 99 containerVh); 100 mListRowPresenter.onBindViewHolder(mListVh, mRow); 101 runRecyclerViewLayout(); 102 } 103 }); 104 } 105 106 void runRecyclerViewLayout() { 107 mListVh.view.measure(View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY), 108 View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY)); 109 mListVh.view.layout(0, 0, 1000, 1000); 110 } 111 112 static void assertChildrenHaveAlpha(ViewGroup group, int numChildren, float alpha) { 113 assertEquals(numChildren, group.getChildCount()); 114 for (int i = 0; i < numChildren; i++) { 115 assertEquals(alpha, group.getChildAt(i).getAlpha(), 0.01f); 116 } 117 } 118 119 static Drawable getForeground(View view) { 120 if (Build.VERSION.SDK_INT >= 23) { 121 return view.getForeground(); 122 } 123 return null; 124 } 125 126 static void assertChildrenHaveColorOverlay(ViewGroup group, int numChildren, int overlayColor, 127 boolean keepChildForeground) { 128 assertEquals(numChildren, group.getChildCount()); 129 for (int i = 0; i < numChildren; i++) { 130 View view = group.getChildAt(i); 131 if (keepChildForeground) { 132 assertTrue("When keepChildForeground, always create a" 133 + " ShadowOverlayContainer", view instanceof ShadowOverlayContainer); 134 assertEquals(overlayColor, ((ShadowOverlayContainer) view).mOverlayColor); 135 } else { 136 if (view instanceof ShadowOverlayContainer) { 137 assertEquals(overlayColor, ((ShadowOverlayContainer) view).mOverlayColor); 138 } else { 139 Drawable foreground = getForeground(view); 140 assertEquals(overlayColor, 141 foreground instanceof ColorDrawable 142 ? ((ColorDrawable) foreground).getColor() : Color.TRANSPARENT); 143 } 144 } 145 } 146 } 147 148 @Test 149 public void measureWithScrapViewHeight() { 150 final ArrayObjectAdapter arrayAdapter = new ArrayObjectAdapter( 151 new DummyPresenter(100, 213)); 152 arrayAdapter.add("abc"); 153 mListRowPresenter = new ListRowPresenter(); 154 mRow = new ListRow(arrayAdapter); 155 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 156 @Override 157 public void run() { 158 final ViewGroup parent = new FrameLayout(mContext); 159 Presenter.ViewHolder containerVh = mListRowPresenter.onCreateViewHolder(parent); 160 parent.addView(containerVh.view, 1000, ViewGroup.LayoutParams.WRAP_CONTENT); 161 mListVh = (ListRowPresenter.ViewHolder) mListRowPresenter.getRowViewHolder( 162 containerVh); 163 mListRowPresenter.onBindViewHolder(mListVh, mRow); 164 mListVh.view.measure( 165 View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.AT_MOST), 166 View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 167 } 168 }); 169 // measure hight should equals item height plus top and bottom paddings 170 assertEquals(213 + mListVh.view.getPaddingTop() + mListVh.view.getPaddingBottom(), 171 mListVh.view.getMeasuredHeight()); 172 } 173 174 public void defaultListRowOverlayColor(ListRowPresenter listRowPresenter) { 175 final ArrayObjectAdapter arrayAdapter = new ArrayObjectAdapter(new DummyPresenter()); 176 arrayAdapter.add("abc"); 177 setup(listRowPresenter, arrayAdapter); 178 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 179 @Override 180 public void run() { 181 mListVh.getGridView().setItemAnimator(null); 182 mListRowPresenter.setSelectLevel(mListVh, 0.5f); 183 } 184 }); 185 boolean keepChildForeground = listRowPresenter.isKeepChildForeground(); 186 assertChildrenHaveColorOverlay(mListVh.getGridView(), 1, HALF_OVERLAY_COLOR, 187 keepChildForeground); 188 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 189 @Override 190 public void run() { 191 arrayAdapter.add("def"); 192 runRecyclerViewLayout(); 193 } 194 }); 195 assertChildrenHaveColorOverlay(mListVh.getGridView(), 2, HALF_OVERLAY_COLOR, 196 keepChildForeground); 197 } 198 199 @Test 200 public void defaultListRowOverlayColor() { 201 defaultListRowOverlayColor(new ListRowPresenter()); 202 } 203 204 @Test 205 public void defaultListRowOverlayColorCombinations() { 206 for (boolean keepChildForeground: new boolean[] {false, true}) { 207 for (boolean isUzingZorder : new boolean[]{false, true}) { 208 for (boolean isUsingDefaultShadow : new boolean[]{false, true}) { 209 for (boolean enableRoundedCorner : new boolean[]{false, true}) { 210 for (boolean shadowEnabled : new boolean[]{false, true}) { 211 final boolean paramIsUsingZorder = isUzingZorder; 212 final boolean paramIsUsingDefaultShadow = isUsingDefaultShadow; 213 ListRowPresenter presenter = new ListRowPresenter() { 214 @Override 215 public boolean isUsingZOrder(Context context) { 216 return paramIsUsingZorder; 217 } 218 219 @Override 220 public boolean isUsingDefaultShadow() { 221 return paramIsUsingDefaultShadow; 222 } 223 }; 224 presenter.setKeepChildForeground(keepChildForeground); 225 presenter.setShadowEnabled(shadowEnabled); 226 presenter.enableChildRoundedCorners(enableRoundedCorner); 227 defaultListRowOverlayColor(presenter); 228 } 229 } 230 } 231 } 232 } 233 } 234 235 static class CustomSelectEffectRowPresenter extends ListRowPresenter { 236 @Override 237 public boolean isUsingDefaultListSelectEffect() { 238 return false; 239 } 240 241 @Override 242 protected void applySelectLevelToChild(ViewHolder rowViewHolder, View childView) { 243 childView.setAlpha(rowViewHolder.getSelectLevel()); 244 } 245 }; 246 247 public void customListRowSelectEffect(ListRowPresenter presenter) { 248 final ArrayObjectAdapter arrayAdapter = new ArrayObjectAdapter(new DummyPresenter()); 249 arrayAdapter.add("abc"); 250 setup(presenter, arrayAdapter); 251 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 252 @Override 253 public void run() { 254 mListVh.getGridView().setItemAnimator(null); 255 mListRowPresenter.setSelectLevel(mListVh, 0.5f); 256 } 257 }); 258 assertChildrenHaveAlpha(mListVh.getGridView(), 1, 0.5f); 259 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 260 @Override 261 public void run() { 262 arrayAdapter.add("def"); 263 runRecyclerViewLayout(); 264 } 265 }); 266 assertChildrenHaveAlpha(mListVh.getGridView(), 2, 0.5f); 267 } 268 269 @Test 270 public void customListRowSelectEffect() { 271 customListRowSelectEffect(new CustomSelectEffectRowPresenter()); 272 } 273 274 @Test 275 public void customListRowSelectEffectCombinations() { 276 for (boolean keepChildForeground: new boolean[] {false, true}) { 277 for (boolean isUzingZorder: new boolean[] {false, true}) { 278 for (boolean isUsingDefaultShadow: new boolean[] {false, true}) { 279 for (boolean enableRoundedCorner : new boolean[]{false, true}) { 280 for (boolean shadowEnabled : new boolean[]{false, true}) { 281 final boolean paramIsUsingZorder = isUzingZorder; 282 final boolean paramIsUsingDefaultShadow = isUsingDefaultShadow; 283 ListRowPresenter presenter = new CustomSelectEffectRowPresenter() { 284 @Override 285 public boolean isUsingZOrder(Context context) { 286 return paramIsUsingZorder; 287 } 288 289 @Override 290 public boolean isUsingDefaultShadow() { 291 return paramIsUsingDefaultShadow; 292 } 293 }; 294 presenter.setKeepChildForeground(keepChildForeground); 295 presenter.setShadowEnabled(shadowEnabled); 296 presenter.enableChildRoundedCorners(enableRoundedCorner); 297 customListRowSelectEffect(presenter); 298 } 299 } 300 } 301 } 302 } 303 } 304 305 static class ShadowOverlayResult { 306 boolean mShadowOverlayContainer; 307 int mShadowOverlayContainerOverlayColor; 308 float mShadowOverlayContainerOverlayZ; 309 boolean mShadowOverlayContainerOpticalBounds; 310 boolean mShadowOverlayContainerClipToOutline; 311 int mViewOverlayColor; 312 float mViewZ; 313 boolean mViewOpticalBounds; 314 boolean mViewClipToOutline; 315 void expect(boolean shadowOverlayContainer, int shadowOverlayContainerOverlayColor, 316 float shadowOverlayContainerOverlayZ, boolean shadowOverlayContainerOpticalBounds, 317 boolean shadowOverlayContainerClipToOutline, 318 int viewOverlayColor, float viewZ, boolean viewOpticalBounds, 319 boolean viewClipToOutline) { 320 assertEquals(this.mShadowOverlayContainer, shadowOverlayContainer); 321 assertEquals(this.mShadowOverlayContainerOverlayColor, 322 shadowOverlayContainerOverlayColor); 323 assertEquals(this.mShadowOverlayContainerOverlayZ, shadowOverlayContainerOverlayZ, 324 DELTA); 325 assertEquals(this.mShadowOverlayContainerOpticalBounds, 326 shadowOverlayContainerOpticalBounds); 327 assertEquals(this.mShadowOverlayContainerClipToOutline, 328 shadowOverlayContainerClipToOutline); 329 assertEquals(this.mViewOverlayColor, viewOverlayColor); 330 assertEquals(this.mViewZ, viewZ, DELTA); 331 assertEquals(this.mViewOpticalBounds, viewOpticalBounds); 332 assertEquals(this.mViewClipToOutline, viewClipToOutline); 333 } 334 } 335 336 ShadowOverlayResult setupDefaultPresenterWithSingleElement(final boolean isUsingZorder, 337 final boolean isUsingDefaultShadow, 338 final boolean enableRoundedCorner, 339 final boolean shadowEnabled, 340 final boolean keepChildForeground) { 341 ArrayObjectAdapter adapter = new ArrayObjectAdapter(new DummyPresenter()); 342 adapter.add("abc"); 343 ListRowPresenter listRowPresenter = new ListRowPresenter() { 344 @Override 345 public boolean isUsingZOrder(Context context) { 346 return isUsingZorder; 347 } 348 349 @Override 350 public boolean isUsingDefaultShadow() { 351 return isUsingDefaultShadow; 352 } 353 354 @Override 355 public boolean isUsingOutlineClipping(Context context) { 356 // force to use ViewOutline for rounded corner test 357 return true; 358 } 359 }; 360 listRowPresenter.setShadowEnabled(shadowEnabled); 361 listRowPresenter.enableChildRoundedCorners(enableRoundedCorner); 362 listRowPresenter.setKeepChildForeground(keepChildForeground); 363 setup(listRowPresenter, adapter); 364 InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { 365 @Override 366 public void run() { 367 mListVh.getGridView().setItemAnimator(null); 368 mListRowPresenter.setSelectLevel(mListVh, 0.5f); 369 View child = mListVh.getGridView().getChildAt(0); 370 FocusHighlightHelper.FocusAnimator animator = (FocusHighlightHelper.FocusAnimator) 371 child.getTag(R.id.lb_focus_animator); 372 animator.animateFocus(true, true); 373 } 374 }); 375 return collectResult(); 376 } 377 378 ShadowOverlayResult collectResult() { 379 ShadowOverlayResult result = new ShadowOverlayResult(); 380 View view = mListVh.getGridView().getChildAt(0); 381 if (view instanceof ShadowOverlayContainer) { 382 result.mShadowOverlayContainer = true; 383 result.mShadowOverlayContainerOverlayColor = ((ShadowOverlayContainer) view) 384 .mOverlayColor; 385 result.mShadowOverlayContainerOverlayZ = ViewCompat.getZ(view); 386 result.mShadowOverlayContainerOpticalBounds = view.getWidth() > 100; 387 result.mShadowOverlayContainerClipToOutline = Build.VERSION.SDK_INT >= 21 388 ? view.getClipToOutline() : false; 389 } else { 390 result.mShadowOverlayContainer = false; 391 } 392 view = view.findViewById(R.id.lb_action_button); 393 Drawable d = getForeground(view); 394 result.mViewOverlayColor = d instanceof ColorDrawable ? ((ColorDrawable) d).getColor() 395 : Color.TRANSPARENT; 396 result.mViewZ = ViewCompat.getZ(view); 397 result.mViewOpticalBounds = view.getWidth() > 100; 398 result.mViewClipToOutline = Build.VERSION.SDK_INT >= 21 ? view.getClipToOutline() : false; 399 return result; 400 } 401 402 @Test 403 public void shadowOverlayContainerTest01() { 404 final boolean isUsingZorder = false; 405 final boolean isUsingDefaultShadow = false; 406 final boolean enableRoundedCorner = false; 407 final boolean shadowEnabled = false; 408 final boolean keepChildForeground = false; 409 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 410 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 411 final int version = Build.VERSION.SDK_INT; 412 if (version < 21) { 413 // nothing supported 414 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 415 0, 0, false, false); 416 } else if (version < 23) { 417 // supports static/dynamic shadow, supports rounded corner 418 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 419 0, 0, false, false); 420 } else { 421 // supports foreground 422 result.expect(false, 0, 0, false, false, 423 HALF_OVERLAY_COLOR, 0, false, false); 424 } 425 } 426 427 @Test 428 public void shadowOverlayContainerTest02() { 429 final boolean isUsingZorder = false; 430 final boolean isUsingDefaultShadow = false; 431 final boolean enableRoundedCorner = false; 432 final boolean shadowEnabled = false; 433 final boolean keepChildForeground = true; 434 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 435 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 436 final int version = Build.VERSION.SDK_INT; 437 if (version < 21) { 438 // nothing supported 439 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 440 0, 0, false, false); 441 } else if (version < 23) { 442 // supports static/dynamic shadow, supports rounded corner 443 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 444 0, 0, false, false); 445 } else { 446 // supports foreground 447 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 448 0, 0, false, false); 449 } 450 } 451 452 @Test 453 public void shadowOverlayContainerTest03() { 454 final boolean isUsingZorder = false; 455 final boolean isUsingDefaultShadow = false; 456 final boolean enableRoundedCorner = false; 457 final boolean shadowEnabled = true; 458 final boolean keepChildForeground = false; 459 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 460 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 461 final int version = Build.VERSION.SDK_INT; 462 if (version < 21) { 463 // nothing supported 464 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 465 0, 0, false, false); 466 } else if (version < 23) { 467 // supports static/dynamic shadow, supports rounded corner 468 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 469 0, 0, false, false); 470 } else { 471 // supports foreground 472 result.expect(false, 0, 0, false, false, 473 HALF_OVERLAY_COLOR, 0, false, false); 474 } 475 } 476 477 @Test 478 public void shadowOverlayContainerTest04() { 479 final boolean isUsingZorder = false; 480 final boolean isUsingDefaultShadow = false; 481 final boolean enableRoundedCorner = false; 482 final boolean shadowEnabled = true; 483 final boolean keepChildForeground = true; 484 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 485 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 486 final int version = Build.VERSION.SDK_INT; 487 if (version < 21) { 488 // nothing supported 489 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 490 0, 0, false, false); 491 } else if (version < 23) { 492 // supports static/dynamic shadow, supports rounded corner 493 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 494 0, 0, false, false); 495 } else { 496 // supports foreground 497 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 498 0, 0, false, false); 499 } 500 } 501 502 @Test 503 public void shadowOverlayContainerTest05() { 504 final boolean isUsingZorder = false; 505 final boolean isUsingDefaultShadow = false; 506 final boolean enableRoundedCorner = true; 507 final boolean shadowEnabled = false; 508 final boolean keepChildForeground = false; 509 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 510 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 511 final int version = Build.VERSION.SDK_INT; 512 if (version < 21) { 513 // nothing supported 514 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 515 0, 0, false, false); 516 } else if (version < 23) { 517 // supports static/dynamic shadow, supports rounded corner 518 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 519 0, 0, false, false); 520 } else { 521 // supports foreground 522 result.expect(false, 0, 0, false, false, 523 HALF_OVERLAY_COLOR, 0, false, true); 524 } 525 } 526 527 @Test 528 public void shadowOverlayContainerTest06() { 529 final boolean isUsingZorder = false; 530 final boolean isUsingDefaultShadow = false; 531 final boolean enableRoundedCorner = true; 532 final boolean shadowEnabled = false; 533 final boolean keepChildForeground = true; 534 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 535 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 536 final int version = Build.VERSION.SDK_INT; 537 if (version < 21) { 538 // nothing supported 539 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 540 0, 0, false, false); 541 } else if (version < 23) { 542 // supports static/dynamic shadow, supports rounded corner 543 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 544 0, 0, false, false); 545 } else { 546 // supports foreground 547 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 548 0, 0, false, false); 549 } 550 } 551 552 @Test 553 public void shadowOverlayContainerTest07() { 554 final boolean isUsingZorder = false; 555 final boolean isUsingDefaultShadow = false; 556 final boolean enableRoundedCorner = true; 557 final boolean shadowEnabled = true; 558 final boolean keepChildForeground = false; 559 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 560 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 561 final int version = Build.VERSION.SDK_INT; 562 if (version < 21) { 563 // nothing supported 564 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 565 0, 0, false, false); 566 } else if (version < 23) { 567 // supports static/dynamic shadow, supports rounded corner 568 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 569 0, 0, false, false); 570 } else { 571 // supports foreground 572 result.expect(false, 0, 0, false, false, 573 HALF_OVERLAY_COLOR, 0, false, true); 574 } 575 } 576 577 @Test 578 public void shadowOverlayContainerTest08() { 579 final boolean isUsingZorder = false; 580 final boolean isUsingDefaultShadow = false; 581 final boolean enableRoundedCorner = true; 582 final boolean shadowEnabled = true; 583 final boolean keepChildForeground = true; 584 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 585 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 586 final int version = Build.VERSION.SDK_INT; 587 if (version < 21) { 588 // nothing supported 589 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 590 0, 0, false, false); 591 } else if (version < 23) { 592 // supports static/dynamic shadow, supports rounded corner 593 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 594 0, 0, false, false); 595 } else { 596 // supports foreground 597 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 598 0, 0, false, false); 599 } 600 } 601 602 @Test 603 public void shadowOverlayContainerTest09() { 604 final boolean isUsingZorder = false; 605 final boolean isUsingDefaultShadow = true; 606 final boolean enableRoundedCorner = false; 607 final boolean shadowEnabled = false; 608 final boolean keepChildForeground = false; 609 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 610 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 611 final int version = Build.VERSION.SDK_INT; 612 if (version < 21) { 613 // nothing supported 614 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 615 0, 0, false, false); 616 } else if (version < 23) { 617 // supports static/dynamic shadow, supports rounded corner 618 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 619 0, 0, false, false); 620 } else { 621 // supports foreground 622 result.expect(false, 0, 0, false, false, 623 HALF_OVERLAY_COLOR, 0, false, false); 624 } 625 } 626 627 @Test 628 public void shadowOverlayContainerTest10() { 629 final boolean isUsingZorder = false; 630 final boolean isUsingDefaultShadow = true; 631 final boolean enableRoundedCorner = false; 632 final boolean shadowEnabled = false; 633 final boolean keepChildForeground = true; 634 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 635 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 636 final int version = Build.VERSION.SDK_INT; 637 if (version < 21) { 638 // nothing supported 639 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 640 0, 0, false, false); 641 } else if (version < 23) { 642 // supports static/dynamic shadow, supports rounded corner 643 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 644 0, 0, false, false); 645 } else { 646 // supports foreground 647 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 648 0, 0, false, false); 649 } 650 } 651 652 @Test 653 public void shadowOverlayContainerTest11() { 654 final boolean isUsingZorder = false; 655 final boolean isUsingDefaultShadow = true; 656 final boolean enableRoundedCorner = false; 657 final boolean shadowEnabled = true; 658 final boolean keepChildForeground = false; 659 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 660 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 661 final int version = Build.VERSION.SDK_INT; 662 if (version < 21) { 663 // nothing supported 664 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 665 0, 0, false, false); 666 } else if (version < 23) { 667 // supports static/dynamic shadow, supports rounded corner 668 result.expect(true, HALF_OVERLAY_COLOR, 0, true, false, 669 0, 0, false, false); 670 } else { 671 // supports foreground 672 result.expect(true, HALF_OVERLAY_COLOR, 0, true, false, 673 0, 0, false, false); 674 } 675 } 676 677 @Test 678 public void shadowOverlayContainerTest12() { 679 final boolean isUsingZorder = false; 680 final boolean isUsingDefaultShadow = true; 681 final boolean enableRoundedCorner = false; 682 final boolean shadowEnabled = true; 683 final boolean keepChildForeground = true; 684 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 685 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 686 final int version = Build.VERSION.SDK_INT; 687 if (version < 21) { 688 // nothing supported 689 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 690 0, 0, false, false); 691 } else if (version < 23) { 692 // supports static/dynamic shadow, supports rounded corner 693 result.expect(true, HALF_OVERLAY_COLOR, 0, true, false, 694 0, 0, false, false); 695 } else { 696 // supports foreground 697 result.expect(true, HALF_OVERLAY_COLOR, 0, true, false, 698 0, 0, false, false); 699 } 700 } 701 702 @Test 703 public void shadowOverlayContainerTest13() { 704 final boolean isUsingZorder = false; 705 final boolean isUsingDefaultShadow = true; 706 final boolean enableRoundedCorner = true; 707 final boolean shadowEnabled = false; 708 final boolean keepChildForeground = false; 709 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 710 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 711 final int version = Build.VERSION.SDK_INT; 712 if (version < 21) { 713 // nothing supported 714 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 715 0, 0, false, false); 716 } else if (version < 23) { 717 // supports static/dynamic shadow, supports rounded corner 718 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 719 0, 0, false, false); 720 } else { 721 // supports foreground 722 result.expect(false, 0, 0, false, false, 723 HALF_OVERLAY_COLOR, 0, false, true); 724 } 725 } 726 727 @Test 728 public void shadowOverlayContainerTest14() { 729 final boolean isUsingZorder = false; 730 final boolean isUsingDefaultShadow = true; 731 final boolean enableRoundedCorner = true; 732 final boolean shadowEnabled = false; 733 final boolean keepChildForeground = true; 734 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 735 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 736 final int version = Build.VERSION.SDK_INT; 737 if (version < 21) { 738 // nothing supported 739 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 740 0, 0, false, false); 741 } else if (version < 23) { 742 // supports static/dynamic shadow, supports rounded corner 743 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 744 0, 0, false, false); 745 } else { 746 // supports foreground 747 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 748 0, 0, false, false); 749 } 750 } 751 752 @Test 753 public void shadowOverlayContainerTest15() { 754 final boolean isUsingZorder = false; 755 final boolean isUsingDefaultShadow = true; 756 final boolean enableRoundedCorner = true; 757 final boolean shadowEnabled = true; 758 final boolean keepChildForeground = false; 759 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 760 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 761 final int version = Build.VERSION.SDK_INT; 762 if (version < 21) { 763 // nothing supported 764 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 765 0, 0, false, false); 766 } else if (version < 23) { 767 // supports static/dynamic shadow, supports rounded corner 768 result.expect(true, HALF_OVERLAY_COLOR, 0, true, true, 769 0, 0, false, false); 770 } else { 771 // supports foreground 772 result.expect(true, HALF_OVERLAY_COLOR, 0, true, true, 773 0, 0, false, false); 774 } 775 } 776 777 @Test 778 public void shadowOverlayContainerTest16() { 779 final boolean isUsingZorder = false; 780 final boolean isUsingDefaultShadow = true; 781 final boolean enableRoundedCorner = true; 782 final boolean shadowEnabled = true; 783 final boolean keepChildForeground = true; 784 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 785 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 786 final int version = Build.VERSION.SDK_INT; 787 if (version < 21) { 788 // nothing supported 789 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 790 0, 0, false, false); 791 } else if (version < 23) { 792 // supports static/dynamic shadow, supports rounded corner 793 result.expect(true, HALF_OVERLAY_COLOR, 0, true, true, 794 0, 0, false, false); 795 } else { 796 // supports foreground 797 result.expect(true, HALF_OVERLAY_COLOR, 0, true, true, 798 0, 0, false, false); 799 } 800 } 801 802 @Test 803 public void shadowOverlayContainerTest17() { 804 final boolean isUsingZorder = true; 805 final boolean isUsingDefaultShadow = false; 806 final boolean enableRoundedCorner = false; 807 final boolean shadowEnabled = false; 808 final boolean keepChildForeground = false; 809 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 810 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 811 final int version = Build.VERSION.SDK_INT; 812 if (version < 21) { 813 // nothing supported 814 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 815 0, 0, false, false); 816 } else if (version < 23) { 817 // supports static/dynamic shadow, supports rounded corner 818 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 819 0, 0, false, false); 820 } else { 821 // supports foreground 822 result.expect(false, 0, 0, false, false, 823 HALF_OVERLAY_COLOR, 0, false, false); 824 } 825 } 826 827 @Test 828 public void shadowOverlayContainerTest18() { 829 final boolean isUsingZorder = true; 830 final boolean isUsingDefaultShadow = false; 831 final boolean enableRoundedCorner = false; 832 final boolean shadowEnabled = false; 833 final boolean keepChildForeground = true; 834 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 835 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 836 final int version = Build.VERSION.SDK_INT; 837 if (version < 21) { 838 // nothing supported 839 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 840 0, 0, false, false); 841 } else if (version < 23) { 842 // supports static/dynamic shadow, supports rounded corner 843 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 844 0, 0, false, false); 845 } else { 846 // supports foreground 847 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 848 0, 0, false, false); 849 } 850 } 851 852 @Test 853 public void shadowOverlayContainerTest19() { 854 final boolean isUsingZorder = true; 855 final boolean isUsingDefaultShadow = false; 856 final boolean enableRoundedCorner = false; 857 final boolean shadowEnabled = true; 858 final boolean keepChildForeground = false; 859 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 860 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 861 final int version = Build.VERSION.SDK_INT; 862 if (version < 21) { 863 // nothing supported 864 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 865 0, 0, false, false); 866 } else if (version < 23) { 867 // supports static/dynamic shadow, supports rounded corner 868 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 869 0, 0, false, false); 870 } else { 871 // supports foreground 872 result.expect(false, 0, 0, false, false, 873 HALF_OVERLAY_COLOR, 0, false, false); 874 } 875 } 876 877 @Test 878 public void shadowOverlayContainerTest20() { 879 final boolean isUsingZorder = true; 880 final boolean isUsingDefaultShadow = false; 881 final boolean enableRoundedCorner = false; 882 final boolean shadowEnabled = true; 883 final boolean keepChildForeground = true; 884 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 885 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 886 final int version = Build.VERSION.SDK_INT; 887 if (version < 21) { 888 // nothing supported 889 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 890 0, 0, false, false); 891 } else if (version < 23) { 892 // supports static/dynamic shadow, supports rounded corner 893 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 894 0, 0, false, false); 895 } else { 896 // supports foreground 897 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 898 0, 0, false, false); 899 } 900 } 901 902 @Test 903 public void shadowOverlayContainerTest21() { 904 final boolean isUsingZorder = true; 905 final boolean isUsingDefaultShadow = false; 906 final boolean enableRoundedCorner = true; 907 final boolean shadowEnabled = false; 908 final boolean keepChildForeground = false; 909 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 910 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 911 final int version = Build.VERSION.SDK_INT; 912 if (version < 21) { 913 // nothing supported 914 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 915 0, 0, false, false); 916 } else if (version < 23) { 917 // supports static/dynamic shadow, supports rounded corner 918 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 919 0, 0, false, false); 920 } else { 921 // supports foreground 922 result.expect(false, 0, 0, false, false, 923 HALF_OVERLAY_COLOR, 0, false, true); 924 } 925 } 926 927 @Test 928 public void shadowOverlayContainerTest22() { 929 final boolean isUsingZorder = true; 930 final boolean isUsingDefaultShadow = false; 931 final boolean enableRoundedCorner = true; 932 final boolean shadowEnabled = false; 933 final boolean keepChildForeground = true; 934 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 935 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 936 final int version = Build.VERSION.SDK_INT; 937 if (version < 21) { 938 // nothing supported 939 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 940 0, 0, false, false); 941 } else if (version < 23) { 942 // supports static/dynamic shadow, supports rounded corner 943 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 944 0, 0, false, false); 945 } else { 946 // supports foreground 947 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 948 0, 0, false, false); 949 } 950 } 951 952 @Test 953 public void shadowOverlayContainerTest23() { 954 final boolean isUsingZorder = true; 955 final boolean isUsingDefaultShadow = false; 956 final boolean enableRoundedCorner = true; 957 final boolean shadowEnabled = true; 958 final boolean keepChildForeground = false; 959 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 960 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 961 final int version = Build.VERSION.SDK_INT; 962 if (version < 21) { 963 // nothing supported 964 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 965 0, 0, false, false); 966 } else if (version < 23) { 967 // supports static/dynamic shadow, supports rounded corner 968 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 969 0, 0, false, false); 970 } else { 971 // supports foreground 972 result.expect(false, 0, 0, false, false, 973 HALF_OVERLAY_COLOR, 0, false, true); 974 } 975 } 976 977 @Test 978 public void shadowOverlayContainerTest24() { 979 final boolean isUsingZorder = true; 980 final boolean isUsingDefaultShadow = false; 981 final boolean enableRoundedCorner = true; 982 final boolean shadowEnabled = true; 983 final boolean keepChildForeground = true; 984 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 985 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 986 final int version = Build.VERSION.SDK_INT; 987 if (version < 21) { 988 // nothing supported 989 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 990 0, 0, false, false); 991 } else if (version < 23) { 992 // supports static/dynamic shadow, supports rounded corner 993 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 994 0, 0, false, false); 995 } else { 996 // supports foreground 997 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 998 0, 0, false, false); 999 } 1000 } 1001 1002 @Test 1003 public void shadowOverlayContainerTest25() { 1004 final boolean isUsingZorder = true; 1005 final boolean isUsingDefaultShadow = true; 1006 final boolean enableRoundedCorner = false; 1007 final boolean shadowEnabled = false; 1008 final boolean keepChildForeground = false; 1009 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1010 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1011 final int version = Build.VERSION.SDK_INT; 1012 if (version < 21) { 1013 // nothing supported 1014 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1015 0, 0, false, false); 1016 } else if (version < 23) { 1017 // supports static/dynamic shadow, supports rounded corner 1018 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1019 0, 0, false, false); 1020 } else { 1021 // supports foreground 1022 result.expect(false, 0, 0, false, false, 1023 HALF_OVERLAY_COLOR, 0, false, false); 1024 } 1025 } 1026 1027 @Test 1028 public void shadowOverlayContainerTest26() { 1029 final boolean isUsingZorder = true; 1030 final boolean isUsingDefaultShadow = true; 1031 final boolean enableRoundedCorner = false; 1032 final boolean shadowEnabled = false; 1033 final boolean keepChildForeground = true; 1034 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1035 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1036 final int version = Build.VERSION.SDK_INT; 1037 if (version < 21) { 1038 // nothing supported 1039 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1040 0, 0, false, false); 1041 } else if (version < 23) { 1042 // supports static/dynamic shadow, supports rounded corner 1043 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1044 0, 0, false, false); 1045 } else { 1046 // supports foreground 1047 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1048 0, 0, false, false); 1049 } 1050 } 1051 1052 @Test 1053 public void shadowOverlayContainerTest27() { 1054 final boolean isUsingZorder = true; 1055 final boolean isUsingDefaultShadow = true; 1056 final boolean enableRoundedCorner = false; 1057 final boolean shadowEnabled = true; 1058 final boolean keepChildForeground = false; 1059 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1060 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1061 final int version = Build.VERSION.SDK_INT; 1062 if (version < 21) { 1063 // nothing supported 1064 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1065 0, 0, false, false); 1066 } else if (version < 23) { 1067 // supports static/dynamic shadow, supports rounded corner 1068 result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, false, 1069 0, 0, false, false); 1070 } else { 1071 // supports foreground 1072 result.expect(false, 0, 0, false, false, 1073 HALF_OVERLAY_COLOR, sFocusedZ, false, false); 1074 } 1075 } 1076 1077 @Test 1078 public void shadowOverlayContainerTest28() { 1079 final boolean isUsingZorder = true; 1080 final boolean isUsingDefaultShadow = true; 1081 final boolean enableRoundedCorner = false; 1082 final boolean shadowEnabled = true; 1083 final boolean keepChildForeground = true; 1084 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1085 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1086 final int version = Build.VERSION.SDK_INT; 1087 if (version < 21) { 1088 // nothing supported 1089 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1090 0, 0, false, false); 1091 } else if (version < 23) { 1092 // supports static/dynamic shadow, supports rounded corner 1093 result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, false, 1094 0, 0, false, false); 1095 } else { 1096 // supports foreground 1097 result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, false, 1098 0, 0, false, false); 1099 } 1100 } 1101 1102 @Test 1103 public void shadowOverlayContainerTest29() { 1104 final boolean isUsingZorder = true; 1105 final boolean isUsingDefaultShadow = true; 1106 final boolean enableRoundedCorner = true; 1107 final boolean shadowEnabled = false; 1108 final boolean keepChildForeground = false; 1109 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1110 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1111 final int version = Build.VERSION.SDK_INT; 1112 if (version < 21) { 1113 // nothing supported 1114 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1115 0, 0, false, false); 1116 } else if (version < 23) { 1117 // supports static/dynamic shadow, supports rounded corner 1118 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 1119 0, 0, false, false); 1120 } else { 1121 // supports foreground 1122 result.expect(false, 0, 0, false, false, 1123 HALF_OVERLAY_COLOR, 0, false, true); 1124 } 1125 } 1126 1127 @Test 1128 public void shadowOverlayContainerTest30() { 1129 final boolean isUsingZorder = true; 1130 final boolean isUsingDefaultShadow = true; 1131 final boolean enableRoundedCorner = true; 1132 final boolean shadowEnabled = false; 1133 final boolean keepChildForeground = true; 1134 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1135 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1136 final int version = Build.VERSION.SDK_INT; 1137 if (version < 21) { 1138 // nothing supported 1139 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1140 0, 0, false, false); 1141 } else if (version < 23) { 1142 // supports static/dynamic shadow, supports rounded corner 1143 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 1144 0, 0, false, false); 1145 } else { 1146 // supports foreground 1147 result.expect(true, HALF_OVERLAY_COLOR, 0, false, true, 1148 0, 0, false, false); 1149 } 1150 } 1151 1152 @Test 1153 public void shadowOverlayContainerTest31() { 1154 final boolean isUsingZorder = true; 1155 final boolean isUsingDefaultShadow = true; 1156 final boolean enableRoundedCorner = true; 1157 final boolean shadowEnabled = true; 1158 final boolean keepChildForeground = false; 1159 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1160 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1161 final int version = Build.VERSION.SDK_INT; 1162 if (version < 21) { 1163 // nothing supported 1164 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1165 0, 0, false, false); 1166 } else if (version < 23) { 1167 // supports static/dynamic shadow, supports rounded corner 1168 result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, true, 1169 0, 0, false, false); 1170 } else { 1171 // supports foreground 1172 result.expect(false, 0, 0, false, false, 1173 HALF_OVERLAY_COLOR, sFocusedZ, false, true); 1174 } 1175 } 1176 1177 @Test 1178 public void shadowOverlayContainerTest32() { 1179 final boolean isUsingZorder = true; 1180 final boolean isUsingDefaultShadow = true; 1181 final boolean enableRoundedCorner = true; 1182 final boolean shadowEnabled = true; 1183 final boolean keepChildForeground = true; 1184 ShadowOverlayResult result = setupDefaultPresenterWithSingleElement(isUsingZorder, 1185 isUsingDefaultShadow, enableRoundedCorner, shadowEnabled, keepChildForeground); 1186 final int version = Build.VERSION.SDK_INT; 1187 if (version < 21) { 1188 // nothing supported 1189 result.expect(true, HALF_OVERLAY_COLOR, 0, false, false, 1190 0, 0, false, false); 1191 } else if (version < 23) { 1192 // supports static/dynamic shadow, supports rounded corner 1193 result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, true, 1194 0, 0, false, false); 1195 } else { 1196 // supports foreground 1197 result.expect(true, HALF_OVERLAY_COLOR, sFocusedZ, false, true, 1198 0, 0, false, false); 1199 } 1200 } 1201 1202 @Test 1203 public void shadowOverlayContainerTestDefaultSettings() { 1204 ListRowPresenter presenter = new ListRowPresenter(); 1205 final int version = Build.VERSION.SDK_INT; 1206 if (version < 21) { 1207 assertFalse(presenter.isUsingZOrder(mContext)); 1208 assertFalse(presenter.isUsingDefaultShadow()); 1209 } else { 1210 assertTrue(presenter.isUsingZOrder(mContext)); 1211 assertTrue(presenter.isUsingDefaultShadow()); 1212 } 1213 assertTrue(presenter.areChildRoundedCornersEnabled()); 1214 assertTrue(presenter.getShadowEnabled()); 1215 assertTrue(presenter.isKeepChildForeground()); 1216 } 1217 } 1218