Why is Android Kover not covering my String when statements?

138 Views Asked by At

I would like to test my mapper class at 100%.

For that, I wrote a test that takes all possible values.

With the reports made by Kover, we can see that everything is green (except the first line).

I'm use kover_version = '0.6.1' with minimal settings

Here is the class to test :

object WeatherIconMapper {

    fun mapCodeToWeatherIcon(code: String?): Int = when (code) {
        "p1j", "p1bisj" -> R.drawable.ic_wicon_p1j_p1bisj
        "p1n", "p1bisn" -> R.drawable.ic_wicon_p1n_p1bisn
        "p2j", "p2bisj" -> R.drawable.ic_wicon_p2j_p2bisj
        "p2n", "p2bisn" -> R.drawable.ic_wicon_p2n_p2bisn
        "p3", "p3j", "p3n", "p3bis", "p3bisj", "p3bisn" -> R.drawable.ic_wicon_p3_p3bis
        "p4j", "p4bisj" -> R.drawable.ic_wicon_p4j
        "p4n", "p4bisn" -> R.drawable.ic_wicon_p4n
        "p5j", "p5bisj" -> R.drawable.ic_wicon_p5j_p5bisj
        "p5n", "p5bisn" -> R.drawable.ic_wicon_p5n_p5bisn
        "p6", "p6j", "p6n", "p6bis", "p6bisj", "p6bisn", "p6ter" -> R.drawable.ic_wicon_p6_p6bis
        "p7", "p7j", "p7n", "p7bis", "p7bisj", "p7bisn" -> R.drawable.ic_wicon_p7_p7bis
        "p8", "p8j", "p8n", "p8bis", "p8bisj", "p8bisn" -> R.drawable.ic_wicon_p8_p8bis
        "p9", "p9j", "p9n", "p9bis", "p9bisj", "p9bisn" -> R.drawable.ic_wicon_p9
        "p10j", "p10bisj" -> R.drawable.ic_wicon_p10j
        "p10n", "p10bisn" -> R.drawable.ic_wicon_p10n
        "p11", "p11j", "p11n", "p11bis", "p11bisj", "p11bisn" -> R.drawable.ic_wicon_p11
        "p12j", "p12bisj" -> R.drawable.ic_wicon_p12j
        "p12n", "p12bisn" -> R.drawable.ic_wicon_p12n
        "p13", "p13j", "p13n", "p13bis", "p13bisj", "p13bisn", "p13ter", "p13quater" -> R.drawable.ic_wicon_p13
        "p14", "p14j", "p14n", "p14bis", "p14bisj", "p14bisn", "p14ter", "p14quater" -> R.drawable.ic_wicon_p14
        "p15", "p15j", "p15n", "p15bis" -> R.drawable.ic_wicon_p15
        "p16", "p16j", "p16n", "p16bis", "p16bisj", "p16bisn" -> R.drawable.ic_wicon_p16
        "p17j", "p17bisj" -> R.drawable.ic_wicon_p17j
        "p17n", "p17bisn" -> R.drawable.ic_wicon_p17n
        "p18", "p18j", "p18n", "p18bis", "p18bisj", "p18bisn", "p18ter" -> R.drawable.ic_wicon_p18
        "p19j", "p19bisj" -> R.drawable.ic_wicon_p19j
        "p19n", "p19bisn" -> R.drawable.ic_wicon_p19n
        "p20", "p20j", "p20n", "p20bis", "p20bisj", "p20bisn", "p20ter" -> R.drawable.ic_wicon_p20
        "p21j", "p21bisj" -> R.drawable.ic_wicon_p21j
        "p21n", "p21bisn" -> R.drawable.ic_wicon_p21n
        "p22", "p22j", "p22n", "p22bis", "p22bisj", "p22bisn", "p22ter", "p22quater" -> R.drawable.ic_wicon_p22
        "p23", "p23j", "p23n", "p23bis", "p23bisj", "p23bisn" -> R.drawable.ic_wicon_p23
        "p24j", "p24bisj", "p24terj" -> R.drawable.ic_wicon_p24j
        "p24n", "p24bisn", "p24tern" -> R.drawable.ic_wicon_p24n
        "p25", "p25j", "p25n", "p25bis", "p25bisj", "p25bisn" -> R.drawable.ic_wicon_p25
        "p26j", "p26bisj" -> R.drawable.ic_wicon_p26j
        "p26n", "p26bisn" -> R.drawable.ic_wicon_p26n
        "p27", "p27j", "p27n", "p27bis", "p27bisj", "p27bisn" -> R.drawable.ic_wicon_p27
        "p28j", "p28bisj" -> R.drawable.ic_wicon_p28j
        "p28n", "p28bisn" -> R.drawable.ic_wicon_p28n
        "p29", "p29j", "p29n", "p29bis", "p29bisj", "p29bisn" -> R.drawable.ic_wicon_p29
        "p30j", "p30bisj" -> R.drawable.ic_wicon_p30j
        "p30n", "p30bisn" -> R.drawable.ic_wicon_p30n
        else -> R.drawable.ic_icone_weather_default
    }
}

