Refactor androidTests

pull/482/head
Mattia Iavarone 6 years ago
parent 122e4a1597
commit c3f6e59fdc
  1. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraOptions1Test.java
  2. 11
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewCallbacksTest.java
  3. 29
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewTest.java
  4. 149
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/MockCameraEngine.java
  5. 17
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/PictureResultTest.java
  6. 31
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/VideoResultTest.java
  7. 16
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/IntegrationTest.java
  8. 7
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/Mapper1Test.java
  9. 175
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/MockCameraEngine.java
  10. 4
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/gesture/GestureLayoutTest.java
  11. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/gesture/PinchGestureLayoutTest.java
  12. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/gesture/ScrollGestureLayoutTest.java
  13. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/gesture/TapGestureLayoutTest.java
  14. 4
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/internal/GridLinesLayoutTest.java
  15. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/internal/utils/CropHelperTest.java
  16. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/internal/utils/OrientationHelperTest.java
  17. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/internal/utils/WorkerHandlerTest.java
  18. 18
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/picture/PictureRecorderTest.java
  19. 4
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/CameraPreviewTest.java
  20. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/GlCameraPreviewTest.java
  21. 13
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java
  22. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/SurfaceCameraPreviewTest.java
  23. 3
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/TextureCameraPreviewTest.java
  24. 21
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/video/VideoRecorderTest.java
  25. 5
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraUtils.java
  26. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
  27. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/CameraEngine.java

