Coverage Summary for Class: NetworkResponseKt (com.codandotv.streamplayerapp.core_networking.handleError)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| NetworkResponseKt |
50%
(1/2)
|
25%
(1/4)
|
28.6%
(2/7)
|
25.7%
(9/35)
|
| NetworkResponseKt$toFlow$1 |
100%
(1/1)
|
33.3%
(2/6)
|
60%
(3/5)
|
55.3%
(26/47)
|
| Total |
66.7%
(2/3)
|
30%
(3/10)
|
41.7%
(5/12)
|
42.7%
(35/82)
|
package com.codandotv.streamplayerapp.core_networking.handleError
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable
sealed class NetworkResponse<out T> {
@Serializable
data class Success<out T>(
val value: T
) : NetworkResponse<T>()
@Serializable
data class Error(
val body: String? = null,
@Transient
val exception: Failure? = null
) : NetworkResponse<Nothing>()
}
fun <T> NetworkResponse<T>.toResult(): Result<T> =
when (this) {
is NetworkResponse.Success -> {
Result.success(this.value)
}
is NetworkResponse.Error -> {
Result.failure(this.exception ?: Failure.GenericError())
}
}
fun <T> NetworkResponse<T>.toFlow(): Flow<T> {
val networkResponse = this
return flow {
when (networkResponse) {
is NetworkResponse.Success -> {
emit(networkResponse.value)
}
is NetworkResponse.Error -> {
throw networkResponse.exception ?: Failure.GenericError()
}
}
}
}