|
|
@ -26,14 +26,15 @@ public abstract class PreviewTest extends BaseTest { |
|
|
|
@Rule |
|
|
|
@Rule |
|
|
|
public ActivityTestRule<TestActivity> rule = new ActivityTestRule<>(TestActivity.class); |
|
|
|
public ActivityTestRule<TestActivity> rule = new ActivityTestRule<>(TestActivity.class); |
|
|
|
|
|
|
|
|
|
|
|
private Preview preview; |
|
|
|
protected Preview preview; |
|
|
|
|
|
|
|
protected Size surfaceSize; |
|
|
|
private Preview.SurfaceCallback callback; |
|
|
|
private Preview.SurfaceCallback callback; |
|
|
|
private Size surfaceSize; |
|
|
|
private Task<Boolean> availability; |
|
|
|
|
|
|
|
|
|
|
|
@Before |
|
|
|
@Before |
|
|
|
public void setUp() { |
|
|
|
public void setUp() { |
|
|
|
final Task<Boolean> task = new Task<>(); |
|
|
|
availability = new Task<>(); |
|
|
|
task.listen(); |
|
|
|
availability.listen(); |
|
|
|
|
|
|
|
|
|
|
|
ui(new Runnable() { |
|
|
|
ui(new Runnable() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
@ -45,16 +46,29 @@ public abstract class PreviewTest extends BaseTest { |
|
|
|
doAnswer(new Answer() { |
|
|
|
doAnswer(new Answer() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Object answer(InvocationOnMock invocation) throws Throwable { |
|
|
|
public Object answer(InvocationOnMock invocation) throws Throwable { |
|
|
|
task.end(true); |
|
|
|
availability.end(true); |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
}).when(callback).onSurfaceAvailable(); |
|
|
|
}).when(callback).onSurfaceAvailable(); |
|
|
|
preview = createPreview(a, a.getContentView(), callback); |
|
|
|
preview = createPreview(a, a.getContentView(), callback); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Wait for surface to be available.
|
|
|
|
|
|
|
|
protected void ensureAvailable() { |
|
|
|
|
|
|
|
assertNotNull(availability.await(2, TimeUnit.SECONDS)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Boolean available = task.await(2, TimeUnit.SECONDS); |
|
|
|
// Trigger a destroy.
|
|
|
|
assertNotNull(available); |
|
|
|
protected void ensureDestroyed() { |
|
|
|
|
|
|
|
ui(new Runnable() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
rule.getActivity().getContentView().removeView(preview.getView()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
waitUi(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@After |
|
|
|
@After |
|
|
@ -62,14 +76,14 @@ public abstract class PreviewTest extends BaseTest { |
|
|
|
preview = null; |
|
|
|
preview = null; |
|
|
|
callback = null; |
|
|
|
callback = null; |
|
|
|
surfaceSize = null; |
|
|
|
surfaceSize = null; |
|
|
|
|
|
|
|
availability = null; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testDefaults() { |
|
|
|
public void testDefaults() { |
|
|
|
|
|
|
|
ensureAvailable(); |
|
|
|
assertTrue(preview.isReady()); |
|
|
|
assertTrue(preview.isReady()); |
|
|
|
ViewGroup parent = rule.getActivity().getContentView(); |
|
|
|
|
|
|
|
assertNotNull(preview.getView()); |
|
|
|
assertNotNull(preview.getView()); |
|
|
|
assertEquals(parent.getChildAt(0), preview.getView()); |
|
|
|
|
|
|
|
assertNotNull(preview.getOutputClass()); |
|
|
|
assertNotNull(preview.getOutputClass()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -82,6 +96,7 @@ public abstract class PreviewTest extends BaseTest { |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testSurfaceAvailable() { |
|
|
|
public void testSurfaceAvailable() { |
|
|
|
|
|
|
|
ensureAvailable(); |
|
|
|
verify(callback, times(1)).onSurfaceAvailable(); |
|
|
|
verify(callback, times(1)).onSurfaceAvailable(); |
|
|
|
assertEquals(surfaceSize.getWidth(), preview.getSurfaceSize().getWidth()); |
|
|
|
assertEquals(surfaceSize.getWidth(), preview.getSurfaceSize().getWidth()); |
|
|
|
assertEquals(surfaceSize.getHeight(), preview.getSurfaceSize().getHeight()); |
|
|
|
assertEquals(surfaceSize.getHeight(), preview.getSurfaceSize().getHeight()); |
|
|
@ -89,19 +104,16 @@ public abstract class PreviewTest extends BaseTest { |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testSurfaceDestroyed() { |
|
|
|
public void testSurfaceDestroyed() { |
|
|
|
// Trigger a destroy.
|
|
|
|
ensureAvailable(); |
|
|
|
ui(new Runnable() { |
|
|
|
ensureDestroyed(); |
|
|
|
@Override |
|
|
|
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
rule.getActivity().getContentView().removeView(preview.getView()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
assertEquals(0, preview.getSurfaceSize().getWidth()); |
|
|
|
assertEquals(0, preview.getSurfaceSize().getWidth()); |
|
|
|
assertEquals(0, preview.getSurfaceSize().getHeight()); |
|
|
|
assertEquals(0, preview.getSurfaceSize().getHeight()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testCropCenter() throws Exception { |
|
|
|
public void testCropCenter() throws Exception { |
|
|
|
|
|
|
|
ensureAvailable(); |
|
|
|
|
|
|
|
|
|
|
|
// This is given by the activity, it's the fixed size.
|
|
|
|
// This is given by the activity, it's the fixed size.
|
|
|
|
float view = getViewAspectRatio(); |
|
|
|
float view = getViewAspectRatio(); |
|
|
|
|
|
|
|
|
|
|
|