Add GlCameraPreview and CameraView tests

pull/535/head
Mattia Iavarone 6 years ago
parent adb4729a87
commit 28cf9bd2dd
  1. 31
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewTest.java
  2. 6
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/CameraPreviewTest.java
  3. 21
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/GlCameraPreviewTest.java
  4. 15
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java
  5. 4
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/SurfaceCameraPreviewTest.java
  6. 4
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/TextureCameraPreviewTest.java

@ -22,6 +22,9 @@ import com.otaliastudios.cameraview.controls.Facing;
import com.otaliastudios.cameraview.controls.Flash; import com.otaliastudios.cameraview.controls.Flash;
import com.otaliastudios.cameraview.controls.Preview; import com.otaliastudios.cameraview.controls.Preview;
import com.otaliastudios.cameraview.engine.CameraEngine; import com.otaliastudios.cameraview.engine.CameraEngine;
import com.otaliastudios.cameraview.filter.Filter;
import com.otaliastudios.cameraview.filter.Filters;
import com.otaliastudios.cameraview.filter.NoFilter;
import com.otaliastudios.cameraview.frame.Frame; import com.otaliastudios.cameraview.frame.Frame;
import com.otaliastudios.cameraview.frame.FrameProcessor; import com.otaliastudios.cameraview.frame.FrameProcessor;
import com.otaliastudios.cameraview.gesture.Gesture; import com.otaliastudios.cameraview.gesture.Gesture;
@ -65,7 +68,7 @@ public class CameraViewTest extends BaseTest {
private CameraView cameraView; private CameraView cameraView;
private MockCameraEngine mockController; private MockCameraEngine mockController;
private CameraPreview mockPreview; private MockCameraPreview mockPreview;
private boolean hasPermissions; private boolean hasPermissions;
@Before @Before
@ -825,4 +828,30 @@ public class CameraViewTest extends BaseTest {
//endregion //endregion
// TODO: test permissions // TODO: test permissions
//region Filter
@Test(expected = RuntimeException.class)
public void testSetFilter_notExperimental() {
cameraView.setExperimental(false);
cameraView.setFilter(Filters.AUTO_FIX.newInstance());
}
@Test
public void testSetFilter_notExperimental_noFilter() {
cameraView.setExperimental(false);
cameraView.setFilter(Filters.NONE.newInstance());
// no exception thrown
}
@Test
public void testSetFilter() {
cameraView.setExperimental(true);
Filter filter = Filters.AUTO_FIX.newInstance();
cameraView.setFilter(filter);
verify(mockPreview, times(1)).setFilter(filter);
assertEquals(filter, cameraView.getFilter());
//noinspection ResultOfMethodCallIgnored
verify(mockPreview, times(1)).getCurrentFilter();
}
} }

@ -23,16 +23,16 @@ import static org.junit.Assert.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
public abstract class CameraPreviewTest extends BaseTest { public abstract class CameraPreviewTest<T extends CameraPreview> extends BaseTest {
private final static long DELAY = 4000; private final static long DELAY = 4000;
protected abstract CameraPreview createPreview(Context context, ViewGroup parent); protected abstract T createPreview(Context context, ViewGroup parent);
@Rule @Rule
public ActivityTestRule<TestActivity> rule = new ActivityTestRule<>(TestActivity.class); public ActivityTestRule<TestActivity> rule = new ActivityTestRule<>(TestActivity.class);
protected CameraPreview preview; protected T preview;
@SuppressWarnings("WeakerAccess") @SuppressWarnings("WeakerAccess")
protected Size surfaceSize; protected Size surfaceSize;
private CameraPreview.SurfaceCallback callback; private CameraPreview.SurfaceCallback callback;

@ -7,24 +7,37 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.otaliastudios.cameraview.filter.Filter;
import com.otaliastudios.cameraview.filter.Filters;
import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import static org.junit.Assert.assertEquals;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@SmallTest @SmallTest
public class GlCameraPreviewTest extends CameraPreviewTest { public class GlCameraPreviewTest extends CameraPreviewTest<GlCameraPreview> {
@Override @Override
protected CameraPreview createPreview(Context context, ViewGroup parent) { protected GlCameraPreview createPreview(Context context, ViewGroup parent) {
return new GlCameraPreview(context, parent); return new GlCameraPreview(context, parent);
} }
@Override @Override
protected float getCropScaleY() { protected float getCropScaleY() {
return 1F / ((GlCameraPreview) preview).mCropScaleY; return 1F / preview.mCropScaleY;
} }
@Override @Override
protected float getCropScaleX() { protected float getCropScaleX() {
return 1F / ((GlCameraPreview) preview).mCropScaleX; return 1F / preview.mCropScaleX;
}
@Test
public void testSetFilter() {
Filter filter = Filters.BLACK_AND_WHITE.newInstance();
preview.setFilter(filter);
assertEquals(filter, preview.getCurrentFilter());
} }
} }

@ -7,15 +7,17 @@ import androidx.annotation.NonNull;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.otaliastudios.cameraview.filter.Filter;
import com.otaliastudios.cameraview.preview.CameraPreview; import com.otaliastudios.cameraview.preview.CameraPreview;
public class MockCameraPreview extends CameraPreview<View, Void> { public class MockCameraPreview extends FilterCameraPreview<View, Void> {
public MockCameraPreview(Context context, ViewGroup parent) { public MockCameraPreview(Context context, ViewGroup parent) {
super(context, parent); super(context, parent);
} }
private View rootView; private View rootView;
private Filter filter;
@Override @Override
public boolean supportsCropping() { public boolean supportsCropping() {
@ -47,4 +49,15 @@ public class MockCameraPreview extends CameraPreview<View, Void> {
public View getRootView() { public View getRootView() {
return rootView; return rootView;
} }
@Override
public void setFilter(@NonNull Filter filter) {
this.filter = filter;
}
@NonNull
@Override
public Filter getCurrentFilter() {
return filter;
}
} }

@ -11,10 +11,10 @@ import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@SmallTest @SmallTest
public class SurfaceCameraPreviewTest extends CameraPreviewTest { public class SurfaceCameraPreviewTest extends CameraPreviewTest<SurfaceCameraPreview> {
@Override @Override
protected CameraPreview createPreview(Context context, ViewGroup parent) { protected SurfaceCameraPreview createPreview(Context context, ViewGroup parent) {
return new SurfaceCameraPreview(context, parent); return new SurfaceCameraPreview(context, parent);
} }

@ -11,10 +11,10 @@ import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
@SmallTest @SmallTest
public class TextureCameraPreviewTest extends CameraPreviewTest { public class TextureCameraPreviewTest extends CameraPreviewTest<TextureCameraPreview> {
@Override @Override
protected CameraPreview createPreview(Context context, ViewGroup parent) { protected TextureCameraPreview createPreview(Context context, ViewGroup parent) {
return new TextureCameraPreview(context, parent); return new TextureCameraPreview(context, parent);
} }

Loading…
Cancel
Save