Coverage Summary for Class: JsonElementExtensionsKt (cloud.mindbox.mobile_sdk.inapp.data.dto.deserializers)

Class Class, % Method, % Branch, % Line, % Instruction, %
JsonElementExtensionsKt 100% (1/1) 80% (4/5) 75% (33/44) 85% (17/20) 78.6% (125/159)


 package cloud.mindbox.mobile_sdk.inapp.data.dto.deserializers
 
 import cloud.mindbox.mobile_sdk.models.TimeSpan
 import com.google.gson.JsonElement
 import com.google.gson.JsonObject
 
 internal fun JsonObject.getAsIntOrNull(key: String): Int? {
     return get(key)?.let { element ->
         when {
             element.isJsonPrimitive && element.asJsonPrimitive.isNumber -> {
                 val number = element.asNumber
                 if (number.toLong() in Int.MIN_VALUE..Int.MAX_VALUE) number.toInt() else null
             }
             element.isJsonPrimitive && element.asJsonPrimitive.isString -> element.asString.toIntOrNull()
             else -> null
         }
     }
 }
 
 internal fun JsonObject.getAsTimeSpan(key: String): TimeSpan? {
     return get(key)?.let { element ->
         when {
             element.isJsonPrimitive && element.asJsonPrimitive.isString -> TimeSpan.fromStringOrNull(element.asString)
             else -> null
         }
     }
 }
 
 internal fun JsonElement.getBoolean(): Boolean {
     return when {
         isJsonPrimitive && asJsonPrimitive.isBoolean -> asJsonPrimitive.asBoolean
         else -> false
     }
 }
 
 internal fun JsonElement.getString(): String? {
     return when {
         isJsonPrimitive && asJsonPrimitive.isString -> asJsonPrimitive.asString
         else -> null
     }
 }
 
 internal fun JsonObject.getAsBooleanOrNull(key: String): Boolean? {
     return get(key)?.takeIf { it.isJsonPrimitive && it.asJsonPrimitive.isBoolean }
         ?.asJsonPrimitive
         ?.asBoolean
 }