• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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