Home | History | Annotate | Download | only in cts
      1 /*
      2  * Copyright (C) 2008 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 android.content.pm.cts;
     18 
     19 
     20 import android.content.pm.ApplicationInfo;
     21 import android.content.pm.ConfigurationInfo;
     22 import android.content.pm.PackageInfo;
     23 import android.content.pm.PackageItemInfo;
     24 import android.content.pm.PackageManager;
     25 import android.content.pm.Signature;
     26 import android.os.Parcel;
     27 import android.test.AndroidTestCase;
     28 
     29 import java.util.Arrays;
     30 
     31 public class PackageInfoTest extends AndroidTestCase {
     32     private PackageManager mPackageManager;
     33     private PackageInfo mPackageInfo;
     34     private PackageInfo mPackageInfoCmp;
     35     private static final String PACKAGE_NAME = "android.content.cts";
     36 
     37     @Override
     38     protected void setUp() throws Exception {
     39         super.setUp();
     40         mPackageManager = getContext().getPackageManager();
     41         mPackageInfo = mPackageManager.getPackageInfo(PACKAGE_NAME, PackageManager.GET_ACTIVITIES
     42                 | PackageManager.GET_GIDS | PackageManager.GET_CONFIGURATIONS
     43                 | PackageManager.GET_INSTRUMENTATION | PackageManager.GET_PERMISSIONS
     44                 | PackageManager.GET_PROVIDERS | PackageManager.GET_RECEIVERS
     45                 | PackageManager.GET_SERVICES | PackageManager.GET_SIGNATURES
     46                 | PackageManager.GET_UNINSTALLED_PACKAGES);
     47     }
     48 
     49     public void testPackageInfoOp() {
     50         // Test constructor, describeContents, toString
     51         new PackageInfo();
     52         assertEquals(0, mPackageInfo.describeContents());
     53         assertNotNull(mPackageInfo.toString());
     54 
     55         // Test writeToParcel
     56         Parcel p = Parcel.obtain();
     57         mPackageInfo.writeToParcel(p, 0);
     58         p.setDataPosition(0);
     59         mPackageInfoCmp = PackageInfo.CREATOR.createFromParcel(p);
     60         checkPkgInfoSame(mPackageInfo, mPackageInfoCmp);
     61         p.recycle();
     62     }
     63 
     64     private void checkPkgInfoSame(PackageInfo expected, PackageInfo actual) {
     65         assertEquals(expected.packageName, actual.packageName);
     66         assertEquals(expected.getLongVersionCode(), actual.getLongVersionCode());
     67         assertEquals(expected.versionName, actual.versionName);
     68         assertEquals(expected.sharedUserId, actual.sharedUserId);
     69         assertEquals(expected.sharedUserLabel, actual.sharedUserLabel);
     70         if (expected.applicationInfo != null) {
     71             assertNotNull(actual.applicationInfo);
     72             checkAppInfo(expected.applicationInfo, actual.applicationInfo);
     73         } else {
     74             assertNull(actual.applicationInfo);
     75         }
     76         assertTrue(Arrays.equals(expected.gids, actual.gids));
     77         checkInfoArray(expected.activities, actual.activities);
     78         checkInfoArray(expected.receivers, actual.receivers);
     79         checkInfoArray(expected.services, actual.services);
     80         checkInfoArray(expected.providers, actual.providers);
     81         checkInfoArray(expected.instrumentation, actual.instrumentation);
     82         checkInfoArray(expected.permissions, actual.permissions);
     83         assertTrue(Arrays.equals(expected.requestedPermissions, actual.requestedPermissions));
     84         checkSignatureInfo(expected.signatures, actual.signatures);
     85         checkConfigInfo(expected.configPreferences, actual.configPreferences);
     86     }
     87 
     88     private void checkAppInfo(ApplicationInfo expected, ApplicationInfo actual) {
     89         assertEquals(expected.taskAffinity, actual.taskAffinity);
     90         assertEquals(expected.permission, actual.permission);
     91         assertEquals(expected.processName, actual.processName);
     92         assertEquals(expected.className, actual.className);
     93         assertEquals(expected.theme, actual.theme);
     94         assertEquals(expected.flags, actual.flags);
     95         assertEquals(expected.sourceDir, actual.sourceDir);
     96         assertEquals(expected.publicSourceDir, actual.publicSourceDir);
     97         assertEquals(expected.sharedLibraryFiles, actual.sharedLibraryFiles);
     98         assertEquals(expected.dataDir, actual.dataDir);
     99         assertEquals(expected.uid, actual.uid);
    100         assertEquals(expected.enabled, actual.enabled);
    101         assertEquals(expected.manageSpaceActivityName, actual.manageSpaceActivityName);
    102         assertEquals(expected.descriptionRes, actual.descriptionRes);
    103     }
    104 
    105     private void checkInfoArray(PackageItemInfo[] expected, PackageItemInfo[] actual) {
    106         if (expected != null && expected.length > 0) {
    107             assertNotNull(actual);
    108             assertEquals(expected.length, actual.length);
    109             for (int i = 0; i < expected.length; i++) {
    110                 assertEquals(expected[i].name, actual[i].name);
    111             }
    112         } else if (expected == null) {
    113             assertNull(actual);
    114         } else {
    115             assertEquals(0, actual.length);
    116         }
    117     }
    118 
    119     private void checkSignatureInfo(Signature[] expected, Signature[] actual) {
    120         if (expected != null && expected.length > 0) {
    121             assertNotNull(actual);
    122             assertEquals(expected.length, actual.length);
    123             for (int i = 0; i < expected.length; i++) {
    124                 actual[i].equals(expected[i]);
    125             }
    126         } else if (expected == null) {
    127             assertNull(actual);
    128         } else {
    129             assertEquals(0, actual.length);
    130         }
    131     }
    132 
    133     private void checkConfigInfo(ConfigurationInfo[] expected, ConfigurationInfo[] actual) {
    134         if (expected != null && expected.length > 0) {
    135             assertNotNull(actual);
    136             assertEquals(expected.length, actual.length);
    137             for (int i = 0; i < expected.length; i++) {
    138                 assertEquals(expected[i].reqKeyboardType, actual[i].reqKeyboardType);
    139                 assertEquals(expected[i].reqTouchScreen, actual[i].reqTouchScreen);
    140                 assertEquals(expected[i].reqInputFeatures, actual[i].reqInputFeatures);
    141                 assertEquals(expected[i].reqNavigation, actual[i].reqNavigation);
    142             }
    143         } else if (expected == null) {
    144             assertNull(actual);
    145         } else {
    146             assertEquals(0, actual.length);
    147         }
    148     }
    149 }
    150