Skip to content

Instantly share code, notes, and snippets.

@mreram
Created July 25, 2020 21:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mreram/614a1ab77c3f9542562e2a92c7b53956 to your computer and use it in GitHub Desktop.
Save mreram/614a1ab77c3f9542562e2a92c7b53956 to your computer and use it in GitHub Desktop.
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.consumeEach
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.broadcastIn
import kotlinx.coroutines.test.runBlockingTest
import org.junit.Test
class StateFlowBroadcastTest {
@ExperimentalCoroutinesApi
companion object {
private val stateFlow = MutableStateFlow("initial value")
@FlowPreview
val broadcastChannel =
stateFlow.broadcastIn(CoroutineScope(Dispatchers.Unconfined), CoroutineStart.LAZY)
@FlowPreview
val receiveChannel = broadcastChannel.openSubscription()
}
@FlowPreview
@ExperimentalCoroutinesApi
@Test
fun `send and receive a bullshit`() {
runBlockingTest {
launch {
receiveChannel.consumeEach {
println(it)
}
}
launch {
delay(2000)
broadcastChannel.send("heyyyyy" + 1)
delay(2000)
broadcastChannel.close()
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment