GildedRose-Refactoring-Kata/Kotlin
2024-06-15 13:55:33 +02:00
..
gradle/wrapper Upgrade build to: Kotlin 1.9.10, Gradle 8.x, JUnit 5.10.0 2023-10-10 21:33:32 +02:00
src Add jacoco dependency, convert TexttestFixtures to tests. Update README with results and next steps. 2024-06-15 13:55:33 +02:00
.gitignore Use gradle to build kotlin files 2018-01-31 10:52:53 +01:00
build.gradle.kts Add jacoco dependency, convert TexttestFixtures to tests. Update README with results and next steps. 2024-06-15 13:55:33 +02:00
gradlew Upgrade build to: Kotlin 1.9.10, Gradle 8.x, JUnit 5.10.0 2023-10-10 21:33:32 +02:00
gradlew.bat Upgrade build to: Kotlin 1.9.10, Gradle 8.x, JUnit 5.10.0 2023-10-10 21:33:32 +02:00
img.png Add jacoco dependency, convert TexttestFixtures to tests. Update README with results and next steps. 2024-06-15 13:55:33 +02:00
README.md Add jacoco dependency, convert TexttestFixtures to tests. Update README with results and next steps. 2024-06-15 13:55:33 +02:00
texttest_rig.py Fixed texttests for Kotlin 2023-11-03 16:11:26 +01:00

Gilded Rose starting position in Kotlin

Run the Text Fixture from Command-Line

./gradlew -q text

Specify Number of Days

For e.g. 10 days:

./gradlew run --args 10

You should make sure the gradle commands shown above work when you execute them in a terminal before trying to use TextTest (see below).

Run the TextTest approval test that comes with this project

There are instructions in the TextTest Readme for setting up TextTest. What's unusual for the Java version is there are two executables listed in config.gr for Java. One uses Gradle wrapped in a python script, the other relies on your CLASSPATH being set correctly in environment.gr.

Project info

  1. Code is highly unreadable and impossible to extend
  2. Algorithm and test cases are unknown, I do not trust that TexttestFixtures covers all paths so I want to validate it with jacoco
  3. Codebase is just 60 LOC and edge-values seems to be small values

Plan of action

  1. Generate all test cases / convert TexttestFixtures to tests
  2. Break complex statements, make code longer and simpler
  3. understand algorithm and propose better solution

Execution

TexttestFixtures indeed do not cover all paths, based on jacoco coverage: img.png

There are two ways to advance:

  1. manually craft extra test cases
  2. auto generate a bunch of test cases

I prefer to go with (2) because it seems to me to be more resilient way. I need to check if execution time is not bloated. Also minimize number of test cases.