Fix Frame tests

pull/431/head
Mattia Iavarone 6 years ago
parent b0a6253120
commit 5763b2a60b
  1. 19
      cameraview/src/test/java/com/otaliastudios/cameraview/FrameManagerTest.java
  2. 36
      cameraview/src/test/java/com/otaliastudios/cameraview/FrameTest.java

@ -65,14 +65,20 @@ public class FrameManagerTest {
} }
@Test @Test
public void testOnFrameReleased_nullBuffer() { public void testOnFrameReleased_alreadyFull() {
FrameManager manager = new FrameManager(1, callback); FrameManager manager = new FrameManager(1, callback);
manager.allocate(4, new Size(50, 50)); int length = manager.allocate(4, new Size(50, 50));
reset(callback);
Frame frame = manager.getFrame(null, 0, 0, null, 0); Frame frame1 = manager.getFrame(new byte[length], 0, 0, null, 0);
manager.onFrameReleased(frame); // Since frame1 is already taken and poolSize = 1, a new Frame is created.
verify(callback, never()).onBufferAvailable(frame.getData()); Frame frame2 = manager.getFrame(new byte[length], 0, 0, null, 0);
// Release the first frame so it goes back into the pool.
manager.onFrameReleased(frame1);
reset(callback);
// Release the second. The pool is already full, so onBufferAvailable should not be called
// since this Frame instance will NOT be reused.
manager.onFrameReleased(frame2);
verify(callback, never()).onBufferAvailable(frame2.getData());
} }
@Test @Test
@ -118,7 +124,6 @@ public class FrameManagerTest {
// Release the whole manager and ensure it clears the frame. // Release the whole manager and ensure it clears the frame.
manager.release(); manager.release();
assertNull(first.getData());
assertNull(first.mManager); assertNull(first.mManager);
} }
} }

@ -6,6 +6,7 @@ import android.graphics.ImageFormat;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.Mockito;
import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertArrayEquals;
@ -33,16 +34,6 @@ public class FrameTest {
manager = null; manager = null;
} }
@Test
public void testDefaults() {
Frame frame = new Frame(manager);
assertEquals(frame.getTime(), -1);
assertEquals(frame.getFormat(), -1);
assertEquals(frame.getRotation(), 0);
assertNull(frame.getData());
assertNull(frame.getSize());
}
@Test @Test
public void testEquals() { public void testEquals() {
Frame f1 = new Frame(manager); Frame f1 = new Frame(manager);
@ -57,17 +48,26 @@ public class FrameTest {
} }
@Test @Test
public void testRelease() { public void testReleaseThrows() {
Frame frame = new Frame(manager); final Frame frame = new Frame(manager);
frame.set(new byte[2], 1000, 90, new Size(10, 10), ImageFormat.NV21); frame.set(new byte[2], 1000, 90, new Size(10, 10), ImageFormat.NV21);
frame.release(); frame.release();
assertEquals(frame.getTime(), -1);
assertEquals(frame.getFormat(), -1);
assertEquals(frame.getRotation(), 0);
assertNull(frame.getData());
assertNull(frame.getSize());
verify(manager, times(1)).onFrameReleased(frame); verify(manager, times(1)).onFrameReleased(frame);
assertThrows(new Runnable() { public void run() { frame.getTime(); }});
assertThrows(new Runnable() { public void run() { frame.getFormat(); }});
assertThrows(new Runnable() { public void run() { frame.getRotation(); }});
assertThrows(new Runnable() { public void run() { frame.getData(); }});
assertThrows(new Runnable() { public void run() { frame.getSize(); }});
}
private void assertThrows(Runnable runnable) {
try {
runnable.run();
throw new IllegalStateException("Expected an exception but found none.");
} catch (Exception e) {
// All good
}
} }
@Test @Test

Loading…
Cancel
Save