summaryrefslogtreecommitdiffstats
path: root/tests_camera/src/com/android/camera/activity/CameraTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests_camera/src/com/android/camera/activity/CameraTestCase.java')
-rw-r--r--tests_camera/src/com/android/camera/activity/CameraTestCase.java246
1 files changed, 0 insertions, 246 deletions
diff --git a/tests_camera/src/com/android/camera/activity/CameraTestCase.java b/tests_camera/src/com/android/camera/activity/CameraTestCase.java
deleted file mode 100644
index 4aae6b48b..000000000
--- a/tests_camera/src/com/android/camera/activity/CameraTestCase.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.camera.activity;
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.hardware.Camera;
-import android.hardware.Camera.AutoFocusCallback;
-import android.hardware.Camera.CameraInfo;
-import android.hardware.Camera.Parameters;
-import android.hardware.Camera.PictureCallback;
-import android.hardware.Camera.ShutterCallback;
-import android.test.ActivityInstrumentationTestCase2;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.View;
-
-import com.android.camera.CameraHolder;
-import com.android.camera.CameraManager.CameraProxy;
-import com.android.camera.util.CameraUtil;
-import com.android.gallery3d.R;
-
-import static com.google.testing.littlemock.LittleMock.mock;
-import static com.google.testing.littlemock.LittleMock.doAnswer;
-import static com.google.testing.littlemock.LittleMock.doReturn;
-import static com.google.testing.littlemock.LittleMock.anyObject;
-import com.google.testing.littlemock.AppDataDirGuesser;
-import com.google.testing.littlemock.ArgumentCaptor;
-import com.google.testing.littlemock.Captor;
-import com.google.testing.littlemock.LittleMock;
-import com.google.testing.littlemock.Mock;
-
-import java.io.File;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.concurrent.Callable;
-
-
-public class CameraTestCase<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
- protected CameraInfo mCameraInfo[];
- protected CameraProxy mMockCamera[];
- protected CameraInfo mOneCameraInfo[];
- protected CameraProxy mOneMockCamera[];
- private static Parameters mParameters;
- private byte[] mBlankJpeg;
- @Mock private CameraProxy mMockBackCamera;
- @Mock private CameraProxy mMockFrontCamera;
- @Captor private ArgumentCaptor<ShutterCallback> mShutterCallback;
- @Captor private ArgumentCaptor<PictureCallback> mRawPictureCallback;
- @Captor private ArgumentCaptor<PictureCallback> mJpegPictureCallback;
- @Captor private ArgumentCaptor<AutoFocusCallback> mAutoFocusCallback;
- Callable<Object> mAutoFocusCallable = new AutoFocusCallable();
- Callable<Object> mTakePictureCallable = new TakePictureCallable();
-
- private class TakePictureCallable implements Callable<Object> {
- @Override
- public Object call() throws Exception {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- readBlankJpeg();
- Camera camera = mOneMockCamera[0].getCamera();
- mShutterCallback.getValue().onShutter();
- mRawPictureCallback.getValue().onPictureTaken(null, camera);
- mJpegPictureCallback.getValue().onPictureTaken(mBlankJpeg, camera);
- }
- };
- // Probably need some delay. Make sure shutter callback is called
- // after onShutterButtonFocus(false).
- getActivity().findViewById(R.id.gl_root_view).postDelayed(runnable, 50);
- return null;
- }
- }
-
- private class AutoFocusCallable implements Callable<Object> {
- @Override
- public Object call() throws Exception {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- Camera camera = mOneMockCamera[0].getCamera();
- mAutoFocusCallback.getValue().onAutoFocus(true, camera);
- }
- };
- // Need some delay. Otherwise, focus callback will be run before
- // onShutterButtonClick
- getActivity().findViewById(R.id.gl_root_view).postDelayed(runnable, 50);
- return null;
- }
- }
-
- public CameraTestCase(Class<T> activityClass) {
- super(activityClass);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- AppDataDirGuesser.setInstance(new AppDataDirGuesser() {
- @Override
- public File guessSuitableDirectoryForGeneratedClasses() {
- return getInstrumentation().getTargetContext().getCacheDir();
- }
- });
- AppDataDirGuesser.getsInstance().guessSuitableDirectoryForGeneratedClasses();
- LittleMock.initMocks(this);
- mCameraInfo = new CameraInfo[2];
- mCameraInfo[0] = new CameraInfo();
- mCameraInfo[0].facing = CameraInfo.CAMERA_FACING_BACK;
- mCameraInfo[1] = new CameraInfo();
- mCameraInfo[1].facing = CameraInfo.CAMERA_FACING_FRONT;
- mMockCamera = new CameraProxy[2];
- mMockCamera[0] = mMockBackCamera;
- mMockCamera[1] = mMockFrontCamera;
- doReturn(getParameters()).when(mMockCamera[0]).getParameters();
- doReturn(getParameters()).when(mMockCamera[1]).getParameters();
-
- mOneCameraInfo = new CameraInfo[1];
- mOneCameraInfo[0] = new CameraInfo();
- mOneCameraInfo[0].facing = CameraInfo.CAMERA_FACING_BACK;
- mOneMockCamera = new CameraProxy[1];
- mOneMockCamera[0] = mMockBackCamera;
- doReturn(getParameters()).when(mOneMockCamera[0]).getParameters();
-
- // Mock takePicture call.
- doAnswer(mTakePictureCallable).when(mMockBackCamera).takePicture(
- mShutterCallback.capture(), mRawPictureCallback.capture(),
- (PictureCallback) anyObject(), mJpegPictureCallback.capture());
-
- // Mock autoFocus call.
- doAnswer(mAutoFocusCallable).when(mMockBackCamera).autoFocus(
- mAutoFocusCallback.capture());
- }
-
- private void readBlankJpeg() {
- InputStream ins = getActivity().getResources().openRawResource(R.raw.blank);
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- int size = 0;
-
- // Read the entire resource into a local byte buffer.
- byte[] buffer = new byte[1024];
- try {
- while((size = ins.read(buffer, 0, 1024)) >= 0){
- outputStream.write(buffer, 0, size);
- }
- } catch (IOException e) {
- // ignore
- } finally {
- CameraUtil.closeSilently(ins);
- }
- mBlankJpeg = outputStream.toByteArray();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- CameraHolder.injectMockCamera(null, null);
- }
-
- protected void internalTestFailToConnect() throws Exception {
- CameraHolder.injectMockCamera(mCameraInfo, null);
-
- getActivity();
- Instrumentation inst = getInstrumentation();
- inst.waitForIdleSync();
- inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER); // close dialog
- }
-
- protected void performClick(final int id) {
- Activity activity = getActivity();
- getInstrumentation().waitForIdleSync();
- assertNotNull(activity.findViewById(id));
- Instrumentation inst = getInstrumentation();
- inst.runOnMainSync(new Runnable() {
- @Override
- public void run() {
- View v = getActivity().findViewById(id);
- float x = (v.getLeft() + v.getRight()) / 2;
- float y = (v.getTop() + v.getBottom()) / 2;
- MotionEvent down = MotionEvent.obtain(0, 0,
- MotionEvent.ACTION_DOWN, x, y, 0, 0, 0, 0, 0, 0, 0);
- MotionEvent up = MotionEvent.obtain(0, 0,
- MotionEvent.ACTION_UP, x, y, 0, 0, 0, 0, 0, 0, 0);
- View parent = (View) v.getParent();
- parent.dispatchTouchEvent(down);
- parent.dispatchTouchEvent(up);
- }
- });
- inst.waitForIdleSync();
- }
-
- protected void assertViewNotExist(int id) {
- Activity activity = getActivity();
- getInstrumentation().waitForIdleSync();
- assertNull(activity.findViewById(id));
- }
-
- protected void assertViewNotVisible(int id) {
- Activity activity = getActivity();
- getInstrumentation().waitForIdleSync();
- View view = activity.findViewById(id);
- assertTrue(view.getVisibility() != View.VISIBLE);
- }
-
- protected static Parameters getParameters() {
- synchronized (CameraTestCase.class) {
- if (mParameters == null) {
- mParameters = android.hardware.Camera.getEmptyParameters();
- mParameters.unflatten("preview-format-values=yuv420sp,yuv420p,yuv422i-yuyv,yuv420p;" +
- "preview-format=yuv420sp;" +
- "preview-size-values=800x480;preview-size=800x480;" +
- "picture-size-values=320x240;picture-size=320x240;" +
- "jpeg-thumbnail-size-values=320x240,0x0;jpeg-thumbnail-width=320;jpeg-thumbnail-height=240;" +
- "jpeg-thumbnail-quality=60;jpeg-quality=95;" +
- "preview-frame-rate-values=30,15;preview-frame-rate=30;" +
- "focus-mode-values=continuous-video,auto,macro,infinity,continuous-picture;focus-mode=auto;" +
- "preview-fps-range-values=(15000,30000);preview-fps-range=15000,30000;" +
- "scene-mode-values=auto,action,night;scene-mode=auto;" +
- "flash-mode-values=off,on,auto,torch;flash-mode=off;" +
- "whitebalance-values=auto,daylight,fluorescent,incandescent;whitebalance=auto;" +
- "effect-values=none,mono,sepia;effect=none;" +
- "zoom-supported=true;zoom-ratios=100,200,400;max-zoom=2;" +
- "picture-format-values=jpeg;picture-format=jpeg;" +
- "min-exposure-compensation=-30;max-exposure-compensation=30;" +
- "exposure-compensation=0;exposure-compensation-step=0.1;" +
- "horizontal-view-angle=40;vertical-view-angle=40;");
- }
- }
- return mParameters;
- }
-}