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