PartnerTest.java revision d617ee5e12914b052682ee6f1bdf3ece28392f54
1/* 2 * Copyright (C) 2015 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 17package com.android.setupwizardlib.test; 18 19import android.content.Context; 20import android.content.ContextWrapper; 21import android.content.Intent; 22import android.content.pm.ActivityInfo; 23import android.content.pm.ApplicationInfo; 24import android.content.pm.PackageManager; 25import android.content.pm.ResolveInfo; 26import android.content.res.Resources; 27import android.test.InstrumentationTestCase; 28import android.test.mock.MockPackageManager; 29import android.test.suitebuilder.annotation.SmallTest; 30 31import com.android.setupwizardlib.util.Partner; 32import com.android.setupwizardlib.util.Partner.ResourceEntry; 33 34import java.util.ArrayList; 35import java.util.Arrays; 36import java.util.List; 37 38public class PartnerTest extends InstrumentationTestCase { 39 40 private TestContext mTestContext; 41 42 @Override 43 protected void setUp() throws Exception { 44 super.setUp(); 45 mTestContext = new TestContext(getInstrumentation().getTargetContext()); 46 Partner.resetForTesting(); 47 } 48 49 @SmallTest 50 public void testLoadPartner() { 51 mTestContext.partnerList = Arrays.asList( 52 createResolveInfo("hocus.pocus", false), 53 createResolveInfo("com.android.setupwizardlib.test", true) 54 ); 55 56 Partner partner = Partner.get(mTestContext); 57 assertNotNull("Partner should not be null", partner); 58 } 59 60 @SmallTest 61 public void testLoadNoPartner() { 62 mTestContext.partnerList = new ArrayList<>(); 63 64 Partner partner = Partner.get(mTestContext); 65 assertNull("Partner should be null", partner); 66 } 67 68 @SmallTest 69 public void testLoadNonSystemPartner() { 70 mTestContext.partnerList = Arrays.asList( 71 createResolveInfo("hocus.pocus", false), 72 createResolveInfo("com.android.setupwizardlib.test", false) 73 ); 74 75 Partner partner = Partner.get(mTestContext); 76 assertNull("Partner should be null", partner); 77 } 78 79 public void testLoadPartnerValue() { 80 mTestContext.partnerList = Arrays.asList( 81 createResolveInfo("hocus.pocus", false), 82 createResolveInfo("com.android.setupwizardlib.test", true) 83 ); 84 85 ResourceEntry entry = 86 Partner.getResourceEntry(mTestContext, R.integer.suwTransitionDuration); 87 int partnerValue = entry.resources.getInteger(entry.id); 88 assertEquals("Partner value should be overlaid to 5000", 5000, partnerValue); 89 } 90 91 public void testLoadDefaultValue() { 92 mTestContext.partnerList = Arrays.asList( 93 createResolveInfo("hocus.pocus", false), 94 createResolveInfo("com.android.setupwizardlib.test", true) 95 ); 96 97 ResourceEntry entry = 98 Partner.getResourceEntry(mTestContext, R.color.suw_navbar_text_dark); 99 int partnerValue = entry.resources.getColor(entry.id); 100 assertEquals("Partner value should default to 0xdeffffff", 0xdeffffff, partnerValue); 101 } 102 103 private ResolveInfo createResolveInfo(String packageName, boolean isSystem) { 104 ResolveInfo info = new ResolveInfo(); 105 info.resolvePackageName = packageName; 106 ActivityInfo activityInfo = new ActivityInfo(); 107 ApplicationInfo appInfo = new ApplicationInfo(); 108 appInfo.flags = isSystem ? ApplicationInfo.FLAG_SYSTEM : 0; 109 appInfo.packageName = packageName; 110 activityInfo.applicationInfo = appInfo; 111 activityInfo.packageName = packageName; 112 activityInfo.name = packageName; 113 info.activityInfo = activityInfo; 114 return info; 115 } 116 117 private static class TestPackageManager extends MockPackageManager { 118 119 private Context mTestContext; 120 121 public TestPackageManager(Context testContext) { 122 mTestContext = testContext; 123 } 124 125 @Override 126 public Resources getResourcesForApplication(ApplicationInfo app) { 127 if (app != null && "com.android.setupwizardlib.test".equals(app.packageName)) { 128 return mTestContext.getResources(); 129 } else { 130 return super.getResourcesForApplication(app); 131 } 132 } 133 134 @Override 135 public List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags) { 136 if ("com.android.setupwizard.action.PARTNER_CUSTOMIZATION".equals(intent.getAction())) { 137 return ((TestContext) mTestContext).partnerList; 138 } else { 139 return super.queryBroadcastReceivers(intent, flags); 140 } 141 } 142 } 143 144 private static class TestContext extends ContextWrapper { 145 146 public List<ResolveInfo> partnerList; 147 148 public TestContext(Context context) { 149 super(context); 150 } 151 152 @Override 153 public PackageManager getPackageManager() { 154 return new TestPackageManager(this); 155 } 156 } 157} 158