Coverage Summary for Class: PartialResolutionOutput (core.partial)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| PartialResolutionOutput |
100%
(1/1)
|
100%
(1/1)
|
|
100%
(4/4)
|
100%
(17/17)
|
package core.partial
import core.primitives.Outcome
import core.primitives.Quality
/**
* Adapter-free, deterministic normalization for PARTIAL resolution.
*
* Contract:
* - Only applies to Outcome.PARTIAL.
* - Uses integer math (floor) for stability/diff-friendliness.
* - No side effects.
*/
object PartialOutcomeResolver {
fun resolve(input: PartialResolutionInput): PartialResolutionOutput {
if (input.outcome != Outcome.PARTIAL) {
return PartialResolutionOutput(
outcome = input.outcome,
moneyValueCopper = input.normalMoneyValueCopper,
flags = emptySet()
)
}
val money = input.normalMoneyValueCopper / 2
return PartialResolutionOutput(
outcome = input.outcome,
moneyValueCopper = money,
flags = setOf(PartialResolutionFlag.PARTIAL_APPLIED)
)
}
}
/**
* Input to PARTIAL resolution normalization.
*/
data class PartialResolutionInput(
val outcome: Outcome,
val normalMoneyValueCopper: Int,
val trophiesCount: Int,
val trophiesQuality: TrophiesQuality,
val suspectedTheft: Boolean
)
/**
* Output of PARTIAL resolution normalization.
*/
data class PartialResolutionOutput(
val outcome: Outcome,
val moneyValueCopper: Int,
val flags: Set<PartialResolutionFlag>
)
enum class PartialResolutionFlag {
PARTIAL_APPLIED
}
/**
* Thin stable wrapper in the partial module over core [Quality] to keep future refactors localized.
*/
enum class TrophiesQuality {
OK,
DAMAGED;
fun toCoreQuality(): Quality = when (this) {
OK -> Quality.OK
DAMAGED -> Quality.DAMAGED
}
companion object {
fun fromCoreQuality(q: Quality): TrophiesQuality = when (q) {
Quality.OK -> OK
Quality.DAMAGED -> DAMAGED
Quality.NONE -> DAMAGED
}
}
}