From 5763b2a60b688c1236447f99fd99f17daeb55ce7 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Fri, 5 Apr 2019 20:59:18 -0300 Subject: [PATCH] Fix Frame tests --- .../cameraview/FrameManagerTest.java | 19 ++++++---- .../otaliastudios/cameraview/FrameTest.java | 36 +++++++++---------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/cameraview/src/test/java/com/otaliastudios/cameraview/FrameManagerTest.java b/cameraview/src/test/java/com/otaliastudios/cameraview/FrameManagerTest.java index 98959d3a..6a9dd72d 100644 --- a/cameraview/src/test/java/com/otaliastudios/cameraview/FrameManagerTest.java +++ b/cameraview/src/test/java/com/otaliastudios/cameraview/FrameManagerTest.java @@ -65,14 +65,20 @@ public class FrameManagerTest { } @Test - public void testOnFrameReleased_nullBuffer() { + public void testOnFrameReleased_alreadyFull() { FrameManager manager = new FrameManager(1, callback); - manager.allocate(4, new Size(50, 50)); - reset(callback); + int length = manager.allocate(4, new Size(50, 50)); - Frame frame = manager.getFrame(null, 0, 0, null, 0); - manager.onFrameReleased(frame); - verify(callback, never()).onBufferAvailable(frame.getData()); + Frame frame1 = manager.getFrame(new byte[length], 0, 0, null, 0); + // Since frame1 is already taken and poolSize = 1, a new Frame is created. + 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 @@ -118,7 +124,6 @@ public class FrameManagerTest { // Release the whole manager and ensure it clears the frame. manager.release(); - assertNull(first.getData()); assertNull(first.mManager); } } diff --git a/cameraview/src/test/java/com/otaliastudios/cameraview/FrameTest.java b/cameraview/src/test/java/com/otaliastudios/cameraview/FrameTest.java index 13892402..22f27942 100644 --- a/cameraview/src/test/java/com/otaliastudios/cameraview/FrameTest.java +++ b/cameraview/src/test/java/com/otaliastudios/cameraview/FrameTest.java @@ -6,6 +6,7 @@ import android.graphics.ImageFormat; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; import static junit.framework.Assert.assertNotNull; import static org.junit.Assert.assertArrayEquals; @@ -33,16 +34,6 @@ public class FrameTest { 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 public void testEquals() { Frame f1 = new Frame(manager); @@ -57,17 +48,26 @@ public class FrameTest { } @Test - public void testRelease() { - Frame frame = new Frame(manager); + public void testReleaseThrows() { + final Frame frame = new Frame(manager); frame.set(new byte[2], 1000, 90, new Size(10, 10), ImageFormat.NV21); 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); + + 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