1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.quickstep.taskbar.customization 18 19 import com.android.launcher3.taskbar.TaskbarActivityContext 20 import com.android.launcher3.taskbar.customization.TaskbarFeatureEvaluator 21 import com.android.launcher3.taskbar.customization.TaskbarIconSpecs 22 import com.android.launcher3.taskbar.customization.TaskbarSpecsEvaluator 23 import com.android.launcher3.util.LauncherMultivalentJUnit 24 import com.google.common.truth.Truth.assertThat 25 import org.junit.Test 26 import org.junit.runner.RunWith 27 import org.mockito.kotlin.doReturn 28 import org.mockito.kotlin.mock 29 import org.mockito.kotlin.spy 30 import org.mockito.kotlin.whenever 31 32 @RunWith(LauncherMultivalentJUnit::class) 33 class TaskbarSpecsEvaluatorTest { 34 35 private val taskbarFeatureEvaluator = mock<TaskbarFeatureEvaluator>() 36 private val taskbarActivityContext = mock<TaskbarActivityContext>() 37 private var taskbarSpecsEvaluator = 38 spy(TaskbarSpecsEvaluator(taskbarActivityContext, taskbarFeatureEvaluator, 0, 0)) 39 40 @Test testGetIconSizeByGrid_whenTaskbarIsTransient_withValidRowAndColumnInLandscapenull41 fun testGetIconSizeByGrid_whenTaskbarIsTransient_withValidRowAndColumnInLandscape() { 42 doReturn(true).whenever(taskbarFeatureEvaluator).isTransient 43 doReturn(true).whenever(taskbarFeatureEvaluator).isLandscape 44 assertThat(taskbarSpecsEvaluator.getIconSizeByGrid(4, 4)) 45 .isEqualTo(TaskbarIconSpecs.iconSize52dp) 46 } 47 48 @Test testGetIconSizeByGrid_whenTaskbarIsTransient_withValidRowAndColumnInPortraitnull49 fun testGetIconSizeByGrid_whenTaskbarIsTransient_withValidRowAndColumnInPortrait() { 50 doReturn(true).whenever(taskbarFeatureEvaluator).isTransient 51 doReturn(false).whenever(taskbarFeatureEvaluator).isLandscape 52 assertThat(taskbarSpecsEvaluator.getIconSizeByGrid(4, 4)) 53 .isEqualTo(TaskbarIconSpecs.iconSize48dp) 54 } 55 56 @Test testGetIconSizeByGrid_whenTaskbarIsTransient_withInvalidRowAndColumnnull57 fun testGetIconSizeByGrid_whenTaskbarIsTransient_withInvalidRowAndColumn() { 58 doReturn(true).whenever(taskbarFeatureEvaluator).isTransient 59 assertThat(taskbarSpecsEvaluator.getIconSizeByGrid(1, 2)) 60 .isEqualTo(TaskbarIconSpecs.defaultTransientIconSize) 61 } 62 63 @Test testGetIconSizeByGrid_whenTaskbarIsPersistentnull64 fun testGetIconSizeByGrid_whenTaskbarIsPersistent() { 65 doReturn(false).whenever(taskbarFeatureEvaluator).isTransient 66 assertThat(taskbarSpecsEvaluator.getIconSizeByGrid(6, 5)) 67 .isEqualTo(TaskbarIconSpecs.defaultPersistentIconSize) 68 } 69 70 @Test testGetIconSizeStepDown_whenTaskbarIsPersistentnull71 fun testGetIconSizeStepDown_whenTaskbarIsPersistent() { 72 doReturn(false).whenever(taskbarFeatureEvaluator).isTransient 73 assertThat(taskbarSpecsEvaluator.getIconSizeStepDown(TaskbarIconSpecs.iconSize44dp)) 74 .isEqualTo(TaskbarIconSpecs.defaultPersistentIconSize) 75 } 76 77 @Test testGetIconSizeStepDown_whenTaskbarIsTransientAndIconSizeAreInBoundnull78 fun testGetIconSizeStepDown_whenTaskbarIsTransientAndIconSizeAreInBound() { 79 doReturn(true).whenever(taskbarFeatureEvaluator).isTransient 80 assertThat(taskbarSpecsEvaluator.getIconSizeStepDown(TaskbarIconSpecs.iconSize52dp)) 81 .isEqualTo(TaskbarIconSpecs.iconSize48dp) 82 } 83 84 @Test testGetIconSizeStepDown_whenTaskbarIsTransientAndIconSizeAreOutOfBoundnull85 fun testGetIconSizeStepDown_whenTaskbarIsTransientAndIconSizeAreOutOfBound() { 86 doReturn(true).whenever(taskbarFeatureEvaluator).isTransient 87 assertThat(taskbarSpecsEvaluator.getIconSizeStepDown(TaskbarIconSpecs.iconSize44dp)) 88 .isEqualTo(TaskbarIconSpecs.iconSize44dp) 89 } 90 91 @Test testGetIconSizeStepUp_whenTaskbarIsPersistentnull92 fun testGetIconSizeStepUp_whenTaskbarIsPersistent() { 93 doReturn(false).whenever(taskbarFeatureEvaluator).isTransient 94 assertThat(taskbarSpecsEvaluator.getIconSizeStepUp(TaskbarIconSpecs.iconSize40dp)) 95 .isEqualTo(TaskbarIconSpecs.iconSize40dp) 96 } 97 98 @Test testGetIconSizeStepUp_whenTaskbarIsTransientAndIconSizeAreInBoundnull99 fun testGetIconSizeStepUp_whenTaskbarIsTransientAndIconSizeAreInBound() { 100 doReturn(true).whenever(taskbarFeatureEvaluator).isTransient 101 assertThat(taskbarSpecsEvaluator.getIconSizeStepUp(TaskbarIconSpecs.iconSize44dp)) 102 .isEqualTo(TaskbarIconSpecs.iconSize48dp) 103 } 104 105 @Test testGetIconSizeStepUp_whenTaskbarIsTransientAndIconSizeAreOutOfBoundnull106 fun testGetIconSizeStepUp_whenTaskbarIsTransientAndIconSizeAreOutOfBound() { 107 doReturn(true).whenever(taskbarFeatureEvaluator).isTransient 108 assertThat(taskbarSpecsEvaluator.getIconSizeStepUp(TaskbarIconSpecs.iconSize52dp)) 109 .isEqualTo(TaskbarIconSpecs.iconSize52dp) 110 } 111 } 112