summaryrefslogtreecommitdiff
path: root/tests/src
diff options
context:
space:
mode:
authorTa-wei Yen <twyen@google.com>2016-03-07 15:29:13 -0800
committerTa-wei Yen <twyen@google.com>2016-03-07 15:29:13 -0800
commitbcb15f99dff4e01343bb7470135f5392a65a01f4 (patch)
tree9b082d6cc0cd3e6f60e1270331d5a65fc4f03982 /tests/src
parent40026e882fa3e5bdc897606e4cb96ed6ac1bfbb9 (diff)
Add contact photo for missed call notifications
+ ContactPhotoLoader to create the appropriate icon from a ContactInfo - NameLookupQuery in CallLogNotificationsHelper#getContactInfo To show a photo the name is not enough. Full query need to be made to retrieve the photoUri. + class Assert in util + Gradle directory setup for dialer tests (Note: this is just for project setup in Android Studio, tests are still not runnable in gradle) Bug:27276108 Change-Id: I0ed2147f2bb60454fe5a5ad6c25fe99727441880
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java b/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java
new file mode 100644
index 000000000..42a5ae966
--- /dev/null
+++ b/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.contactinfo;
+
+import android.app.Instrumentation;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.support.test.InstrumentationRegistry;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
+import android.test.AndroidTestCase;
+import android.test.InstrumentationTestCase;
+import android.text.TextUtils;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.tests.R;
+
+public class ContactPhotoLoaderTest extends InstrumentationTestCase {
+
+ private Context mContext;
+
+ @Override
+ public void setUp() {
+ mContext = getInstrumentation().getTargetContext();
+ }
+
+ public void testConstructor() {
+ ContactPhotoLoader loader = new ContactPhotoLoader(mContext, new ContactInfo());
+ }
+
+ public void testConstructor_NullContext() {
+ try {
+ ContactPhotoLoader loader = new ContactPhotoLoader(null, new ContactInfo());
+ fail();
+ } catch (NullPointerException e) {
+ //expected
+ }
+ }
+
+ public void testConstructor_NullContactInfo() {
+ try {
+ ContactPhotoLoader loader = new ContactPhotoLoader(mContext, null);
+ fail();
+ } catch (NullPointerException e) {
+ //expected
+ }
+ }
+
+ public void testGetIcon_Photo() {
+ ContactInfo info = getTestContactInfo();
+ info.photoUri = getResourceUri(R.drawable.phone_icon);
+ ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info);
+ assertTrue(loader.getIcon() instanceof RoundedBitmapDrawable);
+ }
+
+ public void testGetIcon_Photo_Invalid() {
+ ContactInfo info = getTestContactInfo();
+ info.photoUri = Uri.parse("file://invalid/uri");
+ ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info);
+ //Should fall back to LetterTileDrawable
+ assertTrue(loader.getIcon() instanceof LetterTileDrawable);
+ }
+
+ public void testGetIcon_LetterTile() {
+ ContactInfo info = getTestContactInfo();
+ ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info);
+ assertTrue(loader.getIcon() instanceof LetterTileDrawable);
+ }
+
+ private Uri getResourceUri(int resId) {
+ Context testContext = getInstrumentation().getContext();
+ Resources resources = testContext.getResources();
+
+ assertNotNull(resources.getDrawable(resId));
+ return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"
+ + testContext.getPackageName()
+ + '/' + resId);
+ }
+
+ private ContactInfo getTestContactInfo() {
+ ContactInfo info = new ContactInfo();
+ info.name = "foo";
+ info.lookupKey = "bar";
+ return info;
+ }
+} \ No newline at end of file