Coverage Summary for Class: DateTimeAdapter (cloud.mindbox.mobile_sdk.models.operation.adapters)

Class Method, % Branch, % Line, % Instruction, %
DateTimeAdapter 100% (3/3) 50% (1/2) 100% (4/4) 92.9% (26/28)
DateTimeAdapter$Companion
DateTimeAdapter$read$1$1 100% (1/1) 66.7% (4/6) 100% (5/5) 89.2% (33/37)
DateTimeAdapter$write$1 100% (1/1) 66.7% (4/6) 100% (4/4) 83.9% (26/31)
Total 100% (5/5) 64.3% (9/14) 100% (13/13) 88.5% (85/96)


 package cloud.mindbox.mobile_sdk.models.operation.adapters
 
 import cloud.mindbox.mobile_sdk.models.operation.DateTime
 import cloud.mindbox.mobile_sdk.utils.LoggingExceptionHandler
 import com.google.gson.TypeAdapter
 import com.google.gson.internal.bind.util.ISO8601Utils
 import com.google.gson.stream.JsonReader
 import com.google.gson.stream.JsonToken
 import com.google.gson.stream.JsonWriter
 import java.text.ParsePosition
 import java.text.SimpleDateFormat
 import java.util.Locale
 
 internal class DateTimeAdapter : TypeAdapter<DateTime>() {
 
     private companion object {
 
         private const val WRITE_DATA_FORMAT = "dd.MM.yyyy HH:mm:ss.FFF"
     }
 
     override fun write(out: JsonWriter?, value: DateTime?) {
         LoggingExceptionHandler.runCatching {
             if (value == null) {
                 out?.nullValue()
             } else {
                 val formatter = SimpleDateFormat(WRITE_DATA_FORMAT, Locale.getDefault())
                 out?.value(formatter.format(value))
             }
         }
     }
 
     override fun read(`in`: JsonReader?): DateTime? = `in`?.let { reader ->
         LoggingExceptionHandler.runCatching(defaultValue = null) {
             if (reader.peek() === JsonToken.NULL) {
                 reader.nextNull()
                 return@runCatching null
             }
 
             reader.nextString()?.let { dateString ->
                 ISO8601Utils.parse(dateString, ParsePosition(0))?.time?.let(::DateTime)
             }
         }
     }
 }