Home | History | Annotate | Download | only in pm
      1 /*
      2  * Copyright (C) 2016 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.server.pm;
     18 
     19 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
     20 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
     21 
     22 import static org.hamcrest.CoreMatchers.is;
     23 import static org.junit.Assert.assertThat;
     24 
     25 import android.content.pm.PackageUserState;
     26 import android.os.PersistableBundle;
     27 import android.support.test.filters.SmallTest;
     28 import android.support.test.runner.AndroidJUnit4;
     29 import android.util.ArraySet;
     30 
     31 import org.junit.Test;
     32 import org.junit.runner.RunWith;
     33 
     34 @RunWith(AndroidJUnit4.class)
     35 @SmallTest
     36 public class PackageUserStateTest {
     37 
     38     @Test
     39     public void testPackageUserState01()  {
     40         final PackageUserState testUserState = new PackageUserState();
     41         PackageUserState oldUserState;
     42 
     43         oldUserState = new PackageUserState();
     44         assertThat(testUserState.equals(null), is(false));
     45         assertThat(testUserState.equals(testUserState), is(true));
     46         assertThat(testUserState.equals(oldUserState), is(true));
     47 
     48         oldUserState = new PackageUserState();
     49         oldUserState.appLinkGeneration = 6;
     50         assertThat(testUserState.equals(oldUserState), is(false));
     51 
     52         oldUserState = new PackageUserState();
     53         oldUserState.ceDataInode = 4000L;
     54         assertThat(testUserState.equals(oldUserState), is(false));
     55 
     56         oldUserState = new PackageUserState();
     57         oldUserState.domainVerificationStatus = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
     58         assertThat(testUserState.equals(oldUserState), is(false));
     59 
     60         oldUserState = new PackageUserState();
     61         oldUserState.enabled = COMPONENT_ENABLED_STATE_ENABLED;
     62         assertThat(testUserState.equals(oldUserState), is(false));
     63 
     64         oldUserState = new PackageUserState();
     65         oldUserState.hidden = true;
     66         assertThat(testUserState.equals(oldUserState), is(false));
     67 
     68         oldUserState = new PackageUserState();
     69         oldUserState.installed = false;
     70         assertThat(testUserState.equals(oldUserState), is(false));
     71 
     72         oldUserState = new PackageUserState();
     73         oldUserState.notLaunched = true;
     74         assertThat(testUserState.equals(oldUserState), is(false));
     75 
     76         oldUserState = new PackageUserState();
     77         oldUserState.stopped = true;
     78         assertThat(testUserState.equals(oldUserState), is(false));
     79 
     80         oldUserState = new PackageUserState();
     81         oldUserState.suspended = true;
     82         assertThat(testUserState.equals(oldUserState), is(false));
     83     }
     84 
     85     @Test
     86     public void testPackageUserState02()  {
     87         final PackageUserState testUserState01 = new PackageUserState();
     88         PackageUserState oldUserState;
     89 
     90         oldUserState = new PackageUserState();
     91         oldUserState.lastDisableAppCaller = "unit_test";
     92         assertThat(testUserState01.equals(oldUserState), is(false));
     93 
     94         final PackageUserState testUserState02 = new PackageUserState();
     95         testUserState02.lastDisableAppCaller = "unit_test";
     96         assertThat(testUserState02.equals(oldUserState), is(true));
     97 
     98         final PackageUserState testUserState03 = new PackageUserState();
     99         testUserState03.lastDisableAppCaller = "unit_test_00";
    100         assertThat(testUserState03.equals(oldUserState), is(false));
    101     }
    102 
    103     @Test
    104     public void testPackageUserState03()  {
    105         final PackageUserState oldUserState = new PackageUserState();
    106 
    107         // only new user state has array defined; different
    108         final PackageUserState testUserState01 = new PackageUserState();
    109         testUserState01.disabledComponents = new ArraySet<>();
    110         assertThat(testUserState01.equals(oldUserState), is(false));
    111 
    112         // only old user state has array defined; different
    113         final PackageUserState testUserState02 = new PackageUserState();
    114         oldUserState.disabledComponents = new ArraySet<>();
    115         assertThat(testUserState02.equals(oldUserState), is(false));
    116 
    117         // both states have array defined; not different
    118         final PackageUserState testUserState03 = new PackageUserState();
    119         testUserState03.disabledComponents = new ArraySet<>();
    120         assertThat(testUserState03.equals(oldUserState), is(true));
    121         // fewer elements in old user state; different
    122         testUserState03.disabledComponents.add("com.android.unit_test01");
    123         testUserState03.disabledComponents.add("com.android.unit_test02");
    124         testUserState03.disabledComponents.add("com.android.unit_test03");
    125         oldUserState.disabledComponents.add("com.android.unit_test03");
    126         oldUserState.disabledComponents.add("com.android.unit_test02");
    127         assertThat(testUserState03.equals(oldUserState), is(false));
    128         // same elements in old user state; not different
    129         oldUserState.disabledComponents.add("com.android.unit_test01");
    130         assertThat(testUserState03.equals(oldUserState), is(true));
    131         // more elements in old user state; different
    132         oldUserState.disabledComponents.add("com.android.unit_test04");
    133         assertThat(testUserState03.equals(oldUserState), is(false));
    134         // different elements in old user state; different
    135         testUserState03.disabledComponents.add("com.android.unit_test_04");
    136         assertThat(testUserState03.equals(oldUserState), is(false));
    137     }
    138 
    139     @Test
    140     public void testPackageUserState04()  {
    141         final PackageUserState oldUserState = new PackageUserState();
    142 
    143         // only new user state has array defined; different
    144         final PackageUserState testUserState01 = new PackageUserState();
    145         testUserState01.enabledComponents = new ArraySet<>();
    146         assertThat(testUserState01.equals(oldUserState), is(false));
    147 
    148         // only old user state has array defined; different
    149         final PackageUserState testUserState02 = new PackageUserState();
    150         oldUserState.enabledComponents = new ArraySet<>();
    151         assertThat(testUserState02.equals(oldUserState), is(false));
    152 
    153         // both states have array defined; not different
    154         final PackageUserState testUserState03 = new PackageUserState();
    155         testUserState03.enabledComponents = new ArraySet<>();
    156         assertThat(testUserState03.equals(oldUserState), is(true));
    157         // fewer elements in old user state; different
    158         testUserState03.enabledComponents.add("com.android.unit_test01");
    159         testUserState03.enabledComponents.add("com.android.unit_test02");
    160         testUserState03.enabledComponents.add("com.android.unit_test03");
    161         oldUserState.enabledComponents.add("com.android.unit_test03");
    162         oldUserState.enabledComponents.add("com.android.unit_test02");
    163         assertThat(testUserState03.equals(oldUserState), is(false));
    164         // same elements in old user state; not different
    165         oldUserState.enabledComponents.add("com.android.unit_test01");
    166         assertThat(testUserState03.equals(oldUserState), is(true));
    167         // more elements in old user state; different
    168         oldUserState.enabledComponents.add("com.android.unit_test04");
    169         assertThat(testUserState03.equals(oldUserState), is(false));
    170         // different elements in old user state; different
    171         testUserState03.enabledComponents.add("com.android.unit_test_04");
    172         assertThat(testUserState03.equals(oldUserState), is(false));
    173     }
    174 
    175     @Test
    176     public void testPackageUserState05() {
    177         PersistableBundle appExtras1 = new PersistableBundle();
    178         PersistableBundle appExtras2 = new PersistableBundle();
    179         appExtras1.putInt("appExtraId", 1);
    180         appExtras2.putInt("appExtraId", 2);
    181         PersistableBundle launcherExtras1 = new PersistableBundle();
    182         PersistableBundle launcherExtras2 = new PersistableBundle();
    183         launcherExtras1.putString("name", "launcherExtras1");
    184         launcherExtras2.putString("name", "launcherExtras2");
    185         final String suspendingPackage1 = "package1";
    186         final String suspendingPackage2 = "package2";
    187         final String dialogMessage1 = "dialogMessage1";
    188         final String dialogMessage2 = "dialogMessage2";
    189 
    190         final PackageUserState testUserState1 = new PackageUserState();
    191         testUserState1.suspended = true;
    192         testUserState1.suspendedAppExtras = appExtras1;
    193         testUserState1.suspendedLauncherExtras = launcherExtras1;
    194         testUserState1.suspendingPackage = suspendingPackage1;
    195         testUserState1.dialogMessage = dialogMessage1;
    196 
    197         PackageUserState testUserState2 = new PackageUserState(testUserState1);
    198         assertThat(testUserState1.equals(testUserState2), is(true));
    199         testUserState2.suspendingPackage = suspendingPackage2;
    200         assertThat(testUserState1.equals(testUserState2), is(false));
    201 
    202         testUserState2 = new PackageUserState(testUserState1);
    203         testUserState2.suspendedAppExtras = appExtras2;
    204         assertThat(testUserState1.equals(testUserState2), is(false));
    205 
    206         testUserState2 = new PackageUserState(testUserState1);
    207         testUserState2.suspendedLauncherExtras = launcherExtras2;
    208         assertThat(testUserState1.equals(testUserState2), is(false));
    209 
    210         testUserState2 = new PackageUserState(testUserState1);
    211         testUserState2.dialogMessage = dialogMessage2;
    212         assertThat(testUserState1.equals(testUserState2), is(false));
    213 
    214         testUserState2 = new PackageUserState(testUserState1);
    215         testUserState2.suspended = testUserState1.suspended = false;
    216         // Everything is different but irrelevant if suspended is false
    217         testUserState2.suspendingPackage = suspendingPackage2;
    218         testUserState2.dialogMessage = dialogMessage2;
    219         testUserState2.suspendedAppExtras = appExtras2;
    220         testUserState2.suspendedLauncherExtras = launcherExtras2;
    221         assertThat(testUserState1.equals(testUserState2), is(true));
    222     }
    223 
    224 }
    225