GildedRose-Refactoring-Kata/go/gilded-rose.go
dreddick.home2@gmail.com 6a651a5f7a add min function
2020-11-05 16:41:13 +00:00

114 lines
1.9 KiB
Go

package main
type Item struct {
name string
sellIn, quality int
}
func min(x int, y int) int {
if x == y {
return x
}
if x < y {
return x
}
return y
}
func UpdateQualityBrie(item *Item) {
defer func() {
item.sellIn--
}()
if item.quality == 50 {
return
}
if item.sellIn > 0 {
item.quality++
}
if item.sellIn <= 0 {
item.quality = min(item.quality+2, 50)
}
}
func UpdateQualityBackstagePasses(item *Item) {
defer func() {
item.sellIn--
}()
if item.sellIn <= 0 {
item.quality = 0
}
if item.quality == 50 {
return
}
if item.quality == 49 && item.sellIn <= 0 {
item.quality = 50
}
if item.sellIn > 0 {
item.quality++
}
if item.sellIn <= 0 {
item.quality += 2
}
}
func UpdateQuality(items []*Item) {
for i := 0; i < len(items); i++ {
if items[i].name == "Sulfuras, Hand of Ragnaros" {
continue
}
if items[i].name == "Aged Brie" {
UpdateQualityBrie(items[i])
continue
}
if items[i].name != "Backstage passes to a TAFKAL80ETC concert" {
if items[i].quality > 0 {
items[i].quality = items[i].quality - 1
}
} else {
if items[i].quality < 50 {
items[i].quality = items[i].quality + 1
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].sellIn < 6 {
if items[i].quality < 50 {
items[i].quality = items[i].quality + 1
}
}
}
}
}
items[i].sellIn = items[i].sellIn - 1
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 {
items[i].quality = items[i].quality - 1
}
} else {
items[i].quality = items[i].quality - items[i].quality
}
} else {
if items[i].quality < 50 {
items[i].quality = items[i].quality + 1
}
}
}
}
}