Coverage Summary for Class: TrainingEditState (com.vsevolodganin.clicktrack.training)
Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
TrainingEditState |
0%
(0/3)
|
0%
(0/5)
|
0%
(0/19)
|
8.1%
(8/99)
|
TrainingEditState$Ending |
|
TrainingEditState$Ending$ByTempo |
0%
(0/2)
|
|
0%
(0/2)
|
0%
(0/8)
|
TrainingEditState$Ending$ByTime |
0%
(0/2)
|
|
0%
(0/2)
|
0%
(0/8)
|
TrainingEditState$Error |
0%
(0/1)
|
|
0%
(0/3)
|
0%
(0/24)
|
TrainingEditState$TrainingMode |
0%
(0/1)
|
|
0%
(0/2)
|
0%
(0/18)
|
TrainingEditState$WhenMappings |
|
Total |
0%
(0/9)
|
0%
(0/5)
|
0%
(0/28)
|
5.1%
(8/157)
|
package com.vsevolodganin.clicktrack.training
import com.vsevolodganin.clicktrack.model.CueDuration
import kotlin.time.Duration
data class TrainingEditState(
val startingTempo: Int,
val mode: TrainingMode,
val activeSegmentLengthType: CueDuration.Type,
val segmentLengthBeats: CueDuration.Beats,
val segmentLengthMeasures: CueDuration.Measures,
val segmentLengthTime: CueDuration.Time,
val tempoChange: Int,
val activeEndingKind: TrainingEndingKind,
val endingByTempo: Ending.ByTempo,
val endingByTime: Ending.ByTime,
val errors: Set<Error>,
) {
sealed interface Ending {
val kind: TrainingEndingKind
class ByTempo(val endingTempo: Int) : Ending {
override val kind: TrainingEndingKind
get() = TrainingEndingKind.BY_TEMPO
}
class ByTime(val duration: Duration) : Ending {
override val kind: TrainingEndingKind
get() = TrainingEndingKind.BY_TIME
}
}
enum class TrainingMode {
INCREASE_TEMPO,
DECREASE_TEMPO,
}
enum class Error {
STARTING_TEMPO,
TEMPO_CHANGE,
ENDING_TEMPO,
}
val segmentLength: CueDuration
get() = when (activeSegmentLengthType) {
CueDuration.Type.BEATS -> segmentLengthBeats
CueDuration.Type.MEASURES -> segmentLengthMeasures
CueDuration.Type.TIME -> segmentLengthTime
}
val ending: Ending
get() = when (activeEndingKind) {
TrainingEndingKind.BY_TIME -> endingByTime
TrainingEndingKind.BY_TEMPO -> endingByTempo
}
}