1 /* 2 * Copyright (C) 2021 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 package com.android.launcher3.util; 17 18 import static com.android.launcher3.widget.WidgetSections.NO_CATEGORY; 19 20 import static com.google.common.truth.Truth.assertThat; 21 22 import android.os.UserHandle; 23 24 import androidx.test.ext.junit.runners.AndroidJUnit4; 25 import androidx.test.filters.SmallTest; 26 27 import com.android.launcher3.model.data.PackageItemInfo; 28 29 import org.junit.Rule; 30 import org.junit.Test; 31 import org.junit.rules.ExpectedException; 32 import org.junit.runner.RunWith; 33 34 @SmallTest 35 @RunWith(AndroidJUnit4.class) 36 public final class PackageUserKeyTest { 37 @Rule 38 public ExpectedException exception = ExpectedException.none(); 39 40 private static final String TEST_PACKAGE = "com.android.test.package"; 41 private static final int CONVERSATIONS = 0; 42 private static final int WEATHER = 1; 43 44 @Test fromPackageItemInfo_shouldCreateExpectedObject()45 public void fromPackageItemInfo_shouldCreateExpectedObject() { 46 PackageUserKey packageUserKey = PackageUserKey.fromPackageItemInfo( 47 new PackageItemInfo(TEST_PACKAGE, UserHandle.CURRENT)); 48 49 assertThat(packageUserKey.mPackageName).isEqualTo(TEST_PACKAGE); 50 assertThat(packageUserKey.mWidgetCategory).isEqualTo(NO_CATEGORY); 51 assertThat(packageUserKey.mUser).isEqualTo(UserHandle.CURRENT); 52 } 53 54 @Test constructor_packageNameAndUserHandle_shouldCreateExpectedObject()55 public void constructor_packageNameAndUserHandle_shouldCreateExpectedObject() { 56 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 57 58 assertThat(packageUserKey.mPackageName).isEqualTo(TEST_PACKAGE); 59 assertThat(packageUserKey.mWidgetCategory).isEqualTo(NO_CATEGORY); 60 assertThat(packageUserKey.mUser).isEqualTo(UserHandle.CURRENT); 61 } 62 63 @Test constructor_widgetCategoryAndUserHandle_shouldCreateExpectedObject()64 public void constructor_widgetCategoryAndUserHandle_shouldCreateExpectedObject() { 65 PackageUserKey packageUserKey = new PackageUserKey(CONVERSATIONS, UserHandle.CURRENT); 66 67 assertThat(packageUserKey.mPackageName).isEqualTo(""); 68 assertThat(packageUserKey.mWidgetCategory).isEqualTo(CONVERSATIONS); 69 assertThat(packageUserKey.mUser).isEqualTo(UserHandle.CURRENT); 70 } 71 72 @Test equals_sameObject_shouldReturnTrue()73 public void equals_sameObject_shouldReturnTrue() { 74 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 75 PackageUserKey otherPackageUserKey = packageUserKey; 76 77 assertThat(packageUserKey).isEqualTo(otherPackageUserKey); 78 } 79 80 @Test equals_differentObjectSameContent_shouldReturnTrue()81 public void equals_differentObjectSameContent_shouldReturnTrue() { 82 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 83 PackageUserKey otherPackageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 84 85 assertThat(packageUserKey).isEqualTo(otherPackageUserKey); 86 } 87 88 @Test equals_compareAgainstNull_shouldReturnFalse()89 public void equals_compareAgainstNull_shouldReturnFalse() { 90 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 91 92 assertThat(packageUserKey).isNotEqualTo(null); 93 } 94 95 @Test equals_differentPackage_shouldReturnFalse()96 public void equals_differentPackage_shouldReturnFalse() { 97 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 98 PackageUserKey otherPackageUserKey = new PackageUserKey(TEST_PACKAGE + "1", 99 UserHandle.CURRENT); 100 101 assertThat(packageUserKey).isNotEqualTo(otherPackageUserKey); 102 } 103 104 105 @Test equals_differentCategory_shouldReturnFalse()106 public void equals_differentCategory_shouldReturnFalse() { 107 PackageUserKey packageUserKey = new PackageUserKey(WEATHER, UserHandle.CURRENT); 108 PackageUserKey otherPackageUserKey = new PackageUserKey(CONVERSATIONS, UserHandle.CURRENT); 109 110 assertThat(packageUserKey).isNotEqualTo(otherPackageUserKey); 111 } 112 113 @Test equals_differentUser_shouldReturnFalse()114 public void equals_differentUser_shouldReturnFalse() { 115 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.of(1)); 116 PackageUserKey otherPackageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.of(2)); 117 118 assertThat(packageUserKey).isNotEqualTo(otherPackageUserKey); 119 } 120 121 @Test hashCode_sameObject_shouldBeTheSame()122 public void hashCode_sameObject_shouldBeTheSame() { 123 PackageUserKey packageUserKey = new PackageUserKey(WEATHER, UserHandle.CURRENT); 124 PackageUserKey otherPackageUserKey = packageUserKey; 125 126 assertThat(packageUserKey.hashCode()).isEqualTo(otherPackageUserKey.hashCode()); 127 } 128 129 @Test hashCode_differentObjectSameContent_shouldBeTheSame()130 public void hashCode_differentObjectSameContent_shouldBeTheSame() { 131 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 132 PackageUserKey otherPackageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 133 134 assertThat(packageUserKey.hashCode()).isEqualTo(otherPackageUserKey.hashCode()); 135 } 136 137 @Test hashCode_differentPackage_shouldBeDifferent()138 public void hashCode_differentPackage_shouldBeDifferent() { 139 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.CURRENT); 140 PackageUserKey otherPackageUserKey = new PackageUserKey(TEST_PACKAGE + "1", 141 UserHandle.CURRENT); 142 143 assertThat(packageUserKey.hashCode()).isNotEqualTo(otherPackageUserKey.hashCode()); 144 } 145 146 147 @Test hashCode_differentCategory_shouldBeDifferent()148 public void hashCode_differentCategory_shouldBeDifferent() { 149 PackageUserKey packageUserKey = new PackageUserKey(WEATHER, UserHandle.CURRENT); 150 PackageUserKey otherPackageUserKey = new PackageUserKey(CONVERSATIONS, UserHandle.CURRENT); 151 152 assertThat(packageUserKey.hashCode()).isNotEqualTo(otherPackageUserKey.hashCode()); 153 } 154 155 @Test hashCode_differentUser_shouldBeDifferent()156 public void hashCode_differentUser_shouldBeDifferent() { 157 PackageUserKey packageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.of(1)); 158 PackageUserKey otherPackageUserKey = new PackageUserKey(TEST_PACKAGE, UserHandle.of(2)); 159 160 assertThat(packageUserKey.hashCode()).isNotEqualTo(otherPackageUserKey.hashCode()); 161 } 162 } 163