From c554e7e9e02b8ede8b6c9bf96ee093994a77a582 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Wed, 10 Jul 2019 18:22:31 -0300 Subject: [PATCH] Add AnglesTest --- cameraview/build.gradle | 1 - .../cameraview/engine/offset/Angles.java | 9 ++- .../cameraview/engine/offset/AnglesTest.java | 80 +++++++++++++++++++ 3 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 cameraview/src/test/java/com/otaliastudios/cameraview/engine/offset/AnglesTest.java diff --git a/cameraview/build.gradle b/cameraview/build.gradle index 1708e069..7e806451 100644 --- a/cameraview/build.gradle +++ b/cameraview/build.gradle @@ -221,7 +221,6 @@ task mergedCoverageReport(type: JacocoReport) { classFilter.add('**/com/otaliastudios/cameraview/engine/CameraEngine**.*') classFilter.add('**/com/otaliastudios/cameraview/engine/Camera1Engine**.*') classFilter.add('**/com/otaliastudios/cameraview/engine/Camera2Engine**.*') - classFilter.add('**/com/otaliastudios/cameraview/engine/offset/**.*') classFilter.add('**/com/otaliastudios/cameraview/picture/**.*') classFilter.add('**/com/otaliastudios/cameraview/video/**.*') classFilter.add('**/com/otaliastudios/cameraview/video/encoding/**.*') diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/offset/Angles.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/offset/Angles.java index 83df4800..56c9199b 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/offset/Angles.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/offset/Angles.java @@ -1,6 +1,7 @@ package com.otaliastudios.cameraview.engine.offset; import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import com.otaliastudios.cameraview.controls.Facing; @@ -21,9 +22,9 @@ import com.otaliastudios.cameraview.controls.Facing; public class Angles { private Facing mSensorFacing; - private int mSensorOffset = 0; - private int mDisplayOffset = 0; - private int mDeviceOrientation = 0; + @VisibleForTesting int mSensorOffset = 0; + @VisibleForTesting int mDisplayOffset = 0; + @VisibleForTesting int mDeviceOrientation = 0; /** * We want to keep everything in the {@link Axis#ABSOLUTE} reference, @@ -80,7 +81,7 @@ public class Angles { if (from == to) { return 0; } else if (to == Reference.BASE) { - return 360 - absoluteOffset(to, from); + return sanitizeOutput(360 - absoluteOffset(to, from)); } else if (from == Reference.BASE) { switch (to) { case VIEW: return sanitizeOutput(360 - mDisplayOffset); diff --git a/cameraview/src/test/java/com/otaliastudios/cameraview/engine/offset/AnglesTest.java b/cameraview/src/test/java/com/otaliastudios/cameraview/engine/offset/AnglesTest.java new file mode 100644 index 00000000..ac1c949c --- /dev/null +++ b/cameraview/src/test/java/com/otaliastudios/cameraview/engine/offset/AnglesTest.java @@ -0,0 +1,80 @@ +package com.otaliastudios.cameraview.engine.offset; + + +import com.otaliastudios.cameraview.controls.Facing; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class AnglesTest { + + private Angles angles; + + @Before + public void setUp() { + angles = new Angles(); + } + + @After + public void tearDown() { + angles = null; + } + + @Test + public void testSetSensorOffset() { + angles.setSensorOffset(Facing.BACK, 90); + assertEquals(90, angles.mSensorOffset); + angles.setSensorOffset(Facing.FRONT, 90); + assertEquals(270, angles.mSensorOffset); + } + + @Test + public void testSetDisplayOffset() { + angles.setDisplayOffset(90); + assertEquals(90, angles.mDisplayOffset); + } + + @Test + public void testSetDeviceOrientation() { + angles.setDeviceOrientation(90); + assertEquals(90, angles.mDeviceOrientation); + } + + @Test(expected = IllegalStateException.class) + public void testSetSensorOffset_throws() { + angles.setSensorOffset(Facing.BACK, 135); + } + + @Test(expected = IllegalStateException.class) + public void testSetDisplayOffset_throws() { + angles.setDisplayOffset(135); + } + + @Test(expected = IllegalStateException.class) + public void testSetDeviceOrientation_throws() { + angles.setDeviceOrientation(135); + } + + @Test + public void testOffset_BaseToSensor() { + angles.setSensorOffset(Facing.BACK, 90); + assertEquals(270, angles.offset(Reference.BASE, Reference.SENSOR, Axis.RELATIVE_TO_SENSOR)); + angles.setSensorOffset(Facing.FRONT, 270); // This is like setting 90 + assertEquals(90, angles.offset(Reference.BASE, Reference.SENSOR, Axis.RELATIVE_TO_SENSOR)); + } + + @Test + public void testOffset_BaseToView() { + angles.setDisplayOffset(90); + assertEquals(270, angles.offset(Reference.BASE, Reference.VIEW, Axis.ABSOLUTE)); + } + + @Test + public void testOffset_BaseToOutput() { + angles.setDeviceOrientation(90); + assertEquals(90, angles.offset(Reference.BASE, Reference.OUTPUT, Axis.ABSOLUTE)); + } +}