And the associate test :

    class WeatherIconMapperTest {

    @Test
    fun `test getWeatherIcon mapper`() {
        // Given
        listOf(
            "p1j" to R.drawable.ic_wicon_p1j_p1bisj,
            "p1bisj" to R.drawable.ic_wicon_p1j_p1bisj,
            "p1n" to R.drawable.ic_wicon_p1n_p1bisn,
            "p1bisn" to R.drawable.ic_wicon_p1n_p1bisn,
            "p2j" to R.drawable.ic_wicon_p2j_p2bisj,
            "p2bisj" to R.drawable.ic_wicon_p2j_p2bisj,
            "p2n" to R.drawable.ic_wicon_p2n_p2bisn,
            "p2bisn" to R.drawable.ic_wicon_p2n_p2bisn,
            "p3" to R.drawable.ic_wicon_p3_p3bis,
            "p3j" to R.drawable.ic_wicon_p3_p3bis,
            "p3n" to R.drawable.ic_wicon_p3_p3bis,
            "p3bis" to R.drawable.ic_wicon_p3_p3bis,
            "p3bisj" to R.drawable.ic_wicon_p3_p3bis,
            "p3bisn" to R.drawable.ic_wicon_p3_p3bis,
            "p4j" to R.drawable.ic_wicon_p4j,
            "p4bisj" to R.drawable.ic_wicon_p4j,
            "p4n" to R.drawable.ic_wicon_p4n,
            "p4bisn" to R.drawable.ic_wicon_p4n,
            "p5j" to R.drawable.ic_wicon_p5j_p5bisj,
            "p5bisj" to R.drawable.ic_wicon_p5j_p5bisj,
            "p5n" to R.drawable.ic_wicon_p5n_p5bisn,
            "p5bisn" to R.drawable.ic_wicon_p5n_p5bisn,
            "p6" to R.drawable.ic_wicon_p6_p6bis,
            "p6j" to R.drawable.ic_wicon_p6_p6bis,
            "p6n" to R.drawable.ic_wicon_p6_p6bis,
            "p6bis" to R.drawable.ic_wicon_p6_p6bis,
            "p6bisj" to R.drawable.ic_wicon_p6_p6bis,
            "p6bisn" to R.drawable.ic_wicon_p6_p6bis,
            "p6ter" to R.drawable.ic_wicon_p6_p6bis,
            "p7" to R.drawable.ic_wicon_p7_p7bis,
            "p7j" to R.drawable.ic_wicon_p7_p7bis,
            "p7n" to R.drawable.ic_wicon_p7_p7bis,
            "p7bis" to R.drawable.ic_wicon_p7_p7bis,
            "p7bisj" to R.drawable.ic_wicon_p7_p7bis,
            "p7bisn" to R.drawable.ic_wicon_p7_p7bis,
            "p8" to R.drawable.ic_wicon_p8_p8bis,
            "p8j" to R.drawable.ic_wicon_p8_p8bis,
            "p8n" to R.drawable.ic_wicon_p8_p8bis,
            "p8bis" to R.drawable.ic_wicon_p8_p8bis,
            "p8bisj" to R.drawable.ic_wicon_p8_p8bis,
            "p8bisn" to R.drawable.ic_wicon_p8_p8bis,
            "p9" to R.drawable.ic_wicon_p9,
            "p9j" to R.drawable.ic_wicon_p9,
            "p9n" to R.drawable.ic_wicon_p9,
            "p9bis" to R.drawable.ic_wicon_p9,
            "p9bisj" to R.drawable.ic_wicon_p9,
            "p9bisn" to R.drawable.ic_wicon_p9,
            "p10j" to R.drawable.ic_wicon_p10j,
            "p10bisj" to R.drawable.ic_wicon_p10j,
            "p10n" to R.drawable.ic_wicon_p10n,
            "p10bisn" to R.drawable.ic_wicon_p10n,
            "p11" to R.drawable.ic_wicon_p11,
            "p11j" to R.drawable.ic_wicon_p11,
            "p11n" to R.drawable.ic_wicon_p11,
            "p11bis" to R.drawable.ic_wicon_p11,
            "p11bisj" to R.drawable.ic_wicon_p11,
            "p11bisn" to R.drawable.ic_wicon_p11,
            "p12j" to R.drawable.ic_wicon_p12j,
            "p12bisj" to R.drawable.ic_wicon_p12j,
            "p12n" to R.drawable.ic_wicon_p12n,
            "p12bisn" to R.drawable.ic_wicon_p12n,
            "p13" to R.drawable.ic_wicon_p13,
            "p13j" to R.drawable.ic_wicon_p13,
            "p13n" to R.drawable.ic_wicon_p13,
            "p13bis" to R.drawable.ic_wicon_p13,
            "p13bisj" to R.drawable.ic_wicon_p13,
            "p13bisn" to R.drawable.ic_wicon_p13,
            "p13ter" to R.drawable.ic_wicon_p13,
            "p13quater" to R.drawable.ic_wicon_p13,
            "p14" to R.drawable.ic_wicon_p14,
            "p14j" to R.drawable.ic_wicon_p14,
            "p14n" to R.drawable.ic_wicon_p14,
            "p14bis" to R.drawable.ic_wicon_p14,
            "p14bisj" to R.drawable.ic_wicon_p14,
            "p14bisn" to R.drawable.ic_wicon_p14,
            "p14ter" to R.drawable.ic_wicon_p14,
            "p14quater" to R.drawable.ic_wicon_p14,
            "p15" to R.drawable.ic_wicon_p15,
            "p15j" to R.drawable.ic_wicon_p15,
            "p15n" to R.drawable.ic_wicon_p15,
            "p15bis" to R.drawable.ic_wicon_p15,
            "p16" to R.drawable.ic_wicon_p16,
            "p16j" to R.drawable.ic_wicon_p16,
            "p16n" to R.drawable.ic_wicon_p16,
            "p16bis" to R.drawable.ic_wicon_p16,
            "p16bisj" to R.drawable.ic_wicon_p16,
            "p16bisn" to R.drawable.ic_wicon_p16,
            "p17j" to R.drawable.ic_wicon_p17j,
            "p17bisj" to R.drawable.ic_wicon_p17j,
            "p17n" to R.drawable.ic_wicon_p17n,
            "p17bisn" to R.drawable.ic_wicon_p17n,
            "p18" to R.drawable.ic_wicon_p18,
            "p18j" to R.drawable.ic_wicon_p18,
            "p18n" to R.drawable.ic_wicon_p18,
            "p18bis" to R.drawable.ic_wicon_p18,
            "p18bisj" to R.drawable.ic_wicon_p18,
            "p18bisn" to R.drawable.ic_wicon_p18,
            "p18ter" to R.drawable.ic_wicon_p18,
            "p19j" to R.drawable.ic_wicon_p19j,
            "p19bisj" to R.drawable.ic_wicon_p19j,
            "p19n" to R.drawable.ic_wicon_p19n,
            "p19bisn" to R.drawable.ic_wicon_p19n,
            "p20" to R.drawable.ic_wicon_p20,
            "p20j" to R.drawable.ic_wicon_p20,
            "p20n" to R.drawable.ic_wicon_p20,
            "p20bis" to R.drawable.ic_wicon_p20,
            "p20bisj" to R.drawable.ic_wicon_p20,
            "p20bisn" to R.drawable.ic_wicon_p20,
            "p20ter" to R.drawable.ic_wicon_p20,
            "p21j" to R.drawable.ic_wicon_p21j,
            "p21bisj" to R.drawable.ic_wicon_p21j,
            "p21n" to R.drawable.ic_wicon_p21n,
            "p21bisn" to R.drawable.ic_wicon_p21n,
            "p22" to R.drawable.ic_wicon_p22,
            "p22j" to R.drawable.ic_wicon_p22,
            "p22n" to R.drawable.ic_wicon_p22,
            "p22bis" to R.drawable.ic_wicon_p22,
            "p22bisj" to R.drawable.ic_wicon_p22,
            "p22bisn" to R.drawable.ic_wicon_p22,
            "p22ter" to R.drawable.ic_wicon_p22,
            "p22quater" to R.drawable.ic_wicon_p22,
            "p23" to R.drawable.ic_wicon_p23,
            "p23j" to R.drawable.ic_wicon_p23,
            "p23n" to R.drawable.ic_wicon_p23,
            "p23bis" to R.drawable.ic_wicon_p23,
            "p23bisj" to R.drawable.ic_wicon_p23,
            "p23bisn" to R.drawable.ic_wicon_p23,
            "p24j" to R.drawable.ic_wicon_p24j,
            "p24bisj" to R.drawable.ic_wicon_p24j,
            "p24terj" to R.drawable.ic_wicon_p24j,
            "p24n" to R.drawable.ic_wicon_p24n,
            "p24bisn" to R.drawable.ic_wicon_p24n,
            "p24tern" to R.drawable.ic_wicon_p24n,
            "p25" to R.drawable.ic_wicon_p25,
            "p25j" to R.drawable.ic_wicon_p25,
            "p25n" to R.drawable.ic_wicon_p25,
            "p25bis" to R.drawable.ic_wicon_p25,
            "p25bisj" to R.drawable.ic_wicon_p25,
            "p25bisn" to R.drawable.ic_wicon_p25,
            "p26j" to R.drawable.ic_wicon_p26j,
            "p26bisj" to R.drawable.ic_wicon_p26j,
            "p26n" to R.drawable.ic_wicon_p26n,
            "p26bisn" to R.drawable.ic_wicon_p26n,
            "p27" to R.drawable.ic_wicon_p27,
            "p27j" to R.drawable.ic_wicon_p27,
            "p27n" to R.drawable.ic_wicon_p27,
            "p27bis" to R.drawable.ic_wicon_p27,
            "p27bisj" to R.drawable.ic_wicon_p27,
            "p27bisn" to R.drawable.ic_wicon_p27,
            "p28j" to R.drawable.ic_wicon_p28j,
            "p28bisj" to R.drawable.ic_wicon_p28j,
            "p28n" to R.drawable.ic_wicon_p28n,
            "p28bisn" to R.drawable.ic_wicon_p28n,
            "p29" to R.drawable.ic_wicon_p29,
            "p29j" to R.drawable.ic_wicon_p29,
            "p29n" to R.drawable.ic_wicon_p29,
            "p29bis" to R.drawable.ic_wicon_p29,
            "p29bisj" to R.drawable.ic_wicon_p29,
            "p29bisn" to R.drawable.ic_wicon_p29,
            "p30j" to R.drawable.ic_wicon_p30j,
            "p30bisj" to R.drawable.ic_wicon_p30j,
            "p30n" to R.drawable.ic_wicon_p30n,
            "p30bisn" to R.drawable.ic_wicon_p30n,
            "fjdfsf" to R.drawable.ic_icone_weather_default,
            null to R.drawable.ic_icone_weather_default
        ).forEach { (icon, expected) ->
            // When
            val result = WeatherIconMapper.mapCodeToWeatherIcon(icon)

            // Then
            assertEquals("Testing icon=$icon", expected, result)
        }
    }
}

Kover coverage report :

enter image description here

...

enter image description here

enter image description here

enter image description here

Why the conditions coverage is not 100 % ?

Edit:

I just noticed that before switching to Kover, the code was 100% tested with Jacoco :

enter image description here

0

There are 0 best solutions below