MockRtpTransceiver.kt
1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package org.webrtc
import io.livekit.android.mock.MockRtpReceiver
import io.livekit.android.mock.MockRtpSender
import org.mockito.Mockito
import org.webrtc.RtpTransceiver.RtpTransceiverDirection
object MockRtpTransceiver {
fun create(
track: MediaStreamTrack,
init: RtpTransceiver.RtpTransceiverInit = RtpTransceiver.RtpTransceiverInit()
): RtpTransceiver {
val mock = Mockito.mock(RtpTransceiver::class.java)
Mockito.`when`(mock.mediaType).then {
return@then when (track.kind()) {
MediaStreamTrack.AUDIO_TRACK_KIND -> MediaStreamTrack.MediaType.MEDIA_TYPE_AUDIO
MediaStreamTrack.VIDEO_TRACK_KIND -> MediaStreamTrack.MediaType.MEDIA_TYPE_VIDEO
else -> throw IllegalStateException("illegal kind: ${track.kind()}")
}
}
val direction = RtpTransceiverDirection.fromNativeIndex(init.directionNativeIndex)
when (direction) {
RtpTransceiverDirection.SEND_RECV, RtpTransceiverDirection.SEND_ONLY -> {
val sender = MockRtpSender.create()
Mockito.`when`(mock.sender)
.then { sender }
}
else -> {}
}
when (direction) {
RtpTransceiverDirection.SEND_RECV, RtpTransceiverDirection.RECV_ONLY -> {
val receiver = MockRtpReceiver.create()
Mockito.`when`(mock.receiver)
.then { receiver }
}
else -> {}
}
return mock
}
}