1 /* 2 * Copyright (C) 2019 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 com.android.layoutlib.bridge.intensive; 18 19 import com.android.ide.common.rendering.api.SessionParams; 20 import com.android.layoutlib.bridge.intensive.setup.ConfigGenerator; 21 import com.android.layoutlib.bridge.intensive.setup.LayoutLibTestCallback; 22 import com.android.layoutlib.bridge.intensive.setup.LayoutPullParser; 23 24 import org.junit.After; 25 import org.junit.Test; 26 27 public class HighQualityShadowsRenderTests extends RenderTestBase { 28 @After afterTestCase()29 public void afterTestCase() { 30 com.android.layoutlib.bridge.test.widgets.HookWidget.reset(); 31 } 32 33 @Test testHighQualityRectangleShadow()34 public void testHighQualityRectangleShadow() throws Exception { 35 LayoutPullParser parser = createParserFromPath("shadows_test.xml"); 36 LayoutLibTestCallback layoutLibCallback = 37 new LayoutLibTestCallback(getLogger(), mDefaultClassLoader); 38 layoutLibCallback.initResources(); 39 SessionParams params = getSessionParamsBuilder() 40 .setParser(parser) 41 .setConfigGenerator(ConfigGenerator.NEXUS_5) 42 .setCallback(layoutLibCallback) 43 .disableDecoration() 44 .build(); 45 46 renderAndVerify(params, "shadows_test_high_quality.png"); 47 // We expect fidelity warnings for Path.isConvex. Fail for anything else. 48 sRenderMessages.removeIf(message -> message.equals("Path.isConvex is not supported.")); 49 sRenderMessages.removeIf(message -> message.equals("Font$Builder.nAddAxis is not supported.")); 50 } 51 52 @Test testRoundedEdgeRectangle()53 public void testRoundedEdgeRectangle() throws Exception { 54 LayoutPullParser parser = createParserFromPath("shadows_rounded_edge_test.xml"); 55 LayoutLibTestCallback layoutLibCallback = 56 new LayoutLibTestCallback(getLogger(), mDefaultClassLoader); 57 layoutLibCallback.initResources(); 58 SessionParams params = getSessionParamsBuilder() 59 .setParser(parser) 60 .setConfigGenerator(ConfigGenerator.NEXUS_5) 61 .setCallback(layoutLibCallback) 62 .build(); 63 64 renderAndVerify(params, "shadows_test_high_quality_rounded_edge.png"); 65 // We expect fidelity warnings for Path.isConvex. Fail for anything else. 66 sRenderMessages.removeIf(message -> message.equals("Path.isConvex is not supported.")); 67 sRenderMessages.removeIf(message -> message.equals("Font$Builder.nAddAxis is not supported.")); 68 } 69 70 @Test testLargeView()71 public void testLargeView() throws Exception { 72 LayoutPullParser parser = createParserFromPath("large_view_shadows_test.xml"); 73 LayoutLibTestCallback layoutLibCallback = 74 new LayoutLibTestCallback(getLogger(), mDefaultClassLoader); 75 layoutLibCallback.initResources(); 76 SessionParams params = getSessionParamsBuilder() 77 .setParser(parser) 78 .setConfigGenerator(ConfigGenerator.NEXUS_5) 79 .setCallback(layoutLibCallback) 80 .disableDecoration() 81 .build(); 82 83 renderAndVerify(params, "large_shadows_test_high_quality.png"); 84 // We expect fidelity warnings for Path.isConvex. Fail for anything else. 85 sRenderMessages.removeIf(message -> message.equals("Path.isConvex is not supported.")); 86 } 87 88 @Test testShadowSizes()89 public void testShadowSizes() throws Exception { 90 LayoutPullParser parser = createParserFromPath("shadow_sizes_test.xml"); 91 LayoutLibTestCallback layoutLibCallback = 92 new LayoutLibTestCallback(getLogger(), mDefaultClassLoader); 93 layoutLibCallback.initResources(); 94 SessionParams params = getSessionParamsBuilder() 95 .setParser(parser) 96 .setConfigGenerator(ConfigGenerator.NEXUS_5) 97 .setCallback(layoutLibCallback) 98 .build(); 99 100 renderAndVerify(params, "shadow_sizes_test_high_quality.png"); 101 // We expect fidelity warnings for Path.isConvex. Fail for anything else. 102 sRenderMessages.removeIf(message -> message.equals("Path.isConvex is not supported.")); 103 } 104 105 @Test testWidgetWithScroll()106 public void testWidgetWithScroll() throws Exception { 107 LayoutPullParser parser = createParserFromPath("shadows_scrollview.xml"); 108 LayoutLibTestCallback layoutLibCallback = 109 new LayoutLibTestCallback(getLogger(), mDefaultClassLoader); 110 layoutLibCallback.initResources(); 111 SessionParams params = getSessionParamsBuilder() 112 .setParser(parser) 113 .setCallback(layoutLibCallback) 114 .build(); 115 116 renderAndVerify(params, "shadow_scrollview_test_high_quality.png"); 117 // We expect fidelity warnings for Path.isConvex. Fail for anything else. 118 sRenderMessages.removeIf(message -> message.equals("Path.isConvex is not supported.")); 119 sRenderMessages.removeIf(message -> message.equals("Font$Builder.nAddAxis is not supported.")); 120 } 121 } 122