refactored + tests

This commit is contained in:
Clara BG 2025-07-03 15:39:26 +01:00
parent 58a991fe27
commit 7769b15a88
6 changed files with 199 additions and 11 deletions

View File

@ -12,14 +12,14 @@ repositories {
java {
toolchain {
languageVersion = JavaLanguageVersion.of(8)
languageVersion = JavaLanguageVersion.of(21)
}
}
dependencies {
implementation(kotlin("stdlib"))
testImplementation(kotlin("test"))
testImplementation("org.junit.jupiter:junit-jupiter:5.12.2")
testImplementation("org.junit.jupiter:junit-jupiter:3.8.0")
}
tasks.test {

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

8
Kotlin/local.properties Normal file
View File

@ -0,0 +1,8 @@
## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Thu Jul 03 13:43:21 BST 2025
sdk.dir=/Users/clabol/Library/Android/sdk

View File

@ -2,6 +2,61 @@ package com.gildedrose
class GildedRose(val items: List<Item>) {
fun updateQualityClara() {
for (i in items.indices) {
items[i].sellIn -= 1
if (items[i].name == "Sulfuras, Hand of Ragnaros") { //might not be necessary
items[i].quality = items[i].quality
}
if (items[i].name == "Aged Brie") {
items[i].quality += 1
}
if (items[i].name == "Backstage passes to a TAFKAL80ETC concert" && items[i].sellIn < 0) {
if (items[i].sellIn < 0) {
items[i].quality = 0
} else if (items[i].sellIn in 6..10) {
items[i].quality += 2
} else if (items[i].sellIn in 0..5) {
items[i].quality += 3
} else {
items[i].quality += 1
}
}
if (items[i].name == "+5 Dexterity Vest" || items[i].name == "Elixir og the Mongoose") {
if (items[i].sellIn < 0) {
items[i].quality -= 2
} else {
items[i].quality -= 1
}
}
if (items[i].name == "Conjured Mana Cake" || items[i].name == "Elixir og the Mongoose") {
if (items[i].sellIn < 0) {
items[i].quality -= 4
} else {
items[i].quality -= 2
}
}
if (items[i].quality >= 50 && items[i].name != "Sulfuras, Hand of Ragnaros") {
items[i].quality = 50
}
}
}
fun updateQuality() {
for (i in items.indices) {
if (items[i].name != "Aged Brie" && items[i].name != "Backstage passes to a TAFKAL80ETC concert") {
@ -55,4 +110,3 @@ class GildedRose(val items: List<Item>) {
}
}

View File

@ -31,6 +31,6 @@ fun main(args: Array<String>) {
println(item)
}
println()
app.updateQuality()
app.updateQualityClara()
}
}

View File

@ -6,14 +6,140 @@ import org.junit.jupiter.api.Test
internal class GildedRoseTest {
@Test
fun foo() {
val items = listOf(Item("foo", 0, 0))
fun dexterityVest() {
val items = listOf(Item("+5 Dexterity Vest", 10, 20))
val app = GildedRose(items)
app.updateQuality()
assertEquals("fixme", app.items[0].name)
assertEquals("+5 Dexterity Vest", app.items[0].name)
assertEquals(9, app.items[0].sellIn)
assertEquals(19, app.items[0].quality)
}
@Test
fun agedBrie() {
val items = listOf(Item("Aged Brie", 2, 0))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Aged Brie", app.items[0].name)
assertEquals(1, app.items[0].sellIn)
assertEquals(1, app.items[0].quality)
}
@Test
fun elixirOfTheMongoose() {
val items = listOf(Item("Elixir of the Mongoose", 5, 7))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Elixir of the Mongoose", app.items[0].name)
assertEquals(4, app.items[0].sellIn)
assertEquals(6, app.items[0].quality)
}
@Test
fun elixirOfTheMongooseAt0() {
val items = listOf(Item("Elixir of the Mongoose", 0, 7))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Elixir of the Mongoose", app.items[0].name)
assertEquals(-1, app.items[0].sellIn)
assertEquals(5, app.items[0].quality)
}
@Test
fun sulfuras0() {
val items = listOf(Item("Sulfuras, Hand of Ragnaros", 0, 80))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].name)
assertEquals(0, app.items[0].sellIn)
assertEquals(80, app.items[0].quality)
}
@Test
fun sulfurasMinus1() {
val items = listOf(Item("Sulfuras, Hand of Ragnaros", -1, 80))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].name)
assertEquals(-1, app.items[0].sellIn)
assertEquals(80, app.items[0].quality)
}
@Test
fun backstagePassesMoreThan10() {
val items = listOf(Item("Backstage passes to a TAFKAL80ETC concert", 15, 20))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Backstage passes to a TAFKAL80ETC concert", app.items[0].name)
assertEquals(14, app.items[0].sellIn)
assertEquals(21, app.items[0].quality)
}
@Test
fun backstagePassesReached50at10() {
val items = listOf(Item("Backstage passes to a TAFKAL80ETC concert", 10, 49))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Backstage passes to a TAFKAL80ETC concert", app.items[0].name)
assertEquals(9, app.items[0].sellIn)
assertEquals(50, app.items[0].quality)
}
@Test
fun backstagePassesReached50at5() {
val items = listOf(Item("Backstage passes to a TAFKAL80ETC concert", 5, 49))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Backstage passes to a TAFKAL80ETC concert", app.items[0].name)
assertEquals(4, app.items[0].sellIn)
assertEquals(50, app.items[0].quality)
}
@Test
fun backstagePassesAt10() {
val items = listOf(Item("Backstage passes to a TAFKAL80ETC concert", 10, 30))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Backstage passes to a TAFKAL80ETC concert", app.items[0].name)
assertEquals(9, app.items[0].sellIn)
assertEquals(32, app.items[0].quality)
}
@Test
fun backstagePassesAt5() {
val items = listOf(Item("Backstage passes to a TAFKAL80ETC concert", 5, 30))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Backstage passes to a TAFKAL80ETC concert", app.items[0].name)
assertEquals(4, app.items[0].sellIn)
assertEquals(33, app.items[0].quality)
}
@Test
fun backstagePassesAt0() {
val items = listOf(Item("Backstage passes to a TAFKAL80ETC concert", 0, 30))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Backstage passes to a TAFKAL80ETC concert", app.items[0].name)
assertEquals(-1, app.items[0].sellIn)
assertEquals(0, app.items[0].quality)
}
/*
@Test
fun conjuredBasic() {
val items = listOf(Item("Conjured Mana Cake", 3, 6))
val app = GildedRose(items)
app.updateQuality()
assertEquals("Conjured Mana Cake", app.items[0].name)
assertEquals(2, app.items[0].sellIn)
assertEquals(4, app.items[0].quality)
}
*/
}