Initial port.

This commit is contained in:
Peter Kofler 2024-12-13 01:33:28 +01:00
parent 1406987c44
commit a91a6ef695
3 changed files with 97 additions and 0 deletions

65
io/io/GildedRose.io Normal file
View File

@ -0,0 +1,65 @@
GildedRose := Object clone do(
init := method(
self items := list()
)
with := method(items,
result := self clone
result items = items
result
)
updateQuality := method(
for(i, 0, items size - 1,
if (items at(i) name != "Aged Brie" and
items at(i) name != "Backstage passes to a TAFKAL80ETC concert",
if (items at(i) quality > 0,
if (items at(i) name != "Sulfuras, Hand of Ragnaros",
items at(i) quality = items at(i) quality - 1
)
)
,
if (items at(i) quality < 50,
items at(i) quality = items at(i) quality + 1
if (items at(i) name == "Backstage passes to a TAFKAL80ETC concert",
if (items at(i) sellIn < 11,
if (items at(i) quality < 50,
items at(i) quality = items at(i) quality + 1
)
)
if (items at(i) sellIn < 6,
if (items at(i) quality < 50,
items at(i) quality = items at(i) quality + 1
)
)
)
)
)
if (items at(i) name != "Sulfuras, Hand of Ragnaros",
items at(i) sellIn = items at(i) sellIn - 1
)
if (items at(i) sellIn < 0,
if (items at(i) name != "Aged Brie",
if (items at(i) name != "Backstage passes to a TAFKAL80ETC concert",
if (items at(i) quality > 0,
if (items at(i) name != "Sulfuras, Hand of Ragnaros",
items at(i) quality = items at(i) quality - 1
)
)
,
items at(i) quality = items at(i) quality - items at(i) quality
)
,
if (items at(i) quality < 50,
items at(i) quality = items at(i) quality + 1
)
)
)
)
)
)

19
io/io/Item.io Normal file
View File

@ -0,0 +1,19 @@
Item := Object clone do(
name := ""
sellIn := 0
quality := 0
with := method(name, sellIn, quality,
result := self clone
result name = name
result sellIn = sellIn
result quality = quality
result
)
asString = method(
self name .. ", " .. self sellIn .. ", " .. self quality
)
)

View File

@ -0,0 +1,13 @@
doRelativeFile("../../io/Item.io")
doRelativeFile("../../io/GildedRose.io")
GildedRoseTest := UnitTest clone do(
testFoo := method(
items := list( Item with("foo", 0, 0) )
app := GildedRose with(items)
app updateQuality
assertEquals("fixme", app items at(0) name)
)
)