diff --git a/Kotlin/src/main/kotlin/com/gildedrose/GildedRose.kt b/Kotlin/src/main/kotlin/com/gildedrose/GildedRose.kt index 7ede7cee..b74cfd03 100644 --- a/Kotlin/src/main/kotlin/com/gildedrose/GildedRose.kt +++ b/Kotlin/src/main/kotlin/com/gildedrose/GildedRose.kt @@ -1,58 +1,68 @@ package com.gildedrose +import com.gildedrose.data.model.Item + class GildedRose(var items: List) { fun updateQuality() { for (i in items.indices) { - if (items[i].name != "Aged Brie" && items[i].name != "Backstage passes to a TAFKAL80ETC concert") { - if (items[i].quality > 0) { - if (items[i].name != "Sulfuras, Hand of Ragnaros") { - items[i].quality = items[i].quality - 1 - } - } + if ( + items[i].name != "Aged Brie" && + items[i].name != "Backstage passes to a TAFKAL80ETC concert" && + items[i].name != "Sulfuras, Hand of Ragnaros" + ) { + downGradeQuality(i) } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1 + upgradeQuality(i) - if (items[i].name == "Backstage passes to a TAFKAL80ETC concert") { - if (items[i].sellIn < 11) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1 - } + if (items[i].name == "Backstage passes to a TAFKAL80ETC concert") { + when { + items[i].sellIn < 6 -> { + upgradeQuality(i) + upgradeQuality(i) } - if (items[i].sellIn < 6) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1 - } + items[i].sellIn < 11 -> { + upgradeQuality(i) } } } } - if (items[i].name != "Sulfuras, Hand of Ragnaros") { - items[i].sellIn = items[i].sellIn - 1 - } + sellItem(i) if (items[i].sellIn < 0) { - if (items[i].name != "Aged Brie") { - if (items[i].name != "Backstage passes to a TAFKAL80ETC concert") { - if (items[i].quality > 0) { - if (items[i].name != "Sulfuras, Hand of Ragnaros") { - items[i].quality = items[i].quality - 1 - } - } - } else { - items[i].quality = items[i].quality - items[i].quality + when (items[i].name) { + "Aged Brie" -> { + upgradeQuality(i) } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1 + + "Backstage passes to a TAFKAL80ETC concert" -> { + items[i].quality -= items[i].quality + } + + else -> { + if (items[i].name != "Sulfuras, Hand of Ragnaros") { + downGradeQuality(i) + } } } } } } + private fun sellItem(i: Int) { + if (items[i].name != "Sulfuras, Hand of Ragnaros") items[i].sellIn -= 1 + } + + private fun downGradeQuality(i: Int) { + if (items[i].quality > 0) items[i].quality -= 1 + } + + private fun upgradeQuality(i: Int) { + if (items[i].quality < 50) items[i].quality += 1 + + } } + diff --git a/Kotlin/src/main/kotlin/com/gildedrose/Item.kt b/Kotlin/src/main/kotlin/com/gildedrose/Item.kt deleted file mode 100644 index 1a99ec73..00000000 --- a/Kotlin/src/main/kotlin/com/gildedrose/Item.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.gildedrose - -//Check git works -open class Item(var name: String, var sellIn: Int, var quality: Int) { - override fun toString(): String { - return this.name + ", " + this.sellIn + ", " + this.quality - } -} \ No newline at end of file diff --git a/Kotlin/src/main/kotlin/com/gildedrose/TexttestFixture.kt b/Kotlin/src/main/kotlin/com/gildedrose/TexttestFixture.kt index c58b48eb..2dacca6c 100644 --- a/Kotlin/src/main/kotlin/com/gildedrose/TexttestFixture.kt +++ b/Kotlin/src/main/kotlin/com/gildedrose/TexttestFixture.kt @@ -1,24 +1,14 @@ package com.gildedrose +import com.gildedrose.data.constants.ItemRepository + + //asd fun main(args: Array) { println("OMGHAI!") - val items = listOf( - Item("+5 Dexterity Vest", 10, 20), // - Item("Aged Brie", 2, 0), // - Item("Elixir of the Mongoose", 5, 7), // - Item("Sulfuras, Hand of Ragnaros", 0, 80), // - Item("Sulfuras, Hand of Ragnaros", -1, 80), - Item("Backstage passes to a TAFKAL80ETC concert", 15, 20), - Item("Backstage passes to a TAFKAL80ETC concert", 10, 49), - Item("Backstage passes to a TAFKAL80ETC concert", 5, 49), - // this conjured item does not work properly yet - Item("Conjured Mana Cake", 3, 6) - ) - - val app = GildedRose(items) + val app = GildedRose(ItemRepository.items) var days = 2 if (args.size > 0) { @@ -28,8 +18,8 @@ fun main(args: Array) { for (i in 0..days - 1) { println("-------- day $i --------") println("name, sellIn, quality") - for (item in items) { - println(item) + for (item in app.items) { + println("${item.name}, ${item.sellIn}, ${item.quality}") } println() app.updateQuality() diff --git a/Kotlin/src/main/kotlin/com/gildedrose/data/constants/ItemRepository.kt b/Kotlin/src/main/kotlin/com/gildedrose/data/constants/ItemRepository.kt new file mode 100644 index 00000000..55a18ba3 --- /dev/null +++ b/Kotlin/src/main/kotlin/com/gildedrose/data/constants/ItemRepository.kt @@ -0,0 +1,18 @@ +package com.gildedrose.data.constants + +import com.gildedrose.data.model.Item + +object ItemRepository { + val items = listOf( + Item("+5 Dexterity Vest", 10, 20), // + Item("Aged Brie", 2, 0), // + Item("Elixir of the Mongoose", 5, 7), // + Item("Sulfuras, Hand of Ragnaros", 0, 80), // + Item("Sulfuras, Hand of Ragnaros", -1, 80), + Item("Backstage passes to a TAFKAL80ETC concert", 15, 20), + Item("Backstage passes to a TAFKAL80ETC concert", 10, 49), + Item("Backstage passes to a TAFKAL80ETC concert", 5, 49), + // this conjured item does not work properly yet + Item("Conjured Mana Cake", 3, 6) + ) +} \ No newline at end of file diff --git a/Kotlin/src/main/kotlin/com/gildedrose/data/model/Item.kt b/Kotlin/src/main/kotlin/com/gildedrose/data/model/Item.kt new file mode 100644 index 00000000..1c84f5a3 --- /dev/null +++ b/Kotlin/src/main/kotlin/com/gildedrose/data/model/Item.kt @@ -0,0 +1,3 @@ +package com.gildedrose.data.model + +data class Item(var name: String, var sellIn: Int, var quality: Int) \ No newline at end of file diff --git a/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt b/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt index c5216d8a..0f9aacba 100644 --- a/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt +++ b/Kotlin/src/test/kotlin/com/gildedrose/GildedRoseTest.kt @@ -1,5 +1,6 @@ package com.gildedrose +import com.gildedrose.data.model.Item import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test