@ -7,7 +7,6 @@ import com.otaliastudios.cameraview.controls.Audio;
import com.otaliastudios.cameraview.controls.Facing;
import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.engine.Mapper;
import com.otaliastudios.cameraview.engine.Mapper1;
import com.otaliastudios.cameraview.gesture.GestureAction;
import com.otaliastudios.cameraview.controls.Grid;
import com.otaliastudios.cameraview.controls.Hdr;
@ -251,7 +250,7 @@ public class CameraOptions1Test extends BaseTest {
}
CameraOptions o = new CameraOptions(mock(Camera.Parameters.class), false);
Mapper m = new Mapper1();
Mapper m = Mapper.get();
Collection<Facing> s = o.getSupportedControls(Facing.class);
assertEquals(s.size(), supported.size());
for (Facing facing : s) {

@ -16,6 +16,8 @@ import com.otaliastudios.cameraview.frame.FrameProcessor;
import com.otaliastudios.cameraview.gesture.Gesture;
import com.otaliastudios.cameraview.gesture.GestureAction;
import com.otaliastudios.cameraview.internal.utils.Task;
import com.otaliastudios.cameraview.engine.MockCameraEngine;
import com.otaliastudios.cameraview.preview.MockCameraPreview;
import com.otaliastudios.cameraview.preview.CameraPreview;
import org.junit.After;
@ -38,6 +40,9 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
/**
* Tests {@link CameraView#mCameraCallbacks} dispatch functions.
*/
@RunWith(AndroidJUnit4.class)
@MediumTest
public class CameraViewCallbacksTest extends BaseTest {
@ -58,9 +63,11 @@ public class CameraViewCallbacksTest extends BaseTest {
listener = mock(CameraListener.class);
processor = mock(FrameProcessor.class);
camera = new CameraView(context) {
@NonNull
@Override
protected CameraEngine instantiateCameraController(CameraCallbacks callbacks) {
mockController = new MockCameraEngine(callbacks);
protected CameraEngine instantiateCameraController(@NonNull CameraEngine.Callback callback) {
mockController = new MockCameraEngine(callback);
return mockController;
}

@ -28,6 +28,8 @@ import com.otaliastudios.cameraview.gesture.GestureParser;
import com.otaliastudios.cameraview.gesture.PinchGestureLayout;
import com.otaliastudios.cameraview.gesture.ScrollGestureLayout;
import com.otaliastudios.cameraview.gesture.TapGestureLayout;
import com.otaliastudios.cameraview.engine.MockCameraEngine;
import com.otaliastudios.cameraview.preview.MockCameraPreview;
import com.otaliastudios.cameraview.preview.CameraPreview;
import com.otaliastudios.cameraview.size.Size;
import com.otaliastudios.cameraview.size.SizeSelector;
@ -61,9 +63,11 @@ public class CameraViewTest extends BaseTest {
public void run() {
Context context = context();
cameraView = new CameraView(context) {
@NonNull
@Override
protected CameraEngine instantiateCameraController(CameraCallbacks callbacks) {
mockController = spy(new MockCameraEngine(callbacks));
protected CameraEngine instantiateCameraController(@NonNull CameraEngine.Callback callback) {
mockController = spy(new MockCameraEngine(callback));
return mockController;
}
@ -141,6 +145,7 @@ public class CameraViewTest extends BaseTest {
assertEquals(cameraView.getHdr(), controls.getHdr());
assertEquals(cameraView.getAudio(), controls.getAudio());
assertEquals(cameraView.getVideoCodec(), controls.getVideoCodec());
//noinspection SimplifiableJUnitAssertion
assertEquals(cameraView.getLocation(), null);
assertEquals(cameraView.getExposureCorrection(), 0f, 0f);
assertEquals(cameraView.getZoom(), 0f, 0f);
@ -476,11 +481,11 @@ public class CameraViewTest extends BaseTest {
@Test
public void testSetLocation() {
cameraView.setLocation(50d, -50d);
assertEquals(50d, mockController.mLocation.getLatitude(), 0);
assertEquals(-50d, mockController.mLocation.getLongitude(), 0);
assertEquals(0, mockController.mLocation.getAltitude(), 0);
assertEquals("Unknown", mockController.mLocation.getProvider());
assertEquals(System.currentTimeMillis(), mockController.mLocation.getTime(), 1000f);
assertEquals(50d, mockController.getLocation().getLatitude(), 0);
assertEquals(-50d, mockController.getLocation().getLongitude(), 0);
assertEquals(0, mockController.getLocation().getAltitude(), 0);
assertEquals("Unknown", mockController.getLocation().getProvider());
assertEquals(System.currentTimeMillis(), mockController.getLocation().getTime(), 1000f);
Location source = new Location("Provider");
source.setTime(5000);
@ -613,7 +618,7 @@ public class CameraViewTest extends BaseTest {
public void testPreviewStreamSizeSelector() {
SizeSelector source = SizeSelectors.minHeight(50);
cameraView.setPreviewStreamSize(source);
SizeSelector result = mockController.getPreviewStreamSizeSelector();
SizeSelector result = mockController.getInternalPreviewStreamSizeSelector();
assertNotNull(result);
assertEquals(result, source);
}
@ -622,7 +627,7 @@ public class CameraViewTest extends BaseTest {
public void testPictureSizeSelector() {
SizeSelector source = SizeSelectors.minHeight(50);
cameraView.setPictureSize(source);
SizeSelector result = mockController.getPictureSizeSelector();
SizeSelector result = mockController.getInternalPictureSizeSelector();
assertNotNull(result);
assertEquals(result, source);
}
@ -631,7 +636,7 @@ public class CameraViewTest extends BaseTest {
public void testVideoSizeSelector() {
SizeSelector source = SizeSelectors.minHeight(50);
cameraView.setVideoSize(source);
SizeSelector result = mockController.getVideoSizeSelector();
SizeSelector result = mockController.getInternalVideoSizeSelector();
assertNotNull(result);
assertEquals(result, source);
}
@ -718,8 +723,8 @@ public class CameraViewTest extends BaseTest {
public void testSetSnapshotMaxSize() {
cameraView.setSnapshotMaxWidth(500);
cameraView.setSnapshotMaxHeight(1000);
assertEquals(mockController.mSnapshotMaxWidth, 500);
assertEquals(mockController.mSnapshotMaxHeight, 1000);
assertEquals(mockController.getSnapshotMaxWidth(), 500);
assertEquals(mockController.getSnapshotMaxHeight(), 1000);
}
//endregion

@ -1,149 +0,0 @@
package com.otaliastudios.cameraview;
import android.graphics.PointF;
import android.location.Location;
import com.otaliastudios.cameraview.controls.Audio;
import com.otaliastudios.cameraview.controls.Facing;
import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.engine.CameraEngine;
import com.otaliastudios.cameraview.gesture.Gesture;
import com.otaliastudios.cameraview.controls.Hdr;
import com.otaliastudios.cameraview.controls.Mode;
import com.otaliastudios.cameraview.controls.WhiteBalance;
import com.otaliastudios.cameraview.size.AspectRatio;
import com.otaliastudios.cameraview.size.Size;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.io.File;
public class MockCameraEngine extends CameraEngine {
boolean mPictureCaptured;
boolean mFocusStarted;
boolean mZoomChanged;
boolean mExposureCorrectionChanged;
MockCameraEngine(CameraView.CameraCallbacks callback) {
super(callback);
}
void setMockCameraOptions(CameraOptions options) {
mCameraOptions = options;
}
void setMockPreviewStreamSize(Size size) {
mPreviewStreamSize = size;
}
void mockStarted(boolean started) {
mState = started ? STATE_STARTED : STATE_STOPPED;
}
@Override
void onStart() {
}
@Override
void onStop() {
}
@Override
void setZoom(float zoom, @Nullable PointF[] points, boolean notify) {
mZoomValue = zoom;
mZoomChanged = true;
}
@Override
void setExposureCorrection(float EVvalue, @NonNull float[] bounds, @Nullable PointF[] points, boolean notify) {
mExposureCorrectionValue = EVvalue;
mExposureCorrectionChanged = true;
}
@Override
void setFacing(@NonNull Facing facing) {
mFacing = facing;
}
@Override
void setFlash(@NonNull Flash flash) {
mFlash = flash;
}
@Override
void setWhiteBalance(@NonNull WhiteBalance whiteBalance) {
mWhiteBalance = whiteBalance;
}
@Override
void setMode(@NonNull Mode mode) {
mMode = mode;
}
@Override
void setHdr(@NonNull Hdr hdr) {
mHdr = hdr;
}
@Override
void setAudio(@NonNull Audio audio) {
mAudio = audio;
}
@Override
void setLocation(@Nullable Location location) {
mLocation = location;
}
@Override
void takePicture() {
mPictureCaptured = true;
}
@Override
void takePictureSnapshot(@NonNull AspectRatio viewAspectRatio) {
}
@Override
void takeVideo(@NonNull File file) {
}
@Override
void takeVideoSnapshot(@NonNull File file, @NonNull AspectRatio viewAspectRatio) {
}
@Override
void stopVideo() {
}
@Override
void startAutoFocus(@Nullable Gesture gesture, @NonNull PointF point) {
mFocusStarted = true;
}
@Override
public void onSurfaceChanged() {
}
@Override
public void onSurfaceAvailable() {
}
@Override
public void onSurfaceDestroyed() {
}
@Override
public void onBufferAvailable(@NonNull byte[] buffer) {
}
@Override
void setPlaySounds(boolean playSounds) {
}
}

@ -20,7 +20,7 @@ import static org.junit.Assert.assertEquals;
@SmallTest
public class PictureResultTest extends BaseTest {
private PictureResult result = new PictureResult();
private PictureResult.Stub stub = new PictureResult.Stub();
@Test
public void testResult() {
@ -32,15 +32,16 @@ public class PictureResultTest extends BaseTest {
boolean isSnapshot = true;
Facing facing = Facing.FRONT;
result. format = format;
result.rotation = rotation;
result.size = size;
result.data = jpeg;
result.location = location;
result.facing = facing;
stub.format = format;
stub.rotation = rotation;
stub.size = size;
stub.data = jpeg;
stub.location = location;
stub.facing = facing;
//noinspection ConstantConditions
result.isSnapshot = isSnapshot;
stub.isSnapshot = isSnapshot;
PictureResult result = new PictureResult(stub);
assertEquals(result.getFormat(), format);
assertEquals(result.getRotation(), rotation);
assertEquals(result.getSize(), size);

@ -24,7 +24,7 @@ import static org.junit.Assert.assertEquals;
@SmallTest
public class VideoResultTest extends BaseTest {
private VideoResult result = new VideoResult();
private VideoResult.Stub stub = new VideoResult.Stub();
@Test
public void testResult() {
@ -43,21 +43,22 @@ public class VideoResultTest extends BaseTest {
Audio audio = Audio.ON;
Facing facing = Facing.FRONT;
result.file = file;
result.rotation = rotation;
result.size = size;
result.codec = codec;
result.location = location;
result.isSnapshot = isSnapshot;
result.maxDuration = maxDuration;
result.maxSize = maxFileSize;
result.endReason = reason;
result.videoFrameRate = videoFrameRate;
result.videoBitRate = videoBitRate;
result.audioBitRate = audioBitRate;
result.audio = audio;
result.facing = facing;
stub.file = file;
stub.rotation = rotation;
stub.size = size;
stub.videoCodec = codec;
stub.location = location;
stub.isSnapshot = isSnapshot;
stub.maxDuration = maxDuration;
stub.maxSize = maxFileSize;
stub.endReason = reason;
stub.videoFrameRate = videoFrameRate;
stub.videoBitRate = videoBitRate;
stub.audioBitRate = audioBitRate;
stub.audio = audio;
stub.facing = facing;
VideoResult result = new VideoResult(stub);
assertEquals(result.getFile(), file);
assertEquals(result.getRotation(), rotation);
assertEquals(result.getSize(), size);

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.engine;
import android.graphics.Bitmap;
@ -6,6 +6,14 @@ import android.graphics.PointF;
import android.hardware.Camera;
import android.os.Build;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.CameraListener;
import com.otaliastudios.cameraview.CameraOptions;
import com.otaliastudios.cameraview.CameraUtils;
import com.otaliastudios.cameraview.CameraView;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.TestActivity;
import com.otaliastudios.cameraview.VideoResult;
import com.otaliastudios.cameraview.controls.Audio;
import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.controls.Hdr;
@ -78,9 +86,11 @@ public class IntegrationTest extends BaseTest {
@Override
public void run() {
camera = new CameraView(rule.getActivity()) {
@NonNull
@Override
protected CameraEngine instantiateCameraController(CameraCallbacks callbacks) {
controller = new Camera1Engine(callbacks);
protected CameraEngine instantiateCameraController(@NonNull CameraEngine.Callback callback) {
controller = new Camera1Engine(callback);
return controller;
}
};

@ -1,14 +1,13 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.engine;
import android.hardware.Camera;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.controls.Facing;
import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.controls.Hdr;
import com.otaliastudios.cameraview.controls.WhiteBalance;
import com.otaliastudios.cameraview.engine.Mapper;
import com.otaliastudios.cameraview.engine.Mapper1;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@ -23,7 +22,7 @@ import static org.junit.Assert.*;
@SmallTest
public class Mapper1Test extends BaseTest {
private Mapper mapper = new Mapper1();
private Mapper mapper = Mapper.get();
@Test
public void testMap() {

@ -0,0 +1,175 @@
package com.otaliastudios.cameraview.engine;
import android.graphics.PointF;
import android.location.Location;
import com.otaliastudios.cameraview.CameraOptions;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.VideoResult;
import com.otaliastudios.cameraview.controls.Audio;
import com.otaliastudios.cameraview.controls.Facing;
import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.engine.CameraEngine;
import com.otaliastudios.cameraview.gesture.Gesture;
import com.otaliastudios.cameraview.controls.Hdr;
import com.otaliastudios.cameraview.controls.Mode;
import com.otaliastudios.cameraview.controls.WhiteBalance;
import com.otaliastudios.cameraview.size.AspectRatio;
import com.otaliastudios.cameraview.size.Size;
import com.otaliastudios.cameraview.size.SizeSelector;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import java.io.File;
public class MockCameraEngine extends CameraEngine {
public boolean mPictureCaptured;
public boolean mFocusStarted;
public boolean mZoomChanged;
public boolean mExposureCorrectionChanged;
public MockCameraEngine(CameraEngine.Callback callback) {
super(callback);
}
@Override
protected void onStart() {
}
@Override
protected void onStop() {
}
public void setMockCameraOptions(CameraOptions options) {
mCameraOptions = options;
}
public void setMockPreviewStreamSize(Size size) {
mPreviewStreamSize = size;
}
public void mockStarted(boolean started) {
mState = started ? STATE_STARTED : STATE_STOPPED;
}
public int getSnapshotMaxWidth() {
return mSnapshotMaxWidth;
}
public int getSnapshotMaxHeight() {
return mSnapshotMaxHeight;
}
public SizeSelector getInternalPreviewStreamSizeSelector() {
return super.getPreviewStreamSizeSelector();
}
public SizeSelector getInternalPictureSizeSelector() {
return super.getPictureSizeSelector();
}
public SizeSelector getInternalVideoSizeSelector() {
return super.getVideoSizeSelector();
}
@Override
public void setZoom(float zoom, @Nullable PointF[] points, boolean notify) {
mZoomValue = zoom;
mZoomChanged = true;
}
@Override
public void setExposureCorrection(float EVvalue, @NonNull float[] bounds, @Nullable PointF[] points, boolean notify) {
mExposureCorrectionValue = EVvalue;
mExposureCorrectionChanged = true;
}
@Override
public void setFacing(@NonNull Facing facing) {
mFacing = facing;
}
@Override
public void setFlash(@NonNull Flash flash) {
mFlash = flash;
}
@Override
public void setWhiteBalance(@NonNull WhiteBalance whiteBalance) {
mWhiteBalance = whiteBalance;
}
@Override
public void setMode(@NonNull Mode mode) {
mMode = mode;
}
@Override
public void setHdr(@NonNull Hdr hdr) {
mHdr = hdr;
}
@Override
public void setAudio(@NonNull Audio audio) {
mAudio = audio;
}
@Override
public void setLocation(@Nullable Location location) {
mLocation = location;
}
@Override
public void takePicture(@NonNull PictureResult.Stub stub) {
mPictureCaptured = true;
}
@Override
public void takePictureSnapshot(@NonNull PictureResult.Stub stub, @NonNull AspectRatio viewAspectRatio) {
}
@Override
public void takeVideo(@NonNull VideoResult.Stub stub, @NonNull File file) {
}
@Override
public void takeVideoSnapshot(@NonNull VideoResult.Stub stub, @NonNull File file, @NonNull AspectRatio viewAspectRatio) {
}
@Override
public void stopVideo() {
}
@Override
public void startAutoFocus(@Nullable Gesture gesture, @NonNull PointF point) {
mFocusStarted = true;
}
@Override
public void onSurfaceChanged() {
}
@Override
public void onSurfaceAvailable() {
}
@Override
public void onSurfaceDestroyed() {
}
@Override
public void onBufferAvailable(@NonNull byte[] buffer) {
}
@Override
public void setPlaySounds(boolean playSounds) {
}
}

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.gesture;
import android.annotation.TargetApi;
@ -10,6 +10,8 @@ import androidx.test.rule.ActivityTestRule;
import android.view.MotionEvent;
import android.view.View;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.TestActivity;
import com.otaliastudios.cameraview.gesture.Gesture;
import com.otaliastudios.cameraview.gesture.GestureLayout;
import com.otaliastudios.cameraview.internal.utils.Task;

@ -1,9 +1,10 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.gesture;
import android.content.Context;
import com.otaliastudios.cameraview.gesture.Gesture;
import com.otaliastudios.cameraview.gesture.GestureLayoutTest;
import com.otaliastudios.cameraview.gesture.PinchGestureLayout;
import androidx.test.espresso.ViewAction;

@ -1,9 +1,10 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.gesture;
import android.content.Context;
import com.otaliastudios.cameraview.gesture.Gesture;
import com.otaliastudios.cameraview.gesture.GestureLayoutTest;
import com.otaliastudios.cameraview.gesture.ScrollGestureLayout;
import androidx.test.espresso.ViewAction;

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.gesture;
import android.content.Context;
@ -12,6 +12,7 @@ import android.view.InputDevice;
import android.view.MotionEvent;
import com.otaliastudios.cameraview.gesture.Gesture;
import com.otaliastudios.cameraview.gesture.GestureLayoutTest;
import com.otaliastudios.cameraview.gesture.TapGestureLayout;
import com.otaliastudios.cameraview.size.Size;

@ -1,6 +1,8 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.internal;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.TestActivity;
import com.otaliastudios.cameraview.controls.Grid;
import com.otaliastudios.cameraview.internal.GridLinesLayout;

@ -1,8 +1,9 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.internal.utils;
import android.graphics.Rect;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.internal.utils.CropHelper;
import com.otaliastudios.cameraview.size.AspectRatio;
import com.otaliastudios.cameraview.size.Size;

@ -1,10 +1,11 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.internal.utils;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import android.view.OrientationEventListener;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.internal.utils.OrientationHelper;
import org.junit.After;

@ -1,6 +1,7 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.internal.utils;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.internal.utils.Task;
import com.otaliastudios.cameraview.internal.utils.WorkerHandler;

@ -1,6 +1,8 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.picture;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.picture.PictureRecorder;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@ -10,6 +12,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import java.lang.reflect.Constructor;
import static org.junit.Assert.assertNull;
@ -18,11 +22,11 @@ import static org.junit.Assert.assertNull;
public class PictureRecorderTest extends BaseTest {
@Test
public void testRecorder() {
PictureResult result = new PictureResult();
public void testRecorder() throws Exception {
PictureResult.Stub result = createStub();
PictureRecorder.PictureResultListener listener = Mockito.mock(PictureRecorder.PictureResultListener.class);
PictureRecorder recorder = new PictureRecorder(result, listener) {
void take() {
public void take() {
dispatchResult();
}
};
@ -31,4 +35,10 @@ public class PictureRecorderTest extends BaseTest {
assertNull(recorder.mListener);
assertNull(recorder.mResult);
}
private PictureResult.Stub createStub() throws Exception {
Constructor<PictureResult.Stub> constructor = PictureResult.Stub.class.getConstructor();
constructor.setAccessible(true);
return constructor.newInstance();
}
}

@ -1,10 +1,12 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.preview;
import android.content.Context;
import androidx.test.rule.ActivityTestRule;
import android.view.ViewGroup;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.TestActivity;
import com.otaliastudios.cameraview.internal.utils.Task;
import com.otaliastudios.cameraview.preview.CameraPreview;
import com.otaliastudios.cameraview.size.AspectRatio;

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.preview;
import android.content.Context;
@ -8,6 +8,7 @@ import androidx.test.filters.SmallTest;
import android.view.ViewGroup;
import com.otaliastudios.cameraview.preview.CameraPreview;
import com.otaliastudios.cameraview.preview.CameraPreviewTest;
import com.otaliastudios.cameraview.preview.GlCameraPreview;
import org.junit.runner.RunWith;

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.preview;
import android.content.Context;
@ -11,12 +11,12 @@ import com.otaliastudios.cameraview.preview.CameraPreview;
public class MockCameraPreview extends CameraPreview<View, Void> {
MockCameraPreview(Context context, ViewGroup parent) {
public MockCameraPreview(Context context, ViewGroup parent) {
super(context, parent, null);
}
@Override
boolean supportsCropping() {
public boolean supportsCropping() {
return true;
}
@ -28,19 +28,20 @@ public class MockCameraPreview extends CameraPreview<View, Void> {
@NonNull
@Override
Class<Void> getOutputClass() {
public Class<Void> getOutputClass() {
return null;
}
@NonNull
@Override
Void getOutput() {
public Void getOutput() {
return null;
}
@NonNull
@Override
View getRootView() {
public View getRootView() {
return null;
}
}

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.preview;
import android.content.Context;
@ -8,6 +8,7 @@ import androidx.test.filters.SmallTest;
import android.view.ViewGroup;
import com.otaliastudios.cameraview.preview.CameraPreview;
import com.otaliastudios.cameraview.preview.CameraPreviewTest;
import com.otaliastudios.cameraview.preview.SurfaceCameraPreview;
import org.junit.runner.RunWith;

@ -1,4 +1,4 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.preview;
import android.content.Context;
@ -8,6 +8,7 @@ import androidx.test.filters.SmallTest;
import android.view.ViewGroup;
import com.otaliastudios.cameraview.preview.CameraPreview;
import com.otaliastudios.cameraview.preview.CameraPreviewTest;
import com.otaliastudios.cameraview.preview.TextureCameraPreview;
import org.junit.runner.RunWith;

@ -1,6 +1,9 @@
package com.otaliastudios.cameraview;
package com.otaliastudios.cameraview.video;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.VideoResult;
import com.otaliastudios.cameraview.video.VideoRecorder;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@ -10,6 +13,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import java.lang.reflect.Constructor;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@ -19,12 +24,12 @@ import static org.junit.Assert.assertNull;
public class VideoRecorderTest extends BaseTest {
@Test
public void testRecorder() {
VideoResult result = new VideoResult();
public void testRecorder() throws Exception {
VideoResult.Stub result = createStub();
VideoRecorder.VideoResultListener listener = Mockito.mock(VideoRecorder.VideoResultListener.class);
VideoRecorder recorder = new VideoRecorder(result, listener) {
void start() {}
void stop() {
public void start() {}
public void stop() {
dispatchResult();
}
};
@ -34,4 +39,10 @@ public class VideoRecorderTest extends BaseTest {
assertNull(recorder.mListener);
assertNull(recorder.mResult);
}
private VideoResult.Stub createStub() throws Exception {
Constructor<VideoResult.Stub> constructor = VideoResult.Stub.class.getConstructor();
constructor.setAccessible(true);
return constructor.newInstance();
}
}

@ -217,9 +217,12 @@ public class CameraUtils {
* @param source a JPEG byte array
* @param maxWidth the max allowed width
* @param maxHeight the max allowed height
* @return decoded bitmap or null if error is encountered
*/
@SuppressWarnings("SameParameterValue")
static Bitmap decodeBitmap(@NonNull byte[] source, int maxWidth, int maxHeight) {
@Nullable
@WorkerThread
public static Bitmap decodeBitmap(@NonNull byte[] source, int maxWidth, int maxHeight) {
return decodeBitmap(source, maxWidth, maxHeight, new BitmapFactory.Options());
}

@ -1633,8 +1633,8 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
//region Callbacks and dispatching
private class CameraCallbacks implements CameraEngine.Callback, OrientationHelper.Callback {
@VisibleForTesting
class CameraCallbacks implements CameraEngine.Callback, OrientationHelper.Callback {
private CameraLogger mLogger = CameraLogger.create(CameraCallbacks.class.getSimpleName());

@ -129,7 +129,7 @@ public abstract class CameraEngine implements
@VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) Task<Void> mStartVideoTask = new Task<>();
@VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) Task<Void> mPlaySoundsTask = new Task<>();
CameraEngine(Callback callback) {
protected CameraEngine(Callback callback) {
mCallback = callback;
mCrashHandler = new Handler(Looper.getMainLooper());
mHandler = WorkerHandler.get("CameraViewController");
@ -300,11 +300,11 @@ public abstract class CameraEngine implements
// Starts the preview.
// At the end of this method camera must be available, e.g. for setting parameters.
@WorkerThread
abstract void onStart();
protected abstract void onStart();
// Stops the preview.
@WorkerThread
abstract void onStop();
protected abstract void onStop();
// Returns current state.
public final int getState() {

Loading…
Cancel
Save