44import android .content .Context ;
55import android .graphics .Bitmap ;
66import android .graphics .BitmapFactory ;
7- import android .graphics .Color ;
87import android .graphics .PointF ;
9- import android .graphics .Rect ;
10- import android .graphics .YuvImage ;
118import android .support .test .filters .MediumTest ;
129import android .support .test .runner .AndroidJUnit4 ;
1310import android .view .ViewGroup ;
1815import org .junit .runner .RunWith ;
1916import org .mockito .invocation .InvocationOnMock ;
2017import org .mockito .stubbing .Answer ;
21-
22- import java .io .ByteArrayOutputStream ;
23- import java .io .OutputStream ;
18+ import org .mockito .stubbing .Stubber ;
2419
2520import static junit .framework .Assert .assertNotNull ;
2621import static org .junit .Assert .assertEquals ;
3328import static org .mockito .Mockito .doAnswer ;
3429import static org .mockito .Mockito .mock ;
3530import static org .mockito .Mockito .never ;
31+ import static org .mockito .Mockito .reset ;
3632import static org .mockito .Mockito .times ;
3733import static org .mockito .Mockito .verify ;
38- import static org .mockito .Mockito .when ;
3934
4035@ RunWith (AndroidJUnit4 .class )
4136@ MediumTest
4237public class CameraCallbacksTest extends BaseTest {
4338
4439 private CameraView camera ;
45- private CameraView .CameraCallbacks callbacks ;
4640 private CameraListener listener ;
4741 private MockCameraController mockController ;
48- private MockPreview mockPreview ;
42+ private MockCameraPreview mockPreview ;
4943 private Task <Boolean > task ;
5044
5145
@@ -58,14 +52,14 @@ public void run() {
5852 listener = mock (CameraListener .class );
5953 camera = new CameraView (context ) {
6054 @ Override
61- protected CameraController instantiateCameraController (CameraCallbacks callbacks , Preview preview ) {
62- mockController = new MockCameraController (callbacks , preview );
55+ protected CameraController instantiateCameraController (CameraCallbacks callbacks ) {
56+ mockController = new MockCameraController (callbacks );
6357 return mockController ;
6458 }
6559
6660 @ Override
67- protected Preview instantiatePreview (Context context , ViewGroup container ) {
68- mockPreview = new MockPreview (context , container );
61+ protected CameraPreview instantiatePreview (Context context , ViewGroup container ) {
62+ mockPreview = new MockCameraPreview (context , container );
6963 return mockPreview ;
7064 }
7165
@@ -74,8 +68,8 @@ protected boolean checkPermissions(SessionType sessionType, Audio audio) {
7468 return true ;
7569 }
7670 };
71+ camera .instantiatePreview ();
7772 camera .addCameraListener (listener );
78- callbacks = camera .mCameraCallbacks ;
7973 task = new Task <>();
8074 task .listen ();
8175 }
@@ -87,26 +81,25 @@ public void tearDown() {
8781 camera = null ;
8882 mockController = null ;
8983 mockPreview = null ;
90- callbacks = null ;
9184 listener = null ;
9285 }
9386
9487 // Completes our task.
95- private Answer completeTask () {
96- return new Answer () {
88+ private Stubber completeTask () {
89+ return doAnswer ( new Answer () {
9790 @ Override
9891 public Object answer (InvocationOnMock invocation ) throws Throwable {
9992 task .end (true );
10093 return null ;
10194 }
102- };
95+ }) ;
10396 }
10497
10598 @ Test
10699 public void testDontDispatchIfRemoved () {
107100 camera .removeCameraListener (listener );
108- doAnswer ( completeTask () ).when (listener ).onCameraOpened (null );
109- callbacks .dispatchOnCameraOpened (null );
101+ completeTask ().when (listener ).onCameraOpened (null );
102+ camera . mCameraCallbacks .dispatchOnCameraOpened (null );
110103
111104 assertNull (task .await (200 ));
112105 verify (listener , never ()).onCameraOpened (null );
@@ -115,53 +108,53 @@ public void testDontDispatchIfRemoved() {
115108 @ Test
116109 public void testDontDispatchIfCleared () {
117110 camera .clearCameraListeners ();
118- doAnswer ( completeTask () ).when (listener ).onCameraOpened (null );
119- callbacks .dispatchOnCameraOpened (null );
111+ completeTask ().when (listener ).onCameraOpened (null );
112+ camera . mCameraCallbacks .dispatchOnCameraOpened (null );
120113
121114 assertNull (task .await (200 ));
122115 verify (listener , never ()).onCameraOpened (null );
123116 }
124117
125118 @ Test
126119 public void testDispatchOnCameraOpened () {
127- doAnswer ( completeTask () ).when (listener ).onCameraOpened (null );
128- callbacks .dispatchOnCameraOpened (null );
120+ completeTask ().when (listener ).onCameraOpened (null );
121+ camera . mCameraCallbacks .dispatchOnCameraOpened (null );
129122
130123 assertNotNull (task .await (200 ));
131124 verify (listener , times (1 )).onCameraOpened (null );
132125 }
133126
134127 @ Test
135128 public void testDispatchOnCameraClosed () {
136- doAnswer ( completeTask () ).when (listener ).onCameraClosed ();
137- callbacks .dispatchOnCameraClosed ();
129+ completeTask ().when (listener ).onCameraClosed ();
130+ camera . mCameraCallbacks .dispatchOnCameraClosed ();
138131
139132 assertNotNull (task .await (200 ));
140133 verify (listener , times (1 )).onCameraClosed ();
141134 }
142135
143136 @ Test
144137 public void testDispatchOnVideoTaken () {
145- doAnswer ( completeTask () ).when (listener ).onVideoTaken (null );
146- callbacks .dispatchOnVideoTaken (null );
138+ completeTask ().when (listener ).onVideoTaken (null );
139+ camera . mCameraCallbacks .dispatchOnVideoTaken (null );
147140
148141 assertNotNull (task .await (200 ));
149142 verify (listener , times (1 )).onVideoTaken (null );
150143 }
151144
152145 @ Test
153146 public void testDispatchOnZoomChanged () {
154- doAnswer ( completeTask () ).when (listener ).onZoomChanged (anyFloat (), any (float [].class ), any (PointF [].class ));
155- callbacks .dispatchOnZoomChanged (0f , null );
147+ completeTask ().when (listener ).onZoomChanged (anyFloat (), any (float [].class ), any (PointF [].class ));
148+ camera . mCameraCallbacks .dispatchOnZoomChanged (0f , null );
156149
157150 assertNotNull (task .await (200 ));
158151 verify (listener , times (1 )).onZoomChanged (anyFloat (), any (float [].class ), any (PointF [].class ));
159152 }
160153
161154 @ Test
162155 public void testDispatchOnExposureCorrectionChanged () {
163- doAnswer ( completeTask () ).when (listener ).onExposureCorrectionChanged (0f , null , null );
164- callbacks .dispatchOnExposureCorrectionChanged (0f , null , null );
156+ completeTask ().when (listener ).onExposureCorrectionChanged (0f , null , null );
157+ camera . mCameraCallbacks .dispatchOnExposureCorrectionChanged (0f , null , null );
165158
166159 assertNotNull (task .await (200 ));
167160 verify (listener , times (1 )).onExposureCorrectionChanged (0f , null , null );
@@ -174,8 +167,8 @@ public void testDispatchOnFocusStart() {
174167 camera .mapGesture (Gesture .TAP , GestureAction .FOCUS_WITH_MARKER );
175168
176169 PointF point = new PointF ();
177- doAnswer ( completeTask () ).when (listener ).onFocusStart (point );
178- callbacks .dispatchOnFocusStart (Gesture .TAP , point );
170+ completeTask ().when (listener ).onFocusStart (point );
171+ camera . mCameraCallbacks .dispatchOnFocusStart (Gesture .TAP , point );
179172
180173 assertNotNull (task .await (200 ));
181174 verify (listener , times (1 )).onFocusStart (point );
@@ -190,8 +183,8 @@ public void testDispatchOnFocusEnd() {
190183
191184 PointF point = new PointF ();
192185 boolean success = true ;
193- doAnswer ( completeTask () ).when (listener ).onFocusEnd (success , point );
194- callbacks .dispatchOnFocusEnd (Gesture .TAP , success , point );
186+ completeTask ().when (listener ).onFocusEnd (success , point );
187+ camera . mCameraCallbacks .dispatchOnFocusEnd (Gesture .TAP , success , point );
195188
196189 assertNotNull (task .await (200 ));
197190 verify (listener , times (1 )).onFocusEnd (success , point );
@@ -200,31 +193,31 @@ public void testDispatchOnFocusEnd() {
200193
201194 @ Test
202195 public void testOrientationCallbacks_deviceOnly () {
203- doAnswer ( completeTask () ).when (listener ).onOrientationChanged (anyInt ());
196+ completeTask ().when (listener ).onOrientationChanged (anyInt ());
204197
205198 // Assert not called. Both methods must be called.
206- callbacks .onDeviceOrientationChanged (0 );
199+ camera . mCameraCallbacks .onDeviceOrientationChanged (0 );
207200 assertNull (task .await (200 ));
208201 verify (listener , never ()).onOrientationChanged (anyInt ());
209202 }
210203
211204 @ Test
212205 public void testOrientationCallbacks_displayOnly () {
213- doAnswer ( completeTask () ).when (listener ).onOrientationChanged (anyInt ());
206+ completeTask ().when (listener ).onOrientationChanged (anyInt ());
214207
215208 // Assert not called. Both methods must be called.
216- callbacks .onDisplayOffsetChanged (0 );
209+ camera . mCameraCallbacks .onDisplayOffsetChanged (0 );
217210 assertNull (task .await (200 ));
218211 verify (listener , never ()).onOrientationChanged (anyInt ());
219212 }
220213
221214 @ Test
222215 public void testOrientationCallbacks_both () {
223- doAnswer ( completeTask () ).when (listener ).onOrientationChanged (anyInt ());
216+ completeTask ().when (listener ).onOrientationChanged (anyInt ());
224217
225218 // Assert called.
226- callbacks .onDisplayOffsetChanged (0 );
227- callbacks .onDeviceOrientationChanged (90 );
219+ camera . mCameraCallbacks .onDisplayOffsetChanged (0 );
220+ camera . mCameraCallbacks .onDeviceOrientationChanged (90 );
228221 assertNotNull (task .await (200 ));
229222 verify (listener , times (1 )).onOrientationChanged (anyInt ());
230223 }
@@ -290,9 +283,9 @@ public Object answer(InvocationOnMock invocation) throws Throwable {
290283
291284 // Create fake JPEG array and trigger the process.
292285 if (jpeg ) {
293- callbacks .processImage (mockJpeg (imageDim [0 ], imageDim [1 ]), true , false );
286+ camera . mCameraCallbacks .processImage (mockJpeg (imageDim [0 ], imageDim [1 ]), true , false );
294287 } else {
295- callbacks .processSnapshot (mockYuv (imageDim [0 ], imageDim [1 ]), true , false );
288+ camera . mCameraCallbacks .processSnapshot (mockYuv (imageDim [0 ], imageDim [1 ]), true , false );
296289 }
297290
298291 // Wait for result and get out dimensions.
0 commit comments