1bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee/*
2bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * Copyright (C) 2015 The Android Open Source Project
3bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee *
4bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * Licensed under the Apache License, Version 2.0 (the "License");
5bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * you may not use this file except in compliance with the License.
6bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * You may obtain a copy of the License at
7bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee *
8bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee *      http://www.apache.org/licenses/LICENSE-2.0
9bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee *
10bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * Unless required by applicable law or agreed to in writing, software
11bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * distributed under the License is distributed on an "AS IS" BASIS,
12bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * See the License for the specific language governing permissions and
14bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee * limitations under the License
15bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee */
16bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
17bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leepackage com.android.incallui;
18bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
19bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport static org.mockito.Mockito.anyBoolean;
20bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport static org.mockito.Mockito.never;
21bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport static org.mockito.Mockito.times;
22bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport static org.mockito.Mockito.verify;
23bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
24bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport android.test.InstrumentationTestCase;
257753b65fb379b5d6a87702ee7e2f8fb1098ebca2Yorke Leeimport android.test.suitebuilder.annotation.MediumTest;
26bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
27bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport com.android.incallui.InCallPresenter.InCallState;
28bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
29bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport org.mockito.Mock;
30bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport org.mockito.Mockito;
31bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leeimport org.mockito.MockitoAnnotations;
32bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
337753b65fb379b5d6a87702ee7e2f8fb1098ebca2Yorke Lee@MediumTest
34bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Leepublic class ProximitySensorTest extends InstrumentationTestCase {
35bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee    @Mock private AccelerometerListener mAccelerometerListener;
36bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee    private MockCallListWrapper mCallList;
37bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
38bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee    @Override
39bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee    protected void setUp() throws Exception {
40bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        super.setUp();
41bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        System.setProperty("dexmaker.dexcache",
42bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee                getInstrumentation().getTargetContext().getCacheDir().getPath());
43bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        MockitoAnnotations.initMocks(this);
44bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        mCallList = new MockCallListWrapper();
45bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee    }
46bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
47bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee    public void testAccelerometerBehaviorOnDisplayChange() {
48bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        final ProximitySensor proximitySensor =
49bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee                new ProximitySensor(
50bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee                        getInstrumentation().getContext(),
51bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee                        new AudioModeProvider(),
52bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee                        mAccelerometerListener);
53bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        verify(mAccelerometerListener, never()).enable(anyBoolean());
54bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        proximitySensor.onStateChange(null, InCallState.OUTGOING, mCallList.getCallList());
55bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        verify(mAccelerometerListener).enable(true);
56bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        verify(mAccelerometerListener, never()).enable(false);
57bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
58bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        proximitySensor.onDisplayStateChanged(false);
59bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        verify(mAccelerometerListener).enable(true);
60bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        verify(mAccelerometerListener).enable(false);
61bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee
62bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        proximitySensor.onDisplayStateChanged(true);
63bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        verify(mAccelerometerListener, times(2)).enable(true);
64bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee        verify(mAccelerometerListener).enable(false);
65bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee    }
66bc6ad72707bb3eebce0b3dd8ef408b49957148a7Yorke Lee}
67