1 package android.platform.test.rule 2 3 import android.platform.test.rule.Orientation.LANDSCAPE 4 import android.platform.test.rule.Orientation.PORTRAIT 5 import org.junit.rules.TestRule 6 import org.junit.runner.Description 7 import org.junit.runners.model.Statement 8 9 /** 10 * Makes each test of the class that uses this rule execute twice, in [Orientation.LANDSCAPE] and 11 * [Orientation.PORTRAIT] orientation. 12 */ 13 class PortraitLandscapeRule : TestRule { 14 applynull15 override fun apply(base: Statement, description: Description): Statement = 16 object : Statement() { 17 override fun evaluate() { 18 try { 19 base.runInOrientation(PORTRAIT) 20 base.runInOrientation(LANDSCAPE) 21 } finally { 22 RotationUtils.clearOrientationOverride() 23 } 24 } 25 } 26 Statementnull27 private fun Statement.runInOrientation(orientation: Orientation) { 28 RotationUtils.setOrientationOverride(orientation) 29 try { 30 evaluate() 31 } catch (e: Throwable) { 32 throw Exception("Test failed while in $orientation", e) 33 } 34 } 35 } 36