mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-10-16 19:05:05 +00:00
add fsharp version
This commit is contained in:
1 parent
8862a771a5
commit
cb45ff3fe7
7 files changed
+308
No files matched your search
@@ -0,0 +1,63 @@
|
||||
module GildedRose
|
||||
|
||||
open System.Collections.Generic
|
||||
|
||||
type Item = { Name: string; SellIn: int; Quality: int }
|
||||
|
||||
type GildedRose(items:IList<Item>) as this =
|
||||
let Items = items
|
||||
|
||||
member this.UpdateQuality() =
|
||||
for i = 0 to Items.Count - 1 do
|
||||
if Items.[i].Name <> "Aged Brie" && Items.[i].Name <> "Backstage passes to a TAFKAL80ETC concert" then
|
||||
if Items.[i].Quality > 0 then
|
||||
if Items.[i].Name <> "Sulfuras, Hand of Ragnaros" then
|
||||
Items.[i] <- { Items.[i] with Quality = (Items.[i].Quality - 1) }
|
||||
else
|
||||
if Items.[i].Quality < 50 then
|
||||
Items.[i] <- { Items.[i] with Quality = (Items.[i].Quality + 1) }
|
||||
if Items.[i].Name = "Backstage passes to a TAFKAL80ETC concert" then
|
||||
if Items.[i].SellIn < 11 then
|
||||
if Items.[i].Quality < 50 then
|
||||
Items.[i] <- { Items.[i] with Quality = (Items.[i].Quality + 1) }
|
||||
if Items.[i].SellIn < 6 then
|
||||
if Items.[i].Quality < 50 then
|
||||
Items.[i] <- { Items.[i] with Quality = (Items.[i].Quality + 1) }
|
||||
if Items.[i].Name <> "Sulfuras, Hand of Ragnaros" then
|
||||
Items.[i] <- { Items.[i] with SellIn = (Items.[i].SellIn - 1) }
|
||||
if Items.[i].SellIn < 0 then
|
||||
if Items.[i].Name <> "Aged Brie" then
|
||||
if Items.[i].Name <> "Backstage passes to a TAFKAL80ETC concert" then
|
||||
if Items.[i].Quality > 0 then
|
||||
if Items.[i].Name <> "Sulfuras, Hand of Ragnaros" then
|
||||
Items.[i] <- { Items.[i] with Quality = (Items.[i].Quality - 1) }
|
||||
else
|
||||
Items.[i] <- { Items.[i] with Quality = (Items.[i].Quality - Items.[i].Quality) }
|
||||
else
|
||||
if Items.[i].Quality < 50 then
|
||||
Items.[i] <- { Items.[i] with Quality = (Items.[i].Quality + 1) }
|
||||
()
|
||||
|
||||
[<EntryPoint>]
|
||||
let main argv =
|
||||
printfn "OMGHAI!"
|
||||
let Items = new List<Item>()
|
||||
Items.Add({Name = "+5 Dexterity Vest"; SellIn = 10; Quality = 20})
|
||||
Items.Add({Name = "Aged Brie"; SellIn = 2; Quality = 0})
|
||||
Items.Add({Name = "Elixir of the Mongoose"; SellIn = 5; Quality = 7})
|
||||
Items.Add({Name = "Sulfuras, Hand of Ragnaros"; SellIn = 0; Quality = 80})
|
||||
Items.Add({Name = "Sulfuras, Hand of Ragnaros"; SellIn = -1; Quality = 80})
|
||||
Items.Add({Name = "Backstage passes to a TAFKAL80ETC concert"; SellIn = 15; Quality = 20})
|
||||
Items.Add({Name = "Backstage passes to a TAFKAL80ETC concert"; SellIn = 10; Quality = 49})
|
||||
Items.Add({Name = "Backstage passes to a TAFKAL80ETC concert"; SellIn = 5; Quality = 49})
|
||||
Items.Add({Name = "Conjured Mana Cake"; SellIn = 3; Quality = 6})
|
||||
|
||||
let app = new GildedRose(Items)
|
||||
for i = 0 to 30 do
|
||||
printfn "-------- day %d --------" i
|
||||
printfn "name, sellIn, quality"
|
||||
for j = 0 to Items.Count - 1 do
|
||||
printfn "%s, %d, %d" Items.[j].Name Items.[j].SellIn Items.[j].Quality
|
||||
printfn ""
|
||||
app.UpdateQuality()
|
||||
0
|
||||
Reference in new issue
Block a user