Loading services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt +93 −60 Original line number Diff line number Diff line Loading @@ -205,6 +205,57 @@ class DisplayTopologyCoordinatorTest { verify(mockTopologyStore, never()).restoreTopology(any()) } @Test fun addNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology).removeDisplay(displayInfos[0].displayId) } @Test fun addNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(true) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology, never()).removeDisplay(anyInt()) } @Test fun addNonDefaultDisplay_flagDisabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(false) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology, never()).removeDisplay(anyInt()) } @Test fun updateDisplay() { whenever(mockTopology.updateDisplay(eq(displayInfos[0].displayId), Loading Loading @@ -347,50 +398,17 @@ class DisplayTopologyCoordinatorTest { } @Test fun getTopology_copy() { assertThat(coordinator.topology).isEqualTo(mockTopologyCopy) } @Test fun setTopology_normalize() { val topology = mock<DisplayTopology>() val topologyCopy = mock<DisplayTopology>() val topologyGraph = mock<DisplayTopologyGraph>() whenever(topology.copy()).thenReturn(topologyCopy) whenever(topologyCopy.getGraph()).thenReturn(topologyGraph) whenever(mockTopologyStore.saveTopology(topology)).thenReturn(true) coordinator.topology = topology verify(topology).normalize() verify(mockTopologyChangedCallback).invoke( android.util.Pair( topologyCopy, topologyGraph ) ) verify(mockTopologyStore).saveTopology(topology) verify(mockTopologySavedCallback).invoke() } @Test fun addAndRemoveNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() { fun removeNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) // Set up the default display displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[0].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology).removeDisplay(displayInfos[0].displayId) // Remove the non-default display from the topology clearInvocations(mockTopology) // Remove a non-default display from the topology displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true) whenever(mockTopology.isEmpty()).thenReturn(true) coordinator.onDisplayRemoved(displayInfos[1].displayId) Loading @@ -400,23 +418,17 @@ class DisplayTopologyCoordinatorTest { } @Test fun addAndRemoveNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() { fun removeNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(true) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) // Set up the default display displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[0].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology, never()).removeDisplay(anyInt()) // Remove the non-default display from the topology clearInvocations(mockTopology) // Remove a non-default display from the topology displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true) coordinator.onDisplayRemoved(displayInfos[1].displayId) Loading @@ -424,26 +436,47 @@ class DisplayTopologyCoordinatorTest { } @Test fun addAndRemoveNonDefaultDisplay_flagDisabled() { fun removeNonDefaultDisplay_flagDisabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(false) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) // Set up the default display displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[0].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology, never()).removeDisplay(anyInt()) // Remove the non-default display from the topology clearInvocations(mockTopology) // Remove a non-default display from the topology displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true) coordinator.onDisplayRemoved(displayInfos[1].displayId) verify(mockTopology, never()).addDisplay(anyInt(), anyInt(), anyInt(), anyInt()) } @Test fun getTopology_copy() { assertThat(coordinator.topology).isEqualTo(mockTopologyCopy) } @Test fun setTopology_normalize() { val topology = mock<DisplayTopology>() val topologyCopy = mock<DisplayTopology>() val topologyGraph = mock<DisplayTopologyGraph>() whenever(topology.copy()).thenReturn(topologyCopy) whenever(topologyCopy.getGraph()).thenReturn(topologyGraph) whenever(mockTopologyStore.saveTopology(topology)).thenReturn(true) coordinator.topology = topology verify(topology).normalize() verify(mockTopologyChangedCallback).invoke( android.util.Pair( topologyCopy, topologyGraph ) ) verify(mockTopologyStore).saveTopology(topology) verify(mockTopologySavedCallback).invoke() } } Loading
services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt +93 −60 Original line number Diff line number Diff line Loading @@ -205,6 +205,57 @@ class DisplayTopologyCoordinatorTest { verify(mockTopologyStore, never()).restoreTopology(any()) } @Test fun addNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology).removeDisplay(displayInfos[0].displayId) } @Test fun addNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(true) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology, never()).removeDisplay(anyInt()) } @Test fun addNonDefaultDisplay_flagDisabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(false) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology, never()).removeDisplay(anyInt()) } @Test fun updateDisplay() { whenever(mockTopology.updateDisplay(eq(displayInfos[0].displayId), Loading Loading @@ -347,50 +398,17 @@ class DisplayTopologyCoordinatorTest { } @Test fun getTopology_copy() { assertThat(coordinator.topology).isEqualTo(mockTopologyCopy) } @Test fun setTopology_normalize() { val topology = mock<DisplayTopology>() val topologyCopy = mock<DisplayTopology>() val topologyGraph = mock<DisplayTopologyGraph>() whenever(topology.copy()).thenReturn(topologyCopy) whenever(topologyCopy.getGraph()).thenReturn(topologyGraph) whenever(mockTopologyStore.saveTopology(topology)).thenReturn(true) coordinator.topology = topology verify(topology).normalize() verify(mockTopologyChangedCallback).invoke( android.util.Pair( topologyCopy, topologyGraph ) ) verify(mockTopologyStore).saveTopology(topology) verify(mockTopologySavedCallback).invoke() } @Test fun addAndRemoveNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() { fun removeNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) // Set up the default display displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[0].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology).removeDisplay(displayInfos[0].displayId) // Remove the non-default display from the topology clearInvocations(mockTopology) // Remove a non-default display from the topology displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true) whenever(mockTopology.isEmpty()).thenReturn(true) coordinator.onDisplayRemoved(displayInfos[1].displayId) Loading @@ -400,23 +418,17 @@ class DisplayTopologyCoordinatorTest { } @Test fun addAndRemoveNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() { fun removeNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(true) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) // Set up the default display displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[0].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology, never()).removeDisplay(anyInt()) // Remove the non-default display from the topology clearInvocations(mockTopology) // Remove a non-default display from the topology displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true) coordinator.onDisplayRemoved(displayInfos[1].displayId) Loading @@ -424,26 +436,47 @@ class DisplayTopologyCoordinatorTest { } @Test fun addAndRemoveNonDefaultDisplay_flagDisabled() { fun removeNonDefaultDisplay_flagDisabled() { whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(false) whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false) // Add default display and a non-default display into the topology whenever(mockTopology.hasMultipleDisplays()).thenReturn(true) // Set up the default display displayInfos[0].displayId = Display.DEFAULT_DISPLAY displayInfos[0].type = Display.TYPE_INTERNAL coordinator.onDisplayAdded(displayInfos[0]) displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[0].type = Display.TYPE_EXTERNAL coordinator.onDisplayAdded(displayInfos[1]) verify(mockTopology, never()).removeDisplay(anyInt()) // Remove the non-default display from the topology clearInvocations(mockTopology) // Remove a non-default display from the topology displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1 displayInfos[1].type = Display.TYPE_EXTERNAL whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true) coordinator.onDisplayRemoved(displayInfos[1].displayId) verify(mockTopology, never()).addDisplay(anyInt(), anyInt(), anyInt(), anyInt()) } @Test fun getTopology_copy() { assertThat(coordinator.topology).isEqualTo(mockTopologyCopy) } @Test fun setTopology_normalize() { val topology = mock<DisplayTopology>() val topologyCopy = mock<DisplayTopology>() val topologyGraph = mock<DisplayTopologyGraph>() whenever(topology.copy()).thenReturn(topologyCopy) whenever(topologyCopy.getGraph()).thenReturn(topologyGraph) whenever(mockTopologyStore.saveTopology(topology)).thenReturn(true) coordinator.topology = topology verify(topology).normalize() verify(mockTopologyChangedCallback).invoke( android.util.Pair( topologyCopy, topologyGraph ) ) verify(mockTopologyStore).saveTopology(topology) verify(mockTopologySavedCallback).invoke() } }