From 3e9f048fb1e1918f9406afc94e927ea77d30ecbb Mon Sep 17 00:00:00 2001 From: iryabov Date: Mon, 27 Apr 2026 17:18:32 +0200 Subject: [PATCH] feat: rename probes to stringProbes and update serialization methods --- .../drill/agent/test2code/common/api/Model.kt | 4 +-- .../test2code/common/api/ProbesContainer.kt | 27 +++++++++---------- .../test2code/coverage/CoverageSender.kt | 2 +- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/lib-jvm-shared/test2code-common/src/commonMain/kotlin/com/epam/drill/agent/test2code/common/api/Model.kt b/lib-jvm-shared/test2code-common/src/commonMain/kotlin/com/epam/drill/agent/test2code/common/api/Model.kt index da1ecf2b..d52d18a2 100644 --- a/lib-jvm-shared/test2code-common/src/commonMain/kotlin/com/epam/drill/agent/test2code/common/api/Model.kt +++ b/lib-jvm-shared/test2code-common/src/commonMain/kotlin/com/epam/drill/agent/test2code/common/api/Model.kt @@ -47,7 +47,7 @@ data class MethodCoverage( val testId: String?, val testSessionId: String?, @Serializable(with = BitSetSerializer::class) - var probes: Probes, + var stringProbes: Probes, ){ // Generated by IDEA, all fields included override fun equals(other: Any?): Boolean { @@ -57,7 +57,7 @@ data class MethodCoverage( other as MethodCoverage if (signature != other.signature) return false - if (probes != other.probes) return false + if (stringProbes != other.stringProbes) return false if (testId != other.testId) return false if (testSessionId != other.testSessionId) return false diff --git a/lib-jvm-shared/test2code-common/src/commonMain/kotlin/com/epam/drill/agent/test2code/common/api/ProbesContainer.kt b/lib-jvm-shared/test2code-common/src/commonMain/kotlin/com/epam/drill/agent/test2code/common/api/ProbesContainer.kt index 0f4fdf50..b445971c 100644 --- a/lib-jvm-shared/test2code-common/src/commonMain/kotlin/com/epam/drill/agent/test2code/common/api/ProbesContainer.kt +++ b/lib-jvm-shared/test2code-common/src/commonMain/kotlin/com/epam/drill/agent/test2code/common/api/ProbesContainer.kt @@ -16,7 +16,6 @@ package com.epam.drill.agent.test2code.common.api import kotlinx.serialization.KSerializer -import kotlinx.serialization.builtins.BooleanArraySerializer import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.buildClassSerialDescriptor import kotlinx.serialization.encoding.Decoder @@ -31,12 +30,12 @@ expect class Probes(size: Int) { object BitSetSerializer : KSerializer { override fun serialize(encoder: Encoder, value: Probes) { - encoder.encodeSerializableValue(BooleanArraySerializer(), value.toBooleanArray()) + encoder.encodeString(value.toBitString()) } override fun deserialize(decoder: Decoder): Probes { - val decodeSerializableValue = decoder.decodeSerializableValue(BooleanArraySerializer()) - return decodeSerializableValue.toBitSet() + val bitString = decoder.decodeString() + return bitString.toBitSet() } override val descriptor: SerialDescriptor @@ -78,8 +77,12 @@ fun Probes.toBooleanArray(): BooleanArray { } } -fun Probes.toList(): List { - return toBooleanArray().toList() +fun Probes.toBitString(): String { + val result = StringBuilder() + for (i in 0 until length() - 1) { // -1 drops end-of-original-array-indicator bit + result.append(if (get(i)) '1' else '0') + } + return result.toString() } fun BooleanArray.toBitSet(): Probes { @@ -92,16 +95,12 @@ fun BooleanArray.toBitSet(): Probes { } } -fun List.toBitSet(): Probes { - val finalSize = size + 1 +fun String.toBitSet(): Probes { + val finalSize = length + 1 return Probes(finalSize).apply { forEachIndexed { index, b -> - set(index, b) + set(index, b != '0') } - set(size, true) // set end-of-original-array-indicator bit (see explanation above) + set(length, true) // set end-of-original-array-indicator bit (see explanation above) } } - -fun probesOf(vararg elements: Boolean): Probes { - return elements.toBitSet() -} diff --git a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt index 8fec6feb..3107aa3c 100644 --- a/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt +++ b/test2code/src/main/kotlin/com/epam/drill/agent/test2code/coverage/CoverageSender.kt @@ -91,7 +91,7 @@ class IntervalCoverageSender( bodyChecksum = metadata.bodyChecksum, testId = it.testId, testSessionId = it.sessionId, - probes = methodProbes + stringProbes = methodProbes ) } ?.asSequence()