Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxControllerRobotTest.kt +10 −25 Original line number Diff line number Diff line Loading @@ -16,10 +16,8 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.graphics.Rect import android.view.SurfaceControl import com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn import com.android.wm.shell.compatui.letterbox.LetterboxMatchers.asAnyMode import org.mockito.kotlin.any import org.mockito.kotlin.clearInvocations Loading @@ -31,10 +29,7 @@ import org.mockito.kotlin.verify /** * Robot to test [LetterboxController] implementations. */ open class LetterboxControllerRobotTest( ctx: Context, controllerBuilder: (LetterboxSurfaceBuilder) -> LetterboxController ) { abstract class LetterboxControllerRobotTest { companion object { @JvmStatic Loading @@ -44,21 +39,21 @@ open class LetterboxControllerRobotTest( private val TASK_ID = 20 } private val letterboxConfiguration: LetterboxConfiguration private val surfaceBuilder: LetterboxSurfaceBuilder private val letterboxController: LetterboxController private val transaction: SurfaceControl.Transaction private val parentLeash: SurfaceControl lateinit var letterboxController: LetterboxController val transaction: SurfaceControl.Transaction val parentLeash: SurfaceControl init { letterboxConfiguration = LetterboxConfiguration(ctx) surfaceBuilder = LetterboxSurfaceBuilder(letterboxConfiguration) letterboxController = controllerBuilder(surfaceBuilder) transaction = getTransactionMock() parentLeash = mock<SurfaceControl>() spyOn(surfaceBuilder) } fun initController() { letterboxController = buildController() } abstract fun buildController(): LetterboxController fun sendCreateSurfaceRequest( displayId: Int = DISPLAY_ID, taskId: Int = TASK_ID Loading Loading @@ -102,16 +97,6 @@ open class LetterboxControllerRobotTest( letterboxController.dump() } fun checkSurfaceBuilderInvoked(times: Int = 1, name: String = "", callSite: String = "") { verify(surfaceBuilder, times(times)).createSurface( eq(transaction), eq(parentLeash), name.asAnyMode(), callSite.asAnyMode(), any() ) } fun checkTransactionRemovedInvoked(times: Int = 1) { verify(transaction, times(times)).remove(any()) } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxUtilsTest.kt +25 −33 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.graphics.Rect import android.testing.AndroidTestingRunner import android.view.SurfaceControl Loading Loading @@ -44,24 +43,14 @@ import org.mockito.kotlin.verify @SmallTest class LetterboxUtilsTest : ShellTestCase() { val firstLetterboxController = mock<LetterboxController>() val secondLetterboxController = mock<LetterboxController>() val thirdLetterboxController = mock<LetterboxController>() private val letterboxControllerBuilder: (LetterboxSurfaceBuilder) -> LetterboxController = { _ -> firstLetterboxController.append(secondLetterboxController) .append(thirdLetterboxController) } @Test fun `Appended LetterboxController invoked creation on all the controllers`() { runTestScenario { r -> r.sendCreateSurfaceRequest() r.verifyCreateSurfaceInvokedWithRequest(target = firstLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = secondLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = thirdLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = r.firstLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = r.secondLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = r.thirdLetterboxController) } } Loading @@ -69,9 +58,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun `Appended LetterboxController invoked destroy on all the controllers`() { runTestScenario { r -> r.sendDestroySurfaceRequest() r.verifyDestroySurfaceInvokedWithRequest(target = firstLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = secondLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = thirdLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = r.firstLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = r.secondLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = r.thirdLetterboxController) } } Loading @@ -79,9 +68,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun `Appended LetterboxController invoked update visibility on all the controllers`() { runTestScenario { r -> r.sendUpdateSurfaceVisibilityRequest(visible = true) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = firstLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = secondLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = thirdLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = r.firstLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = r.secondLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = r.thirdLetterboxController) } } Loading @@ -89,9 +78,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun `Appended LetterboxController invoked update bounds on all the controllers`() { runTestScenario { r -> r.sendUpdateSurfaceBoundsRequest(taskBounds = Rect(), activityBounds = Rect()) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = firstLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = secondLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = thirdLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = r.firstLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = r.secondLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = r.thirdLetterboxController) } } Loading @@ -99,9 +88,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun `Appended LetterboxController invoked update dump on all the controllers`() { runTestScenario { r -> r.invokeDump() r.verifyDumpInvoked(target = firstLetterboxController) r.verifyDumpInvoked(target = secondLetterboxController) r.verifyDumpInvoked(target = thirdLetterboxController) r.verifyDumpInvoked(target = r.firstLetterboxController) r.verifyDumpInvoked(target = r.secondLetterboxController) r.verifyDumpInvoked(target = r.thirdLetterboxController) } } Loading Loading @@ -138,21 +127,20 @@ class LetterboxUtilsTest : ShellTestCase() { * Runs a test scenario providing a Robot. */ fun runTestScenario(consumer: Consumer<AppendLetterboxControllerRobotTest>) { val robot = AppendLetterboxControllerRobotTest(mContext, letterboxControllerBuilder) consumer.accept(robot) consumer.accept(AppendLetterboxControllerRobotTest().apply { initController() }) } class AppendLetterboxControllerRobotTest( ctx: Context, builder: (LetterboxSurfaceBuilder) -> LetterboxController ) : LetterboxControllerRobotTest(ctx, builder) { class AppendLetterboxControllerRobotTest : LetterboxControllerRobotTest() { val firstLetterboxController = mock<LetterboxController>() val secondLetterboxController = mock<LetterboxController>() val thirdLetterboxController = mock<LetterboxController>() private var testableMap = mutableMapOf<Int, Int>() private var onItemState: Int? = null private var onMissingStateKey: Int? = null private var onMissingStateMap: MutableMap<Int, Int>? = null private val transaction = getTransactionMock() private val surface = SurfaceControl() fun verifyCreateSurfaceInvokedWithRequest( Loading Loading @@ -230,5 +218,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun verifySetWindowCrop(expectedWidth: Int, expectedHeight: Int) { verify(transaction).setWindowCrop(surface, expectedWidth, expectedHeight) } override fun buildController(): LetterboxController = firstLetterboxController.append(secondLetterboxController) .append(thirdLetterboxController) } } libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/MixedLetterboxControllerTest.kt +25 −43 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.wm.shell.ShellTestCase Loading Loading @@ -64,65 +63,48 @@ class MixedLetterboxControllerTest : ShellTestCase() { * Runs a test scenario providing a Robot. */ fun runTestScenario(consumer: Consumer<MixedLetterboxControllerRobotTest>) { val robot = MixedLetterboxControllerRobotTest(mContext, ObjectToTestHolder()) consumer.accept(robot) consumer.accept(MixedLetterboxControllerRobotTest().apply { initController() }) } class MixedLetterboxControllerRobotTest( ctx: Context, private val objectToTestHolder: ObjectToTestHolder ) : LetterboxControllerRobotTest(ctx, objectToTestHolder.controllerBuilder) { class MixedLetterboxControllerRobotTest : LetterboxControllerRobotTest() { val singleLetterboxController: SingleSurfaceLetterboxController = mock<SingleSurfaceLetterboxController>() val multipleLetterboxController: MultiSurfaceLetterboxController = mock<MultiSurfaceLetterboxController>() val controllerStrategy: LetterboxControllerStrategy = mock<LetterboxControllerStrategy>() fun configureStrategyFor(letterboxMode: LetterboxMode) { doReturn(letterboxMode).`when`(objectToTestHolder.controllerStrategy) .getLetterboxImplementationMode() doReturn(letterboxMode).`when`(controllerStrategy).getLetterboxImplementationMode() } fun checkCreateInvokedOnSingleController(times: Int = 1) { verify( objectToTestHolder.singleLetterboxController, times(times) ).createLetterboxSurface(any(), any(), any()) verify(singleLetterboxController, times(times)).createLetterboxSurface( any(), any(), any() ) } fun checkCreateInvokedOnMultiController(times: Int = 1) { verify( objectToTestHolder.multipleLetterboxController, times(times) ).createLetterboxSurface(any(), any(), any()) verify(multipleLetterboxController, times(times)).createLetterboxSurface( any(), any(), any() ) } fun checkDestroyInvokedOnSingleController(times: Int = 1) { verify( objectToTestHolder.singleLetterboxController, times(times) ).destroyLetterboxSurface(any(), any()) verify(singleLetterboxController, times(times)).destroyLetterboxSurface(any(), any()) } fun checkDestroyInvokedOnMultiController(times: Int = 1) { verify( objectToTestHolder.multipleLetterboxController, times(times) ).destroyLetterboxSurface(any(), any()) } verify(multipleLetterboxController, times(times)).destroyLetterboxSurface(any(), any()) } data class ObjectToTestHolder( val singleLetterboxController: SingleSurfaceLetterboxController = mock<SingleSurfaceLetterboxController>(), val multipleLetterboxController: MultiSurfaceLetterboxController = mock<MultiSurfaceLetterboxController>(), val controllerStrategy: LetterboxControllerStrategy = mock<LetterboxControllerStrategy>() ) { private val mixedController = MixedLetterboxController( override fun buildController(): LetterboxController = MixedLetterboxController( singleLetterboxController, multipleLetterboxController, controllerStrategy ) val controllerBuilder: (LetterboxSurfaceBuilder) -> LetterboxController = { _ -> mixedController } } } libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/MultiSurfaceLetterboxControllerTest.kt +35 −4 Original line number Diff line number Diff line Loading @@ -16,13 +16,20 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.graphics.Rect import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn import com.android.wm.shell.ShellTestCase import com.android.wm.shell.compatui.letterbox.LetterboxMatchers.asAnyMode import java.util.function.Consumer import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.times import org.mockito.kotlin.verify /** * Tests for [MultiSurfaceLetterboxController]. Loading Loading @@ -147,9 +154,33 @@ class MultiSurfaceLetterboxControllerTest : ShellTestCase() { /** * Runs a test scenario providing a Robot. */ fun runTestScenario(consumer: Consumer<LetterboxControllerRobotTest>) { val robot = LetterboxControllerRobotTest(mContext, { sb -> MultiSurfaceLetterboxController(sb) }) consumer.accept(robot) fun runTestScenario(consumer: Consumer<MultiLetterboxControllerRobotTest>) { consumer.accept(MultiLetterboxControllerRobotTest(mContext).apply { initController() }) } class MultiLetterboxControllerRobotTest(context: Context) : LetterboxControllerRobotTest() { private val letterboxConfiguration: LetterboxConfiguration private val surfaceBuilder: LetterboxSurfaceBuilder init { letterboxConfiguration = LetterboxConfiguration(context) surfaceBuilder = LetterboxSurfaceBuilder(letterboxConfiguration) spyOn(surfaceBuilder) } override fun buildController(): LetterboxController = MultiSurfaceLetterboxController(surfaceBuilder) fun checkSurfaceBuilderInvoked(times: Int = 1, name: String = "", callSite: String = "") { verify(surfaceBuilder, times(times)).createSurface( eq(transaction), eq(parentLeash), name.asAnyMode(), callSite.asAnyMode(), any() ) } } } libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/SingleSurfaceLetterboxControllerTest.kt +35 −4 Original line number Diff line number Diff line Loading @@ -16,13 +16,20 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.graphics.Rect import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn import com.android.wm.shell.ShellTestCase import com.android.wm.shell.compatui.letterbox.LetterboxMatchers.asAnyMode import java.util.function.Consumer import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.times import org.mockito.kotlin.verify /** * Tests for [SingleSurfaceLetterboxController]. Loading Loading @@ -120,9 +127,33 @@ class SingleSurfaceLetterboxControllerTest : ShellTestCase() { /** * Runs a test scenario providing a Robot. */ fun runTestScenario(consumer: Consumer<LetterboxControllerRobotTest>) { val robot = LetterboxControllerRobotTest(mContext, { sb -> SingleSurfaceLetterboxController(sb) }) consumer.accept(robot) fun runTestScenario(consumer: Consumer<SingleLetterboxControllerRobotTest>) { consumer.accept(SingleLetterboxControllerRobotTest(mContext).apply { initController() }) } class SingleLetterboxControllerRobotTest(context: Context) : LetterboxControllerRobotTest() { private val letterboxConfiguration: LetterboxConfiguration private val surfaceBuilder: LetterboxSurfaceBuilder init { letterboxConfiguration = LetterboxConfiguration(context) surfaceBuilder = LetterboxSurfaceBuilder(letterboxConfiguration) spyOn(surfaceBuilder) } override fun buildController(): LetterboxController = SingleSurfaceLetterboxController(surfaceBuilder) fun checkSurfaceBuilderInvoked(times: Int = 1, name: String = "", callSite: String = "") { verify(surfaceBuilder, times(times)).createSurface( eq(transaction), eq(parentLeash), name.asAnyMode(), callSite.asAnyMode(), any() ) } } } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxControllerRobotTest.kt +10 −25 Original line number Diff line number Diff line Loading @@ -16,10 +16,8 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.graphics.Rect import android.view.SurfaceControl import com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn import com.android.wm.shell.compatui.letterbox.LetterboxMatchers.asAnyMode import org.mockito.kotlin.any import org.mockito.kotlin.clearInvocations Loading @@ -31,10 +29,7 @@ import org.mockito.kotlin.verify /** * Robot to test [LetterboxController] implementations. */ open class LetterboxControllerRobotTest( ctx: Context, controllerBuilder: (LetterboxSurfaceBuilder) -> LetterboxController ) { abstract class LetterboxControllerRobotTest { companion object { @JvmStatic Loading @@ -44,21 +39,21 @@ open class LetterboxControllerRobotTest( private val TASK_ID = 20 } private val letterboxConfiguration: LetterboxConfiguration private val surfaceBuilder: LetterboxSurfaceBuilder private val letterboxController: LetterboxController private val transaction: SurfaceControl.Transaction private val parentLeash: SurfaceControl lateinit var letterboxController: LetterboxController val transaction: SurfaceControl.Transaction val parentLeash: SurfaceControl init { letterboxConfiguration = LetterboxConfiguration(ctx) surfaceBuilder = LetterboxSurfaceBuilder(letterboxConfiguration) letterboxController = controllerBuilder(surfaceBuilder) transaction = getTransactionMock() parentLeash = mock<SurfaceControl>() spyOn(surfaceBuilder) } fun initController() { letterboxController = buildController() } abstract fun buildController(): LetterboxController fun sendCreateSurfaceRequest( displayId: Int = DISPLAY_ID, taskId: Int = TASK_ID Loading Loading @@ -102,16 +97,6 @@ open class LetterboxControllerRobotTest( letterboxController.dump() } fun checkSurfaceBuilderInvoked(times: Int = 1, name: String = "", callSite: String = "") { verify(surfaceBuilder, times(times)).createSurface( eq(transaction), eq(parentLeash), name.asAnyMode(), callSite.asAnyMode(), any() ) } fun checkTransactionRemovedInvoked(times: Int = 1) { verify(transaction, times(times)).remove(any()) } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxUtilsTest.kt +25 −33 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.graphics.Rect import android.testing.AndroidTestingRunner import android.view.SurfaceControl Loading Loading @@ -44,24 +43,14 @@ import org.mockito.kotlin.verify @SmallTest class LetterboxUtilsTest : ShellTestCase() { val firstLetterboxController = mock<LetterboxController>() val secondLetterboxController = mock<LetterboxController>() val thirdLetterboxController = mock<LetterboxController>() private val letterboxControllerBuilder: (LetterboxSurfaceBuilder) -> LetterboxController = { _ -> firstLetterboxController.append(secondLetterboxController) .append(thirdLetterboxController) } @Test fun `Appended LetterboxController invoked creation on all the controllers`() { runTestScenario { r -> r.sendCreateSurfaceRequest() r.verifyCreateSurfaceInvokedWithRequest(target = firstLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = secondLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = thirdLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = r.firstLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = r.secondLetterboxController) r.verifyCreateSurfaceInvokedWithRequest(target = r.thirdLetterboxController) } } Loading @@ -69,9 +58,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun `Appended LetterboxController invoked destroy on all the controllers`() { runTestScenario { r -> r.sendDestroySurfaceRequest() r.verifyDestroySurfaceInvokedWithRequest(target = firstLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = secondLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = thirdLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = r.firstLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = r.secondLetterboxController) r.verifyDestroySurfaceInvokedWithRequest(target = r.thirdLetterboxController) } } Loading @@ -79,9 +68,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun `Appended LetterboxController invoked update visibility on all the controllers`() { runTestScenario { r -> r.sendUpdateSurfaceVisibilityRequest(visible = true) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = firstLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = secondLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = thirdLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = r.firstLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = r.secondLetterboxController) r.verifyUpdateVisibilitySurfaceInvokedWithRequest(target = r.thirdLetterboxController) } } Loading @@ -89,9 +78,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun `Appended LetterboxController invoked update bounds on all the controllers`() { runTestScenario { r -> r.sendUpdateSurfaceBoundsRequest(taskBounds = Rect(), activityBounds = Rect()) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = firstLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = secondLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = thirdLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = r.firstLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = r.secondLetterboxController) r.verifyUpdateSurfaceBoundsInvokedWithRequest(target = r.thirdLetterboxController) } } Loading @@ -99,9 +88,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun `Appended LetterboxController invoked update dump on all the controllers`() { runTestScenario { r -> r.invokeDump() r.verifyDumpInvoked(target = firstLetterboxController) r.verifyDumpInvoked(target = secondLetterboxController) r.verifyDumpInvoked(target = thirdLetterboxController) r.verifyDumpInvoked(target = r.firstLetterboxController) r.verifyDumpInvoked(target = r.secondLetterboxController) r.verifyDumpInvoked(target = r.thirdLetterboxController) } } Loading Loading @@ -138,21 +127,20 @@ class LetterboxUtilsTest : ShellTestCase() { * Runs a test scenario providing a Robot. */ fun runTestScenario(consumer: Consumer<AppendLetterboxControllerRobotTest>) { val robot = AppendLetterboxControllerRobotTest(mContext, letterboxControllerBuilder) consumer.accept(robot) consumer.accept(AppendLetterboxControllerRobotTest().apply { initController() }) } class AppendLetterboxControllerRobotTest( ctx: Context, builder: (LetterboxSurfaceBuilder) -> LetterboxController ) : LetterboxControllerRobotTest(ctx, builder) { class AppendLetterboxControllerRobotTest : LetterboxControllerRobotTest() { val firstLetterboxController = mock<LetterboxController>() val secondLetterboxController = mock<LetterboxController>() val thirdLetterboxController = mock<LetterboxController>() private var testableMap = mutableMapOf<Int, Int>() private var onItemState: Int? = null private var onMissingStateKey: Int? = null private var onMissingStateMap: MutableMap<Int, Int>? = null private val transaction = getTransactionMock() private val surface = SurfaceControl() fun verifyCreateSurfaceInvokedWithRequest( Loading Loading @@ -230,5 +218,9 @@ class LetterboxUtilsTest : ShellTestCase() { fun verifySetWindowCrop(expectedWidth: Int, expectedHeight: Int) { verify(transaction).setWindowCrop(surface, expectedWidth, expectedHeight) } override fun buildController(): LetterboxController = firstLetterboxController.append(secondLetterboxController) .append(thirdLetterboxController) } }
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/MixedLetterboxControllerTest.kt +25 −43 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.wm.shell.ShellTestCase Loading Loading @@ -64,65 +63,48 @@ class MixedLetterboxControllerTest : ShellTestCase() { * Runs a test scenario providing a Robot. */ fun runTestScenario(consumer: Consumer<MixedLetterboxControllerRobotTest>) { val robot = MixedLetterboxControllerRobotTest(mContext, ObjectToTestHolder()) consumer.accept(robot) consumer.accept(MixedLetterboxControllerRobotTest().apply { initController() }) } class MixedLetterboxControllerRobotTest( ctx: Context, private val objectToTestHolder: ObjectToTestHolder ) : LetterboxControllerRobotTest(ctx, objectToTestHolder.controllerBuilder) { class MixedLetterboxControllerRobotTest : LetterboxControllerRobotTest() { val singleLetterboxController: SingleSurfaceLetterboxController = mock<SingleSurfaceLetterboxController>() val multipleLetterboxController: MultiSurfaceLetterboxController = mock<MultiSurfaceLetterboxController>() val controllerStrategy: LetterboxControllerStrategy = mock<LetterboxControllerStrategy>() fun configureStrategyFor(letterboxMode: LetterboxMode) { doReturn(letterboxMode).`when`(objectToTestHolder.controllerStrategy) .getLetterboxImplementationMode() doReturn(letterboxMode).`when`(controllerStrategy).getLetterboxImplementationMode() } fun checkCreateInvokedOnSingleController(times: Int = 1) { verify( objectToTestHolder.singleLetterboxController, times(times) ).createLetterboxSurface(any(), any(), any()) verify(singleLetterboxController, times(times)).createLetterboxSurface( any(), any(), any() ) } fun checkCreateInvokedOnMultiController(times: Int = 1) { verify( objectToTestHolder.multipleLetterboxController, times(times) ).createLetterboxSurface(any(), any(), any()) verify(multipleLetterboxController, times(times)).createLetterboxSurface( any(), any(), any() ) } fun checkDestroyInvokedOnSingleController(times: Int = 1) { verify( objectToTestHolder.singleLetterboxController, times(times) ).destroyLetterboxSurface(any(), any()) verify(singleLetterboxController, times(times)).destroyLetterboxSurface(any(), any()) } fun checkDestroyInvokedOnMultiController(times: Int = 1) { verify( objectToTestHolder.multipleLetterboxController, times(times) ).destroyLetterboxSurface(any(), any()) } verify(multipleLetterboxController, times(times)).destroyLetterboxSurface(any(), any()) } data class ObjectToTestHolder( val singleLetterboxController: SingleSurfaceLetterboxController = mock<SingleSurfaceLetterboxController>(), val multipleLetterboxController: MultiSurfaceLetterboxController = mock<MultiSurfaceLetterboxController>(), val controllerStrategy: LetterboxControllerStrategy = mock<LetterboxControllerStrategy>() ) { private val mixedController = MixedLetterboxController( override fun buildController(): LetterboxController = MixedLetterboxController( singleLetterboxController, multipleLetterboxController, controllerStrategy ) val controllerBuilder: (LetterboxSurfaceBuilder) -> LetterboxController = { _ -> mixedController } } }
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/MultiSurfaceLetterboxControllerTest.kt +35 −4 Original line number Diff line number Diff line Loading @@ -16,13 +16,20 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.graphics.Rect import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn import com.android.wm.shell.ShellTestCase import com.android.wm.shell.compatui.letterbox.LetterboxMatchers.asAnyMode import java.util.function.Consumer import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.times import org.mockito.kotlin.verify /** * Tests for [MultiSurfaceLetterboxController]. Loading Loading @@ -147,9 +154,33 @@ class MultiSurfaceLetterboxControllerTest : ShellTestCase() { /** * Runs a test scenario providing a Robot. */ fun runTestScenario(consumer: Consumer<LetterboxControllerRobotTest>) { val robot = LetterboxControllerRobotTest(mContext, { sb -> MultiSurfaceLetterboxController(sb) }) consumer.accept(robot) fun runTestScenario(consumer: Consumer<MultiLetterboxControllerRobotTest>) { consumer.accept(MultiLetterboxControllerRobotTest(mContext).apply { initController() }) } class MultiLetterboxControllerRobotTest(context: Context) : LetterboxControllerRobotTest() { private val letterboxConfiguration: LetterboxConfiguration private val surfaceBuilder: LetterboxSurfaceBuilder init { letterboxConfiguration = LetterboxConfiguration(context) surfaceBuilder = LetterboxSurfaceBuilder(letterboxConfiguration) spyOn(surfaceBuilder) } override fun buildController(): LetterboxController = MultiSurfaceLetterboxController(surfaceBuilder) fun checkSurfaceBuilderInvoked(times: Int = 1, name: String = "", callSite: String = "") { verify(surfaceBuilder, times(times)).createSurface( eq(transaction), eq(parentLeash), name.asAnyMode(), callSite.asAnyMode(), any() ) } } }
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/SingleSurfaceLetterboxControllerTest.kt +35 −4 Original line number Diff line number Diff line Loading @@ -16,13 +16,20 @@ package com.android.wm.shell.compatui.letterbox import android.content.Context import android.graphics.Rect import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn import com.android.wm.shell.ShellTestCase import com.android.wm.shell.compatui.letterbox.LetterboxMatchers.asAnyMode import java.util.function.Consumer import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.eq import org.mockito.kotlin.times import org.mockito.kotlin.verify /** * Tests for [SingleSurfaceLetterboxController]. Loading Loading @@ -120,9 +127,33 @@ class SingleSurfaceLetterboxControllerTest : ShellTestCase() { /** * Runs a test scenario providing a Robot. */ fun runTestScenario(consumer: Consumer<LetterboxControllerRobotTest>) { val robot = LetterboxControllerRobotTest(mContext, { sb -> SingleSurfaceLetterboxController(sb) }) consumer.accept(robot) fun runTestScenario(consumer: Consumer<SingleLetterboxControllerRobotTest>) { consumer.accept(SingleLetterboxControllerRobotTest(mContext).apply { initController() }) } class SingleLetterboxControllerRobotTest(context: Context) : LetterboxControllerRobotTest() { private val letterboxConfiguration: LetterboxConfiguration private val surfaceBuilder: LetterboxSurfaceBuilder init { letterboxConfiguration = LetterboxConfiguration(context) surfaceBuilder = LetterboxSurfaceBuilder(letterboxConfiguration) spyOn(surfaceBuilder) } override fun buildController(): LetterboxController = SingleSurfaceLetterboxController(surfaceBuilder) fun checkSurfaceBuilderInvoked(times: Int = 1, name: String = "", callSite: String = "") { verify(surfaceBuilder, times(times)).createSurface( eq(transaction), eq(parentLeash), name.asAnyMode(), callSite.asAnyMode(), any() ) } } }