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.incallui; 18 19 import android.os.Bundle; 20 import android.telecom.Connection; 21 import android.test.AndroidTestCase; 22 import android.test.suitebuilder.annotation.SmallTest; 23 24 import java.util.ArrayList; 25 import java.util.Arrays; 26 27 // @formatter:off 28 /** 29 * Run test with 30 * adb shell am instrument -e class com.android.incallui.CallTest -w com.google.android.dialer.tests/android.test.InstrumentationTestRunner 31 */ 32 // @formatter:on 33 34 @SmallTest 35 public class CallTest extends AndroidTestCase { 36 37 private TestCall mCall; 38 39 private final static String CHILD_NUMBER = "123"; 40 private final static ArrayList<String> LAST_FORWARDED_NUMBER_LIST = 41 new ArrayList(Arrays.asList("456", "789")); 42 private final static String LAST_FORWARDED_NUMBER = "789"; 43 private final static String CALL_SUBJECT = "foo"; 44 45 @Override setUp()46 public void setUp() throws Exception { 47 super.setUp(); 48 49 mCall = new TestCall(); 50 } 51 52 @Override tearDown()53 public void tearDown() throws Exception { 54 super.tearDown(); 55 } 56 testUpdateFromCallExtras()57 public void testUpdateFromCallExtras() { 58 mCall.updateFromCallExtras(getTestBundle()); 59 verifyTestBundleResult(); 60 } 61 testUpdateFromCallExtras_corruptedBundle()62 public void testUpdateFromCallExtras_corruptedBundle() { 63 mCall.setBundleCorrupted(true); 64 mCall.updateFromCallExtras(getTestBundle()); 65 66 assertEquals(mCall.getChildNumber(), null); 67 assertEquals(mCall.getLastForwardedNumber(), null); 68 assertEquals(mCall.getCallSubject(), null); 69 } 70 testUpdateFromCallExtras_corruptedBundleOverwrite()71 public void testUpdateFromCallExtras_corruptedBundleOverwrite() { 72 73 mCall.updateFromCallExtras(getTestBundle()); 74 mCall.setBundleCorrupted(true); 75 Bundle bundle = new Bundle(); 76 bundle.putString(Connection.EXTRA_CHILD_ADDRESS, "321"); 77 bundle.putStringArrayList(Connection.EXTRA_LAST_FORWARDED_NUMBER, 78 new ArrayList(Arrays.asList("654", "987"))); 79 bundle.putString(Connection.EXTRA_CALL_SUBJECT, "bar"); 80 mCall.updateFromCallExtras(bundle); 81 //corrupted bundle should not overwrite existing values. 82 verifyTestBundleResult(); 83 } 84 getTestBundle()85 private Bundle getTestBundle() { 86 Bundle bundle = new Bundle(); 87 bundle.putString(Connection.EXTRA_CHILD_ADDRESS, CHILD_NUMBER); 88 bundle.putStringArrayList(Connection.EXTRA_LAST_FORWARDED_NUMBER, 89 LAST_FORWARDED_NUMBER_LIST); 90 bundle.putString(Connection.EXTRA_CALL_SUBJECT, CALL_SUBJECT); 91 return bundle; 92 } 93 verifyTestBundleResult()94 private void verifyTestBundleResult() { 95 assertEquals(CHILD_NUMBER, mCall.getChildNumber()); 96 assertEquals(LAST_FORWARDED_NUMBER, mCall.getLastForwardedNumber()); 97 assertEquals(CALL_SUBJECT, mCall.getCallSubject()); 98 } 99 100 private class TestCall extends Call { 101 102 private boolean mBundleCorrupted = false; 103 TestCall()104 public TestCall() { 105 super(Call.State.NEW); 106 } 107 108 @Override updateFromCallExtras(Bundle bundle)109 public void updateFromCallExtras(Bundle bundle) { 110 super.updateFromCallExtras(bundle); 111 } 112 setBundleCorrupted(boolean value)113 public void setBundleCorrupted(boolean value) { 114 this.mBundleCorrupted = value; 115 } 116 117 @Override areCallExtrasCorrupted(Bundle callExtras)118 protected boolean areCallExtrasCorrupted(Bundle callExtras) { 119 if (mBundleCorrupted) { 120 return true; 121 } 122 return super.areCallExtrasCorrupted(callExtras); 123 } 124 } 125 } 126