• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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