# language: de @optional-kotlin Funktionalität: Kotlin-JVM-Methoden ohne falsche Quelltextzusammenfassung auswerten Als Kotlin-Nutzer möchte ich erkennen, welche tatsächlich erzeugten JVM-Methoden mit der dokumentierten Compiler- und PIT-Kombination ausgewertet werden können. Die IDs der Spezifikation, MC-032 und MC-033, sind schon vergeben; daher MC-KT (ADR 0009). @MC-KT-001 Szenario: Gewöhnliche Kotlin-Methoden mit Verzweigungen auswerten … damit Kotlin-Code dieselbe Auswertung bekommt wie Java-Code. Angenommen ein Kotlin-Projekt mit einer Methode mit when und zwei Überladungen von total Wenn PIT mit werkcrappit läuft Dann hat jede dieser Methoden einen Mutation-CRAP-Wert Und die beiden Überladungen werden getrennt bewertet @MC-KT-002 Szenario: Ein Lambda ist eine eigene Methode … damit Methoden nicht wegen gemeinsamer Quelltextzeilen vereinigt werden. Angenommen eine Funktion byDistance gibt ein Lambda mit Verzweigungen zurück Wenn PIT mit werkcrappit läuft Dann hat das Lambda einen eigenen Wert mit seiner eigenen Komplexität Und byDistance zählt nur seinen eigenen Code @MC-KT-003 Szenario: Vom Compiler erzeugte Methoden tragen einen Grund statt eines Werts … damit kein erfundener Wert entsteht. Angenommen eine Data Class mit einem Vergleich und eine Funktion mit Default-Argument Wenn PIT mit werkcrappit läuft Dann sind equals, die Bridge-Methode und copy$default mit dem Filter von JaCoCo als Grund ausgeschlossen Und die Hilfsmethode für das Default-Argument hat keinen Wert, weil PIT sie nicht mutiert @MC-KT-004 Szenario: Der Rumpf einer Inline-Funktion bleibt ohne Abdeckung … damit man ihren Wert nicht als Aussage über ihre Tests liest. Angenommen eine Inline-Funktion guarded, die nur über guardedPositive aufgerufen wird Wenn PIT mit werkcrappit läuft Dann sind alle Mutanten von guarded selbst ohne Abdeckung Und guardedPositive hat einen eigenen Wert @MC-KT-005 Szenario: Die Zustandsmaschine einer Suspend-Funktion senkt ihren Mutation Score … damit man den höheren Wert einer Suspend-Funktion richtig einordnet. Angenommen eine Suspend-Funktion afterPause mit einem Unterbrechungspunkt Wenn PIT mit werkcrappit läuft Dann hat afterPause die Komplexität ihrer eigenen Verzweigung Und einige Mutanten der Zustandsmaschine bleiben ohne Abdeckung