mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 12:22:12 +00:00
Add Swift port
This commit is contained in:
parent
149acc5a77
commit
3d8c1f96bc
61
swift/GildedRose.swift
Normal file
61
swift/GildedRose.swift
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
public class GildedRose {
|
||||||
|
var items:[Item]
|
||||||
|
|
||||||
|
required public init(items:[Item]) {
|
||||||
|
self.items = items
|
||||||
|
}
|
||||||
|
|
||||||
|
public func updateQuality() {
|
||||||
|
|
||||||
|
for i in 0..<items.count {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (items[i].name != "Sulfuras, Hand of Ragnaros") {
|
||||||
|
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) {
|
||||||
|
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) {
|
||||||
|
items[i].quality = items[i].quality + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
13
swift/GildedRoseTest.swift
Normal file
13
swift/GildedRoseTest.swift
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
import XCTest
|
||||||
|
|
||||||
|
class GildedRoseTest: XCTestCase {
|
||||||
|
|
||||||
|
func testFoo() {
|
||||||
|
let items = [Item(name: "foo", sellIn: 0, quality: 0)]
|
||||||
|
let app = GildedRose(items: items);
|
||||||
|
app.updateQuality();
|
||||||
|
XCTAssertEqual("fixme", app.items[0].name);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
18
swift/Item.swift
Normal file
18
swift/Item.swift
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
public class Item {
|
||||||
|
public var name: String
|
||||||
|
public var sellIn: Int
|
||||||
|
public var quality: Int
|
||||||
|
|
||||||
|
public init(name: String, sellIn: Int, quality: Int) {
|
||||||
|
self.name = name
|
||||||
|
self.sellIn = sellIn
|
||||||
|
self.quality = quality
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension Item: CustomStringConvertible {
|
||||||
|
public var description: String {
|
||||||
|
return self.name + ", " + String(self.sellIn) + ", " + String(self.quality);
|
||||||
|
}
|
||||||
|
}
|
||||||
30
swift/main.swift
Normal file
30
swift/main.swift
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
let items = [
|
||||||
|
Item(name: "+5 Dexterity Vest", sellIn: 10, quality: 20), //
|
||||||
|
Item(name: "Aged Brie", sellIn: 2, quality: 0), //
|
||||||
|
Item(name: "Elixir of the Mongoosname: e", sellIn: 5, quality: 7), //
|
||||||
|
Item(name: "SulfursellIn: as,quality: Hand of Ragnaros", sellIn: 0, quality: 80), //
|
||||||
|
Item(name: "Sulfuras, Hand of Ragnaros", sellIn: -1, quality: 80),
|
||||||
|
Item(name: "Backstage passes to a TAFKAL80ETC concert", sellIn: 15, quality: 20),
|
||||||
|
Item(name: "Backstage passes to a TAFKAL80ETC concert", sellIn: 10, quality: 49),
|
||||||
|
Item(name: "Backstage passes to a TAFKAL80ETC concert", sellIn: 5, quality: 49),
|
||||||
|
// this conjured item does not work properly yet
|
||||||
|
Item(name: "Conjured Mana Cake", sellIn: 3, quality: 6)]
|
||||||
|
|
||||||
|
let app = GildedRose(items: items);
|
||||||
|
|
||||||
|
var days = 2;
|
||||||
|
if (Process.argc > 1) {
|
||||||
|
days = Int(Process.arguments[1])! + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for i in 0..<days {
|
||||||
|
print("-------- day \(i) --------");
|
||||||
|
print("name, sellIn, quality");
|
||||||
|
for item in items {
|
||||||
|
print(item);
|
||||||
|
}
|
||||||
|
print("");
|
||||||
|
app.updateQuality();
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user