1b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu/*
2b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * Copyright (C) 2016 The Android Open Source Project
3b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu *
4b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * Licensed under the Apache License, Version 2.0 (the "License");
5b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * you may not use this file except in compliance with the License.
6b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * You may obtain a copy of the License at
7b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu *
8b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu *      http://www.apache.org/licenses/LICENSE-2.0
9b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu *
10b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * Unless required by applicable law or agreed to in writing, software
11b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * distributed under the License is distributed on an "AS IS" BASIS,
12b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * See the License for the specific language governing permissions and
14b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu * limitations under the License.
15b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu */
16b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxupackage com.android.internal.telephony.imsphone;
17b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
18b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport android.os.HandlerThread;
19b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport android.test.suitebuilder.annotation.SmallTest;
20b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport com.android.internal.telephony.PhoneNotifier;
21b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport com.android.internal.telephony.TelephonyTest;
22b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
23b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport org.junit.After;
24b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport org.junit.Before;
25b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport org.junit.Test;
26b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport org.mockito.Mock;
27b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport static org.junit.Assert.assertNotNull;
28b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport static org.junit.Assert.assertEquals;
29b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport static org.mockito.Mockito.eq;
30b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport static org.mockito.Mockito.times;
31b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxuimport static org.mockito.Mockito.verify;
32b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
33b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxupublic class ImsPhoneFactoryTest extends TelephonyTest {
34b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
35b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    @Mock
36b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    private PhoneNotifier mPhoneNotifer;
37b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    private ImsPhone mImsPhoneUT;
387e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan    private ImsPhoneFactoryHandler mImsPhoneFactoryHandler;
39b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
40b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    private class ImsPhoneFactoryHandler extends HandlerThread {
41b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
42b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        private ImsPhoneFactoryHandler(String name) {
43b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu            super(name);
44b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        }
45b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        @Override
46b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        public void onLooperPrepared() {
47b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu            mImsPhoneUT = ImsPhoneFactory.makePhone(mContext, mPhoneNotifer, mPhone);
48b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu            setReady(true);
49b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        }
50b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    }
51b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
52b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    @Before
53b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    public void setUp() throws Exception {
54b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        super.setUp(this.getClass().getSimpleName());
557e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan        mImsPhoneFactoryHandler = new ImsPhoneFactoryHandler(this.getClass().getSimpleName());
567e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan        mImsPhoneFactoryHandler.start();
57b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
58b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        waitUntilReady();
59b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    }
60b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
61b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    @After
62b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    public void tearDown() throws Exception {
63ae6e8f99bdb297f906d6dcdc0a385ba27eee47fdJack Yu        mImsPhoneFactoryHandler.quit();
64b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        super.tearDown();
65b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    }
66b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
67b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    @Test @SmallTest
68b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    public void testMakeImsPhone() throws Exception {
69b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        assertNotNull(mImsPhoneUT);
70b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        assertEquals(mPhone, mImsPhoneUT.getDefaultPhone());
71b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu
72b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        mImsPhoneUT.notifyDataActivity();
73b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu        verify(mPhoneNotifer, times(1)).notifyDataActivity(eq(mImsPhoneUT));
74b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu    }
75b15af5a82377b8ad6d46b5f93186510b56b4a449fionaxu}
76