Coverage Summary for Class: NewClickTrackNameSuggester (com.vsevolodganin.clicktrack.common)

Class Class, % Method, % Branch, % Line, % Instruction, %
NewClickTrackNameSuggester 0% (0/1) 0% (0/4) 0% (0/8) 0% (0/10) 0% (0/61)


 package com.vsevolodganin.clicktrack.common
 
 import com.vsevolodganin.clicktrack.storage.ClickTrackRepository
 import me.tatarka.inject.annotations.Inject
 
 @Inject
 class NewClickTrackNameSuggester(
     private val storage: ClickTrackRepository,
 ) {
     fun suggest(baseName: String): String {
         val maxUsedDefaultNameNumber = storage.getAllNames()
             .asSequence()
             .mapNotNull { findDefaultNameNumber(baseName, it) }
             .maxOrNull()
             ?: 0
         return format(baseName, maxUsedDefaultNameNumber + 1)
     }
 
     private fun findDefaultNameNumber(baseName: String, input: String): Int? {
         return "$baseName (\\d*)?".toRegex().find(input)?.groupValues?.get(1)?.toIntOrNull()
     }
 
     private fun format(baseName: String, withNumber: Int) = "$baseName $withNumber"
 }