mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-10 04:01:19 +00:00
commit
d78d1ea7a2
@ -1,58 +1,68 @@
|
|||||||
package com.gildedrose
|
package com.gildedrose
|
||||||
|
|
||||||
|
import com.gildedrose.data.model.Item
|
||||||
|
|
||||||
class GildedRose(var items: List<Item>) {
|
class GildedRose(var items: List<Item>) {
|
||||||
|
|
||||||
fun updateQuality() {
|
fun updateQuality() {
|
||||||
for (i in items.indices) {
|
for (i in items.indices) {
|
||||||
if (items[i].name != "Aged Brie" && items[i].name != "Backstage passes to a TAFKAL80ETC concert") {
|
if (
|
||||||
if (items[i].quality > 0) {
|
items[i].name != "Aged Brie" &&
|
||||||
if (items[i].name != "Sulfuras, Hand of Ragnaros") {
|
items[i].name != "Backstage passes to a TAFKAL80ETC concert" &&
|
||||||
items[i].quality = items[i].quality - 1
|
items[i].name != "Sulfuras, Hand of Ragnaros"
|
||||||
}
|
) {
|
||||||
}
|
downGradeQuality(i)
|
||||||
} else {
|
} else {
|
||||||
if (items[i].quality < 50) {
|
upgradeQuality(i)
|
||||||
items[i].quality = items[i].quality + 1
|
|
||||||
|
|
||||||
if (items[i].name == "Backstage passes to a TAFKAL80ETC concert") {
|
if (items[i].name == "Backstage passes to a TAFKAL80ETC concert") {
|
||||||
if (items[i].sellIn < 11) {
|
when {
|
||||||
if (items[i].quality < 50) {
|
items[i].sellIn < 6 -> {
|
||||||
items[i].quality = items[i].quality + 1
|
upgradeQuality(i)
|
||||||
}
|
upgradeQuality(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (items[i].sellIn < 6) {
|
items[i].sellIn < 11 -> {
|
||||||
if (items[i].quality < 50) {
|
upgradeQuality(i)
|
||||||
items[i].quality = items[i].quality + 1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (items[i].name != "Sulfuras, Hand of Ragnaros") {
|
sellItem(i)
|
||||||
items[i].sellIn = items[i].sellIn - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if (items[i].sellIn < 0) {
|
if (items[i].sellIn < 0) {
|
||||||
if (items[i].name != "Aged Brie") {
|
when (items[i].name) {
|
||||||
if (items[i].name != "Backstage passes to a TAFKAL80ETC concert") {
|
"Aged Brie" -> {
|
||||||
if (items[i].quality > 0) {
|
upgradeQuality(i)
|
||||||
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
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (items[i].quality < 50) {
|
"Backstage passes to a TAFKAL80ETC concert" -> {
|
||||||
items[i].quality = items[i].quality + 1
|
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
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,24 +1,14 @@
|
|||||||
package com.gildedrose
|
package com.gildedrose
|
||||||
|
|
||||||
|
import com.gildedrose.data.constants.ItemRepository
|
||||||
|
|
||||||
|
|
||||||
//asd
|
//asd
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
|
|
||||||
println("OMGHAI!")
|
println("OMGHAI!")
|
||||||
|
|
||||||
val items = listOf(
|
val app = GildedRose(ItemRepository.items)
|
||||||
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)
|
|
||||||
|
|
||||||
var days = 2
|
var days = 2
|
||||||
if (args.size > 0) {
|
if (args.size > 0) {
|
||||||
@ -28,8 +18,8 @@ fun main(args: Array<String>) {
|
|||||||
for (i in 0..days - 1) {
|
for (i in 0..days - 1) {
|
||||||
println("-------- day $i --------")
|
println("-------- day $i --------")
|
||||||
println("name, sellIn, quality")
|
println("name, sellIn, quality")
|
||||||
for (item in items) {
|
for (item in app.items) {
|
||||||
println(item)
|
println("${item.name}, ${item.sellIn}, ${item.quality}")
|
||||||
}
|
}
|
||||||
println()
|
println()
|
||||||
app.updateQuality()
|
app.updateQuality()
|
||||||
|
|||||||
@ -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)
|
||||||
|
)
|
||||||
|
}
|
||||||
3
Kotlin/src/main/kotlin/com/gildedrose/data/model/Item.kt
Normal file
3
Kotlin/src/main/kotlin/com/gildedrose/data/model/Item.kt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
package com.gildedrose.data.model
|
||||||
|
|
||||||
|
data class Item(var name: String, var sellIn: Int, var quality: Int)
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package com.gildedrose
|
package com.gildedrose
|
||||||
|
|
||||||
|
import com.gildedrose.data.model.Item
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user