Coverage Summary for Class: ProtoBytesValue (com.ghost.protobuf.wkt)

Class Class, % Method, % Branch, % Line, % Instruction, %
ProtoBytesValue 100% (1/1) 100% (1/1) 100% (1/1) 100% (11/11)


 @file:OptIn(InternalGhostApi::class)
 
 package com.ghost.protobuf.wkt
 
 import com.ghost.serialization.InternalGhostApi
 import com.ghost.serialization.contract.GhostSerializer
 import com.ghost.serialization.parser.GhostJsonFlatReader
 import com.ghost.serialization.parser.GhostProtoJsonFlatReader
 import com.ghost.serialization.parser.GhostJsonReader
 import com.ghost.serialization.parser.GhostJsonStringReader
 import com.ghost.serialization.parser.decodeBase64String
 import com.ghost.serialization.parser.encodeBase64String
 import com.ghost.serialization.parser.nextString
 import com.ghost.serialization.writer.GhostJsonFlatWriter
 import com.ghost.serialization.writer.GhostJsonStringWriter
 import com.ghost.serialization.writer.GhostJsonWriter
 import com.ghost.serialization.parser.GhostJsonConstants as C
 import kotlin.jvm.JvmInline
 
 /**
  * Wrapper message for `bytes`.
  *
  * The JSON representation for `BytesValue` is JSON string.
  */
 @JvmInline value class ProtoBytesValue(val value: ByteArray)
 
 /**
  * Serializer for [ProtoBytesValue].
  */
 object ProtoBytesValueSerializer : GhostSerializer<ProtoBytesValue> {
     override val typeName: String get() = C.WKT_BYTES_VALUE_TYPE
     override fun serialize(writer: GhostJsonWriter, value: ProtoBytesValue) {
         writer.value(encodeBase64String(value.value))
     }
     override fun serialize(writer: GhostJsonFlatWriter, value: ProtoBytesValue) {
         writer.value(encodeBase64String(value.value))
     }
     override fun serialize(writer: GhostJsonStringWriter, value: ProtoBytesValue) {
         writer.value(encodeBase64String(value.value))
     }
     // Reader-agnostic: works on any reader flavor via nextString() + shared decoder, rather
     // than requiring the pooled-scratch-buffer fast path on GhostProtoJsonFlatReader
     // specifically.
     override fun deserialize(reader: GhostJsonReader): ProtoBytesValue =
         ProtoBytesValue(decodeBase64String(reader.nextString()))
     override fun deserialize(reader: GhostJsonFlatReader): ProtoBytesValue {
         if (reader is GhostProtoJsonFlatReader) {
             return ProtoBytesValue(reader.nextProtoBytes())
         }
         return ProtoBytesValue(decodeBase64String(reader.nextString()))
     }
 }