1 /*
2  * Copyright (C) 2022 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.systemui.complication;
18 
19 import static com.android.systemui.complication.Complication.COMPLICATION_TYPE_AIR_QUALITY;
20 import static com.android.systemui.complication.Complication.COMPLICATION_TYPE_CAST_INFO;
21 import static com.android.systemui.complication.Complication.COMPLICATION_TYPE_DATE;
22 import static com.android.systemui.complication.Complication.COMPLICATION_TYPE_HOME_CONTROLS;
23 import static com.android.systemui.complication.Complication.COMPLICATION_TYPE_MEDIA_ENTRY;
24 import static com.android.systemui.complication.Complication.COMPLICATION_TYPE_SMARTSPACE;
25 import static com.android.systemui.complication.Complication.COMPLICATION_TYPE_TIME;
26 import static com.android.systemui.complication.Complication.COMPLICATION_TYPE_WEATHER;
27 import static com.android.systemui.complication.ComplicationUtils.convertComplicationType;
28 import static com.android.systemui.complication.ComplicationUtils.convertComplicationTypes;
29 
30 
31 import static com.google.common.truth.Truth.assertThat;
32 
33 import android.testing.AndroidTestingRunner;
34 
35 import androidx.test.filters.SmallTest;
36 
37 import com.android.settingslib.dream.DreamBackend;
38 import com.android.systemui.SysuiTestCase;
39 
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 
43 import java.util.Arrays;
44 import java.util.Collections;
45 import java.util.HashSet;
46 import java.util.Set;
47 
48 @SmallTest
49 @RunWith(AndroidTestingRunner.class)
50 public class ComplicationUtilsTest extends SysuiTestCase {
51     @Test
testConvertComplicationType()52     public void testConvertComplicationType() {
53         assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_TIME))
54                 .isEqualTo(COMPLICATION_TYPE_TIME);
55         assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_DATE))
56                 .isEqualTo(COMPLICATION_TYPE_DATE);
57         assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_WEATHER))
58                 .isEqualTo(COMPLICATION_TYPE_WEATHER);
59         assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_AIR_QUALITY))
60                 .isEqualTo(COMPLICATION_TYPE_AIR_QUALITY);
61         assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_CAST_INFO))
62                 .isEqualTo(COMPLICATION_TYPE_CAST_INFO);
63         assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS))
64                 .isEqualTo(COMPLICATION_TYPE_HOME_CONTROLS);
65         assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_SMARTSPACE))
66                 .isEqualTo(COMPLICATION_TYPE_SMARTSPACE);
67         assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_MEDIA_ENTRY))
68                 .isEqualTo(COMPLICATION_TYPE_MEDIA_ENTRY);
69     }
70 
71     @Test
testConvertComplicationTypesEmpty()72     public void testConvertComplicationTypesEmpty() {
73         final Set<Integer> input = new HashSet<>();
74         final int expected = Complication.COMPLICATION_TYPE_NONE;
75 
76         assertThat(convertComplicationTypes(input)).isEqualTo(expected);
77     }
78 
79     @Test
testConvertComplicationTypesSingleValue()80     public void testConvertComplicationTypesSingleValue() {
81         final Set<Integer> input = new HashSet<>(
82                 Collections.singleton(DreamBackend.COMPLICATION_TYPE_WEATHER));
83         final int expected = Complication.COMPLICATION_TYPE_WEATHER;
84 
85         assertThat(convertComplicationTypes(input)).isEqualTo(expected);
86     }
87 
88     @Test
testConvertComplicationTypesSingleValueMultipleValues()89     public void testConvertComplicationTypesSingleValueMultipleValues() {
90         final Set<Integer> input = new HashSet<>(
91                 Arrays.asList(DreamBackend.COMPLICATION_TYPE_TIME,
92                         DreamBackend.COMPLICATION_TYPE_DATE,
93                         DreamBackend.COMPLICATION_TYPE_WEATHER,
94                         DreamBackend.COMPLICATION_TYPE_AIR_QUALITY,
95                         DreamBackend.COMPLICATION_TYPE_CAST_INFO));
96         final int expected =
97                 Complication.COMPLICATION_TYPE_TIME | Complication.COMPLICATION_TYPE_DATE
98                         | Complication.COMPLICATION_TYPE_WEATHER | COMPLICATION_TYPE_AIR_QUALITY
99                         | COMPLICATION_TYPE_CAST_INFO;
100 
101         assertThat(convertComplicationTypes(input)).isEqualTo(expected);
102     }
103 }
104