OrientationHelperTest

pull/22/head
Mattia Iavarone 8 years ago
parent 84451653a9
commit 03fe6e6fce
  1. 97
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/OrientationHelperTest.java
  2. 9
      cameraview/src/main/utils/com/otaliastudios/cameraview/OrientationHelper.java

@ -0,0 +1,97 @@
package com.otaliastudios.cameraview;
import android.annotation.TargetApi;
import android.app.Instrumentation;
import android.app.UiAutomation;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.view.OrientationEventListener;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
@RunWith(AndroidJUnit4.class)
@SmallTest
public class OrientationHelperTest {
private OrientationHelper helper;
private OrientationHelper.Callbacks callbacks;
@Before
public void setUp() {
InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
callbacks = mock(OrientationHelper.Callbacks.class);
helper = new OrientationHelper(InstrumentationRegistry.getContext(), callbacks);
}
});
}
@After
public void tearDown() {
callbacks = null;
helper = null;
}
@Test
public void testEnable() {
assertNotNull(helper.mListener);
assertNull(helper.mDisplay);
helper.enable(InstrumentationRegistry.getContext());
assertNotNull(helper.mListener);
assertNotNull(helper.mDisplay);
// Ensure nothing bad if called twice.
helper.enable(InstrumentationRegistry.getContext());
assertNotNull(helper.mListener);
assertNotNull(helper.mDisplay);
helper.disable();
assertNotNull(helper.mListener);
assertNull(helper.mDisplay);
verify(callbacks, atLeastOnce()).onDisplayOffsetChanged(anyInt());
}
@Test
public void testRotation() {
helper.enable(InstrumentationRegistry.getContext());
reset(callbacks); // Reset counts.
helper.mListener.onOrientationChanged(OrientationEventListener.ORIENTATION_UNKNOWN);
assertEquals(helper.mLastOrientation, 0);
helper.mListener.onOrientationChanged(10);
assertEquals(helper.mLastOrientation, 0);
helper.mListener.onOrientationChanged(-10);
assertEquals(helper.mLastOrientation, 0);
helper.mListener.onOrientationChanged(44);
assertEquals(helper.mLastOrientation, 0);
helper.mListener.onOrientationChanged(360);
assertEquals(helper.mLastOrientation, 0);
// Callback called just once.
verify(callbacks, times(1)).onDeviceOrientationChanged(0);
helper.mListener.onOrientationChanged(90);
helper.mListener.onOrientationChanged(91);
assertEquals(helper.mLastOrientation, 90);
verify(callbacks, times(1)).onDeviceOrientationChanged(90);
helper.mListener.onOrientationChanged(180);
assertEquals(helper.mLastOrientation, 180);
verify(callbacks, times(1)).onDeviceOrientationChanged(180);
helper.mListener.onOrientationChanged(270);
assertEquals(helper.mLastOrientation, 270);
verify(callbacks, times(1)).onDeviceOrientationChanged(270);
}
}

@ -19,11 +19,12 @@ class OrientationHelper {
DISPLAY_ORIENTATIONS.put(Surface.ROTATION_270, 270);
}
private final OrientationEventListener mListener;
final OrientationEventListener mListener;
Display mDisplay;
private final Callbacks mCallbacks;
private Display mDisplay;
private int mLastKnownDisplayOffset = -1;
private int mLastOrientation = -1;
int mLastKnownDisplayOffset = -1;
int mLastOrientation = -1;
interface Callbacks {
void onDisplayOffsetChanged(int displayOffset);

Loading…
Cancel
Save