diff --git a/Kotlin/build.gradle.kts b/Kotlin/build.gradle.kts index 8cac6e52..90c44069 100644 --- a/Kotlin/build.gradle.kts +++ b/Kotlin/build.gradle.kts @@ -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 { diff --git a/Kotlin/gradle/wrapper/gradle-wrapper.properties b/Kotlin/gradle/wrapper/gradle-wrapper.properties index 37f853b1..ff23a68d 100644 --- a/Kotlin/gradle/wrapper/gradle-wrapper.properties +++ b/Kotlin/gradle/wrapper/gradle-wrapper.properties @@ -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 diff --git a/Kotlin/local.properties b/Kotlin/local.properties new file mode 100644 index 00000000..df17bb58 --- /dev/null +++ b/Kotlin/local.properties @@ -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 diff --git a/Kotlin/src/main/kotlin/com/gildedrose/GildedRose.kt b/Kotlin/src/main/kotlin/com/gildedrose/GildedRose.kt index 33f752fd..1f2c2fc2 100644 --- a/Kotlin/src/main/kotlin/com/gildedrose/GildedRose.kt +++ b/Kotlin/src/main/kotlin/com/gildedrose/GildedRose.kt @@ -2,6 +2,61 @@ package com.gildedrose class GildedRose(val items: List) { + 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) { } } - diff --git a/Kotlin/src/main/kotlin/com/gildedrose/TexttestFixture.kt b/Kotlin/src/main/kotlin/com/gildedrose/TexttestFixture.kt index 72f27b9e..2d4162b2 100644 --- a/Kotlin/src/main/kotlin/com/gildedrose/TexttestFixture.kt +++ b/Kotlin/src/main/kotlin/com/gildedrose/TexttestFixture.kt @@ -31,6 +31,6 @@ fun main(args: Array) { println(item) } println() - app.updateQuality() + app.updateQualityClara() } } diff --git a/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt b/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt index c5216d8a..55c9d6eb 100644 --- a/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt +++ b/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt @@ -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) + } + +*/ + + } - -