diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewTest.java index 86b63c22..1c0d7ecd 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraViewTest.java @@ -22,6 +22,9 @@ import com.otaliastudios.cameraview.controls.Facing; import com.otaliastudios.cameraview.controls.Flash; import com.otaliastudios.cameraview.controls.Preview; 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.FrameProcessor; import com.otaliastudios.cameraview.gesture.Gesture; @@ -65,7 +68,7 @@ public class CameraViewTest extends BaseTest { private CameraView cameraView; private MockCameraEngine mockController; - private CameraPreview mockPreview; + private MockCameraPreview mockPreview; private boolean hasPermissions; @Before @@ -825,4 +828,30 @@ public class CameraViewTest extends BaseTest { //endregion // 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(); + } } diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/CameraPreviewTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/CameraPreviewTest.java index c1838bb3..2142eae9 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/CameraPreviewTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/CameraPreviewTest.java @@ -23,16 +23,16 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; -public abstract class CameraPreviewTest extends BaseTest { +public abstract class CameraPreviewTest extends BaseTest { private final static long DELAY = 4000; - protected abstract CameraPreview createPreview(Context context, ViewGroup parent); + protected abstract T createPreview(Context context, ViewGroup parent); @Rule public ActivityTestRule rule = new ActivityTestRule<>(TestActivity.class); - protected CameraPreview preview; + protected T preview; @SuppressWarnings("WeakerAccess") protected Size surfaceSize; private CameraPreview.SurfaceCallback callback; diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/GlCameraPreviewTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/GlCameraPreviewTest.java index ff8a085e..968ca5db 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/GlCameraPreviewTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/GlCameraPreviewTest.java @@ -7,24 +7,37 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; 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 static org.junit.Assert.assertEquals; + @RunWith(AndroidJUnit4.class) @SmallTest -public class GlCameraPreviewTest extends CameraPreviewTest { +public class GlCameraPreviewTest extends CameraPreviewTest { @Override - protected CameraPreview createPreview(Context context, ViewGroup parent) { + protected GlCameraPreview createPreview(Context context, ViewGroup parent) { return new GlCameraPreview(context, parent); } @Override protected float getCropScaleY() { - return 1F / ((GlCameraPreview) preview).mCropScaleY; + return 1F / preview.mCropScaleY; } @Override 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()); } } diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java index d1e5d647..bec20e0e 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java @@ -7,15 +7,17 @@ import androidx.annotation.NonNull; import android.view.View; import android.view.ViewGroup; +import com.otaliastudios.cameraview.filter.Filter; import com.otaliastudios.cameraview.preview.CameraPreview; -public class MockCameraPreview extends CameraPreview { +public class MockCameraPreview extends FilterCameraPreview { public MockCameraPreview(Context context, ViewGroup parent) { super(context, parent); } private View rootView; + private Filter filter; @Override public boolean supportsCropping() { @@ -47,4 +49,15 @@ public class MockCameraPreview extends CameraPreview { public View getRootView() { return rootView; } + + @Override + public void setFilter(@NonNull Filter filter) { + this.filter = filter; + } + + @NonNull + @Override + public Filter getCurrentFilter() { + return filter; + } } diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/SurfaceCameraPreviewTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/SurfaceCameraPreviewTest.java index 8b92e042..fcf9b282 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/SurfaceCameraPreviewTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/SurfaceCameraPreviewTest.java @@ -11,10 +11,10 @@ import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) @SmallTest -public class SurfaceCameraPreviewTest extends CameraPreviewTest { +public class SurfaceCameraPreviewTest extends CameraPreviewTest { @Override - protected CameraPreview createPreview(Context context, ViewGroup parent) { + protected SurfaceCameraPreview createPreview(Context context, ViewGroup parent) { return new SurfaceCameraPreview(context, parent); } diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/TextureCameraPreviewTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/TextureCameraPreviewTest.java index e5678e43..0efbfeb5 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/TextureCameraPreviewTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/TextureCameraPreviewTest.java @@ -11,10 +11,10 @@ import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) @SmallTest -public class TextureCameraPreviewTest extends CameraPreviewTest { +public class TextureCameraPreviewTest extends CameraPreviewTest { @Override - protected CameraPreview createPreview(Context context, ViewGroup parent) { + protected TextureCameraPreview createPreview(Context context, ViewGroup parent) { return new TextureCameraPreview(context, parent); }