Coverage Summary for Class: HandleDeferredKt (com.javiersc.network.either.internal.deferred)

Class Class, % Method, % Branch, % Line, % Instruction, %
HandleDeferredKt 100% (1/1) 33.3% (1/3) 62.5% (10/16) 33.3% (7/21) 44.4% (44/99)


 package com.javiersc.network.either.internal.deferred
 
 import com.javiersc.network.either.Headers
 import com.javiersc.network.either.NetworkEither
 import com.javiersc.network.either.NetworkEither.Companion.httpFailure
 import com.javiersc.network.either.NetworkEither.Companion.success
 import com.javiersc.network.either.NetworkEither.Companion.unknownFailure
 import com.javiersc.network.either.internal.utils.printlnError
 import kotlinx.coroutines.CompletableDeferred
 
 internal fun <F, S> handleDeferred(
     deferred: CompletableDeferred<NetworkEither<F, S>>,
     code: Int,
     body: S?,
     errorBody: F?,
     headers: Headers,
 ) {
     @Suppress("MagicNumber")
     when (code) {
         in 200..299 -> {
             if (body != null) {
                 deferred.complete(success(body, code, headers))
             } else handleNullBody(deferred, code, headers)
         }
         in 400..599 -> {
             if (errorBody != null) {
                 deferred.complete(httpFailure(errorBody, code, headers))
             } else handleNullErrorBody(deferred, code, headers)
         }
     }
 }
 
 @Suppress("UNCHECKED_CAST")
 private fun <F, S> handleNullBody(
     deferred: CompletableDeferred<NetworkEither<F, S>>,
     code: Int,
     headers: Headers,
 ) {
     try {
         deferred.complete(success(Unit as S, code, headers))
     } catch (e: ClassCastException) {
         printlnError(
             """
                | # # # # # # # # # # # # # # ERROR # # # # # # # # # # # # # # # # # #
                | # NetworkResponse should use Unit as Success type when body is null #
                | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
             """
                 .trimMargin()
         )
         deferred.complete(unknownFailure(e))
     }
 }
 
 @Suppress("UNCHECKED_CAST")
 private fun <F, S> handleNullErrorBody(
     deferred: CompletableDeferred<NetworkEither<F, S>>,
     code: Int,
     headers: Headers,
 ) {
     try {
         deferred.complete(httpFailure(Unit as F, code, headers))
     } catch (e: ClassCastException) {
         printlnError(
             """
                | # # # # # # # # # # # # # # ERROR # # # # # # # # # # # # # # # # #
                | # NetworkResponse should use Unit as Error type when body is null #
                | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
             """
                 .trimMargin()
         )
         deferred.complete(unknownFailure(e))
     }
 }