1 /* 2 * Copyright (C) 2015 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.messaging.ui.mediapicker; 18 19 import android.hardware.Camera; 20 import android.hardware.Camera.CameraInfo; 21 22 import com.android.messaging.ui.mediapicker.CameraManager.CameraWrapper; 23 import org.mockito.Mockito; 24 import org.mockito.invocation.InvocationOnMock; 25 import org.mockito.stubbing.Answer; 26 27 import java.util.HashMap; 28 import java.util.Map; 29 30 class MockCameraFactory { 31 private static Map<Camera, CameraInfo> sCameraInfos = new HashMap<Camera, CameraInfo>(); 32 createCamera(int facing)33 public static Camera createCamera(int facing) { 34 Camera camera = Mockito.mock(Camera.class); 35 CameraInfo cameraInfo = new CameraInfo(); 36 cameraInfo.facing = facing; 37 sCameraInfos.put(camera, cameraInfo); 38 return camera; 39 } 40 getCameraInfo(Camera camera, CameraInfo outCameraInfo)41 public static void getCameraInfo(Camera camera, CameraInfo outCameraInfo) { 42 CameraInfo cameraInfo = sCameraInfos.get(camera); 43 outCameraInfo.facing = cameraInfo.facing; 44 outCameraInfo.orientation = cameraInfo.orientation; 45 outCameraInfo.canDisableShutterSound = cameraInfo.canDisableShutterSound; 46 } 47 createCameraWrapper(final Camera... cameras)48 public static CameraWrapper createCameraWrapper(final Camera... cameras) { 49 CameraWrapper wrapper = Mockito.mock(CameraWrapper.class); 50 Mockito.when(wrapper.getNumberOfCameras()).thenReturn(cameras.length); 51 Mockito.when(wrapper.open(Mockito.anyInt())).then(new Answer<Camera>() { 52 @Override 53 public Camera answer(InvocationOnMock invocation) { 54 return cameras[(Integer) invocation.getArguments()[0]]; 55 } 56 }); 57 Mockito.doAnswer(new Answer<Void>() { 58 @Override 59 public Void answer(InvocationOnMock invocation) throws Throwable { 60 getCameraInfo( 61 cameras[(Integer) invocation.getArguments()[0]], 62 (CameraInfo) invocation.getArguments()[1] 63 ); 64 return null; 65 } 66 }).when(wrapper).getCameraInfo(Mockito.anyInt(), Mockito.any(CameraInfo.class)); 67 return wrapper; 68 } 69 cleanup()70 public static void cleanup() { 71 sCameraInfos.clear(); 72 } 73 } 74