Merge "Add unit test for GroupedRecentTaskInfo" into tm-qpr-dev
This commit is contained in:
@@ -114,7 +114,8 @@ public class GroupedRecentTaskInfo implements Parcelable {
|
|||||||
/**
|
/**
|
||||||
* Get all {@link ActivityManager.RecentTaskInfo}s grouped together.
|
* Get all {@link ActivityManager.RecentTaskInfo}s grouped together.
|
||||||
*/
|
*/
|
||||||
public List<ActivityManager.RecentTaskInfo> getAllTaskInfos() {
|
@NonNull
|
||||||
|
public List<ActivityManager.RecentTaskInfo> getTaskInfoList() {
|
||||||
return Arrays.asList(mTasks);
|
return Arrays.asList(mTasks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +149,7 @@ public class GroupedRecentTaskInfo implements Parcelable {
|
|||||||
if (mSplitBounds != null) {
|
if (mSplitBounds != null) {
|
||||||
taskString.append(", SplitBounds: ").append(mSplitBounds);
|
taskString.append(", SplitBounds: ").append(mSplitBounds);
|
||||||
}
|
}
|
||||||
taskString.append(", Type=").append(mType);
|
taskString.append(", Type=");
|
||||||
switch (mType) {
|
switch (mType) {
|
||||||
case TYPE_SINGLE:
|
case TYPE_SINGLE:
|
||||||
taskString.append("TYPE_SINGLE");
|
taskString.append("TYPE_SINGLE");
|
||||||
|
|||||||
@@ -0,0 +1,169 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.wm.shell.recents
|
||||||
|
|
||||||
|
import android.app.ActivityManager
|
||||||
|
import android.graphics.Rect
|
||||||
|
import android.os.Parcel
|
||||||
|
import android.testing.AndroidTestingRunner
|
||||||
|
import android.window.IWindowContainerToken
|
||||||
|
import android.window.WindowContainerToken
|
||||||
|
import androidx.test.filters.SmallTest
|
||||||
|
import com.android.wm.shell.ShellTestCase
|
||||||
|
import com.android.wm.shell.util.GroupedRecentTaskInfo
|
||||||
|
import com.android.wm.shell.util.GroupedRecentTaskInfo.CREATOR
|
||||||
|
import com.android.wm.shell.util.GroupedRecentTaskInfo.TYPE_FREEFORM
|
||||||
|
import com.android.wm.shell.util.GroupedRecentTaskInfo.TYPE_SINGLE
|
||||||
|
import com.android.wm.shell.util.GroupedRecentTaskInfo.TYPE_SPLIT
|
||||||
|
import com.android.wm.shell.util.SplitBounds
|
||||||
|
import com.google.common.truth.Correspondence
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.mockito.Mockito.mock
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for [GroupedRecentTaskInfo]
|
||||||
|
*/
|
||||||
|
@SmallTest
|
||||||
|
@RunWith(AndroidTestingRunner::class)
|
||||||
|
class GroupedRecentTaskInfoTest : ShellTestCase() {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSingleTask_hasCorrectType() {
|
||||||
|
assertThat(singleTaskGroupInfo().type).isEqualTo(TYPE_SINGLE)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSingleTask_task1Set_task2Null() {
|
||||||
|
val group = singleTaskGroupInfo()
|
||||||
|
assertThat(group.taskInfo1.taskId).isEqualTo(1)
|
||||||
|
assertThat(group.taskInfo2).isNull()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSingleTask_taskInfoList_hasOneTask() {
|
||||||
|
val list = singleTaskGroupInfo().taskInfoList
|
||||||
|
assertThat(list).hasSize(1)
|
||||||
|
assertThat(list[0].taskId).isEqualTo(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSplitTasks_hasCorrectType() {
|
||||||
|
assertThat(splitTasksGroupInfo().type).isEqualTo(TYPE_SPLIT)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSplitTasks_task1Set_task2Set_boundsSet() {
|
||||||
|
val group = splitTasksGroupInfo()
|
||||||
|
assertThat(group.taskInfo1.taskId).isEqualTo(1)
|
||||||
|
assertThat(group.taskInfo2?.taskId).isEqualTo(2)
|
||||||
|
assertThat(group.splitBounds).isNotNull()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSplitTasks_taskInfoList_hasTwoTasks() {
|
||||||
|
val list = splitTasksGroupInfo().taskInfoList
|
||||||
|
assertThat(list).hasSize(2)
|
||||||
|
assertThat(list[0].taskId).isEqualTo(1)
|
||||||
|
assertThat(list[1].taskId).isEqualTo(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testFreeformTasks_hasCorrectType() {
|
||||||
|
assertThat(freeformTasksGroupInfo().type).isEqualTo(TYPE_FREEFORM)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSplitTasks_taskInfoList_hasThreeTasks() {
|
||||||
|
val list = freeformTasksGroupInfo().taskInfoList
|
||||||
|
assertThat(list).hasSize(3)
|
||||||
|
assertThat(list[0].taskId).isEqualTo(1)
|
||||||
|
assertThat(list[1].taskId).isEqualTo(2)
|
||||||
|
assertThat(list[2].taskId).isEqualTo(3)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testParcelling_singleTask() {
|
||||||
|
val recentTaskInfo = singleTaskGroupInfo()
|
||||||
|
val parcel = Parcel.obtain()
|
||||||
|
recentTaskInfo.writeToParcel(parcel, 0)
|
||||||
|
parcel.setDataPosition(0)
|
||||||
|
// Read the object back from the parcel
|
||||||
|
val recentTaskInfoParcel = CREATOR.createFromParcel(parcel)
|
||||||
|
assertThat(recentTaskInfoParcel.type).isEqualTo(TYPE_SINGLE)
|
||||||
|
assertThat(recentTaskInfoParcel.taskInfo1.taskId).isEqualTo(1)
|
||||||
|
assertThat(recentTaskInfoParcel.taskInfo2).isNull()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testParcelling_splitTasks() {
|
||||||
|
val recentTaskInfo = splitTasksGroupInfo()
|
||||||
|
val parcel = Parcel.obtain()
|
||||||
|
recentTaskInfo.writeToParcel(parcel, 0)
|
||||||
|
parcel.setDataPosition(0)
|
||||||
|
// Read the object back from the parcel
|
||||||
|
val recentTaskInfoParcel = CREATOR.createFromParcel(parcel)
|
||||||
|
assertThat(recentTaskInfoParcel.type).isEqualTo(TYPE_SPLIT)
|
||||||
|
assertThat(recentTaskInfoParcel.taskInfo1.taskId).isEqualTo(1)
|
||||||
|
assertThat(recentTaskInfoParcel.taskInfo2).isNotNull()
|
||||||
|
assertThat(recentTaskInfoParcel.taskInfo2!!.taskId).isEqualTo(2)
|
||||||
|
assertThat(recentTaskInfoParcel.splitBounds).isNotNull()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testParcelling_freeformTasks() {
|
||||||
|
val recentTaskInfo = freeformTasksGroupInfo()
|
||||||
|
val parcel = Parcel.obtain()
|
||||||
|
recentTaskInfo.writeToParcel(parcel, 0)
|
||||||
|
parcel.setDataPosition(0)
|
||||||
|
// Read the object back from the parcel
|
||||||
|
val recentTaskInfoParcel = CREATOR.createFromParcel(parcel)
|
||||||
|
assertThat(recentTaskInfoParcel.type).isEqualTo(TYPE_FREEFORM)
|
||||||
|
assertThat(recentTaskInfoParcel.taskInfoList).hasSize(3)
|
||||||
|
// Only compare task ids
|
||||||
|
val taskIdComparator = Correspondence.transforming<ActivityManager.RecentTaskInfo, Int>(
|
||||||
|
{ it?.taskId }, "has taskId of"
|
||||||
|
)
|
||||||
|
assertThat(recentTaskInfoParcel.taskInfoList).comparingElementsUsing(taskIdComparator)
|
||||||
|
.containsExactly(1, 2, 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createTaskInfo(id: Int) = ActivityManager.RecentTaskInfo().apply {
|
||||||
|
taskId = id
|
||||||
|
token = WindowContainerToken(mock(IWindowContainerToken::class.java))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun singleTaskGroupInfo(): GroupedRecentTaskInfo {
|
||||||
|
val task = createTaskInfo(id = 1)
|
||||||
|
return GroupedRecentTaskInfo.forSingleTask(task)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun splitTasksGroupInfo(): GroupedRecentTaskInfo {
|
||||||
|
val task1 = createTaskInfo(id = 1)
|
||||||
|
val task2 = createTaskInfo(id = 2)
|
||||||
|
val splitBounds = SplitBounds(Rect(), Rect(), 1, 2)
|
||||||
|
return GroupedRecentTaskInfo.forSplitTasks(task1, task2, splitBounds)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun freeformTasksGroupInfo(): GroupedRecentTaskInfo {
|
||||||
|
val task1 = createTaskInfo(id = 1)
|
||||||
|
val task2 = createTaskInfo(id = 2)
|
||||||
|
val task3 = createTaskInfo(id = 3)
|
||||||
|
return GroupedRecentTaskInfo.forFreeformTasks(task1, task2, task3)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -213,8 +213,8 @@ public class RecentTasksControllerTest extends ShellTestCase {
|
|||||||
assertEquals(GroupedRecentTaskInfo.TYPE_SINGLE, singleGroup2.getType());
|
assertEquals(GroupedRecentTaskInfo.TYPE_SINGLE, singleGroup2.getType());
|
||||||
|
|
||||||
// Check freeform group entries
|
// Check freeform group entries
|
||||||
assertEquals(t1, freeformGroup.getAllTaskInfos().get(0));
|
assertEquals(t1, freeformGroup.getTaskInfoList().get(0));
|
||||||
assertEquals(t3, freeformGroup.getAllTaskInfos().get(1));
|
assertEquals(t3, freeformGroup.getTaskInfoList().get(1));
|
||||||
|
|
||||||
// Check single entries
|
// Check single entries
|
||||||
assertEquals(t2, singleGroup1.getTaskInfo1());
|
assertEquals(t2, singleGroup1.getTaskInfo1());
|
||||||
|
|||||||
Reference in New Issue
Block a user