77import static org .junit .Assert .assertEquals ;
88import static org .junit .Assert .assertFalse ;
99import static org .junit .Assert .assertTrue ;
10+ import static org .mockito .ArgumentMatchers .any ;
1011import static org .mockito .Mockito .mock ;
12+ import static org .mockito .Mockito .never ;
13+ import static org .mockito .Mockito .times ;
1114import static org .mockito .Mockito .verify ;
1215
1316import io .flutter .plugin .common .MethodChannel ;
@@ -38,6 +41,32 @@ public void setState_sets_state() {
3841 "State is awaitingPreCapture" , req .getState (), PictureCaptureRequest .State .capturing );
3942 }
4043
44+ @ Test
45+ public void setState_resets_timeout () {
46+ PictureCaptureRequest .TimeoutHandler mockTimeoutHandler =
47+ mock (PictureCaptureRequest .TimeoutHandler .class );
48+ PictureCaptureRequest req = new PictureCaptureRequest (null , mockTimeoutHandler );
49+ req .setState (PictureCaptureRequest .State .focusing );
50+ req .setState (PictureCaptureRequest .State .preCapture );
51+ req .setState (PictureCaptureRequest .State .waitingPreCaptureReady );
52+ req .setState (PictureCaptureRequest .State .capturing );
53+ verify (mockTimeoutHandler , times (4 )).resetTimeout (any ());
54+ verify (mockTimeoutHandler , never ()).clearTimeout (any ());
55+ }
56+
57+ @ Test
58+ public void setState_clears_timeout () {
59+ PictureCaptureRequest .TimeoutHandler mockTimeoutHandler =
60+ mock (PictureCaptureRequest .TimeoutHandler .class );
61+ PictureCaptureRequest req = new PictureCaptureRequest (null , mockTimeoutHandler );
62+ req .setState (PictureCaptureRequest .State .idle );
63+ req .setState (PictureCaptureRequest .State .finished );
64+ req = new PictureCaptureRequest (null , mockTimeoutHandler );
65+ req .setState (PictureCaptureRequest .State .error );
66+ verify (mockTimeoutHandler , never ()).resetTimeout (any ());
67+ verify (mockTimeoutHandler , times (3 )).clearTimeout (any ());
68+ }
69+
4170 @ Test
4271 public void finish_sets_result_and_state () {
4372 // Setup
@@ -50,6 +79,17 @@ public void finish_sets_result_and_state() {
5079 assertEquals ("State is finished" , req .getState (), PictureCaptureRequest .State .finished );
5180 }
5281
82+ @ Test
83+ public void finish_clears_timeout () {
84+ PictureCaptureRequest .TimeoutHandler mockTimeoutHandler =
85+ mock (PictureCaptureRequest .TimeoutHandler .class );
86+ MethodChannel .Result mockResult = mock (MethodChannel .Result .class );
87+ PictureCaptureRequest req = new PictureCaptureRequest (mockResult , mockTimeoutHandler );
88+ req .finish ("/test/path" );
89+ verify (mockTimeoutHandler , never ()).resetTimeout (any ());
90+ verify (mockTimeoutHandler ).clearTimeout (any ());
91+ }
92+
5393 @ Test
5494 public void isFinished_is_true_When_state_is_finished_or_error () {
5595 // Setup
@@ -90,6 +130,17 @@ public void error_sets_result_and_state() {
90130 assertEquals ("State is error" , req .getState (), PictureCaptureRequest .State .error );
91131 }
92132
133+ @ Test
134+ public void error_clears_timeout () {
135+ PictureCaptureRequest .TimeoutHandler mockTimeoutHandler =
136+ mock (PictureCaptureRequest .TimeoutHandler .class );
137+ MethodChannel .Result mockResult = mock (MethodChannel .Result .class );
138+ PictureCaptureRequest req = new PictureCaptureRequest (mockResult , mockTimeoutHandler );
139+ req .error ("ERROR_CODE" , "Error Message" , null );
140+ verify (mockTimeoutHandler , never ()).resetTimeout (any ());
141+ verify (mockTimeoutHandler ).clearTimeout (any ());
142+ }
143+
93144 @ Test (expected = IllegalStateException .class )
94145 public void error_throws_When_already_finished () {
95146 // Setup
0 commit comments