File tree Expand file tree Collapse file tree
ui/controller/testing/src
main/java/com/google/jetpackcamera/ui/controller/testing
test/java/com/google/jetpackcamera/ui/controller/testing Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -33,14 +33,23 @@ import kotlinx.coroutines.channels.ReceiveChannel
3333 * @param setAudioEnabledAction The action to perform when [setAudioEnabled] is called.
3434 */
3535class FakeCaptureController (
36- override val captureEvents : ReceiveChannel <CaptureEvent > = Channel (),
36+ override val captureEvents : ReceiveChannel <CaptureEvent > = Channel (Channel . UNLIMITED ),
3737 var captureImageAction : (ContentResolver ) -> Unit = {},
3838 var startVideoRecordingAction : () -> Unit = {},
3939 var stopVideoRecordingAction : () -> Unit = {},
4040 var setLockedRecordingAction : (Boolean ) -> Unit = {},
4141 var setPausedAction : (Boolean ) -> Unit = {},
4242 var setAudioEnabledAction : (Boolean ) -> Unit = {}
4343) : CaptureController {
44+ /* *
45+ * Simulates a [CaptureEvent] being emitted by the controller.
46+ * This relies on the [captureEvents] instance being a [Channel].
47+ */
48+ fun simulateCaptureEvent (event : CaptureEvent ) {
49+ (captureEvents as ? Channel <CaptureEvent >)?.trySend(event)
50+ ? : throw IllegalStateException (" captureEvents is not a Channel" )
51+ }
52+
4453 override fun captureImage (contentResolver : ContentResolver ) {
4554 captureImageAction(contentResolver)
4655 }
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ import android.content.Context
2020import androidx.test.core.app.ApplicationProvider
2121import com.google.common.truth.Truth.assertThat
2222import com.google.jetpackcamera.model.CaptureEvent
23+ import com.google.jetpackcamera.model.ImageCaptureEvent
2324import kotlinx.coroutines.channels.Channel
2425import org.junit.Test
2526import org.junit.runner.RunWith
@@ -34,6 +35,16 @@ class FakeCaptureControllerTest {
3435 assertThat(controller.captureEvents).isEqualTo(channel)
3536 }
3637
38+ @Test
39+ fun simulateCaptureEvent_emitsToCaptureEventsChannel () {
40+ val controller = FakeCaptureController ()
41+ val event = ImageCaptureEvent .SingleImageSaved ()
42+ controller.simulateCaptureEvent(event)
43+
44+ val receivedEvent = controller.captureEvents.tryReceive().getOrNull()
45+ assertThat(receivedEvent).isEqualTo(event)
46+ }
47+
3748 @Test
3849 fun captureImage_invokesAction () {
3950 var calledResolver: ContentResolver ? = null
You can’t perform that action at this time.
0 commit comments