From 584d658dd64e9fc23d713abc3d7b2965bb69781d Mon Sep 17 00:00:00 2001 From: Murat Bataray Date: Thu, 9 Feb 2023 23:02:50 +0100 Subject: [PATCH] Added tests to project --- .../GildedRoseBackstageTests.swift | 48 +++++++++++++++++++ .../GildedRoseTests/GildedRoseBrieTests.swift | 21 ++++++++ .../GildedRoseConjuredTests.swift | 22 +++++++++ .../GildedRoseSulfurasTests.swift | 30 ++++++++++++ .../GildedRoseTests/GildedRoseTests.swift | 35 ++++++++++++-- 5 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 swift/Tests/GildedRoseTests/GildedRoseBackstageTests.swift create mode 100644 swift/Tests/GildedRoseTests/GildedRoseBrieTests.swift create mode 100644 swift/Tests/GildedRoseTests/GildedRoseConjuredTests.swift create mode 100644 swift/Tests/GildedRoseTests/GildedRoseSulfurasTests.swift diff --git a/swift/Tests/GildedRoseTests/GildedRoseBackstageTests.swift b/swift/Tests/GildedRoseTests/GildedRoseBackstageTests.swift new file mode 100644 index 00000000..39fbcd7c --- /dev/null +++ b/swift/Tests/GildedRoseTests/GildedRoseBackstageTests.swift @@ -0,0 +1,48 @@ +// +// GildedRoseBackstageTests.swift +// +// +// Created by Murat Bataray on 09/02/2023. +// + +@testable import GildedRose +import XCTest + +class GildedRoseBackstageTests: XCTestCase { + func test_updateQuality_backstagePassQuality_shouldIncreaseOnceInQualityWhenMoreThan10DaysRemaining() throws { + let items = [Item(name: "Backstage passes to a TAFKAL80ETC concert", sellIn: 15, quality: 1)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 2) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 3) + } + + func test_updateQuality_backstagePassQuality_shouldIncreaseByTwoInQualityWhenLessThan10DaysRemaining() throws { + let items = [Item(name: "Backstage passes to a TAFKAL80ETC concert", sellIn: 9, quality: 1)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 3) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 5) + } + + func test_updateQuality_backstagePassQuality_shouldIncreaseByThreeInQualityWhenLessThan5DaysRemaining() throws { + let items = [Item(name: "Backstage passes to a TAFKAL80ETC concert", sellIn: 5, quality: 1)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 4) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 7) + } + + func test_updateQuality_backstagePassQuality_shouldBeZeroWhenSellByDateHasPassed() throws { + let items = [Item(name: "Backstage passes to a TAFKAL80ETC concert", sellIn: 0, quality: 1)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 0) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 0) + } +} + diff --git a/swift/Tests/GildedRoseTests/GildedRoseBrieTests.swift b/swift/Tests/GildedRoseTests/GildedRoseBrieTests.swift new file mode 100644 index 00000000..0fdc0c4a --- /dev/null +++ b/swift/Tests/GildedRoseTests/GildedRoseBrieTests.swift @@ -0,0 +1,21 @@ +// +// GildedRoseBrieTests.swift +// +// +// Created by Murat Bataray on 09/02/2023. +// + +@testable import GildedRose +import XCTest + +class GildedRoseBrieTests: XCTestCase { + func test_updateQuality_agedBrieQuality_increasesInAgeAfterSellByDate() throws { + let items = [Item(name: "Aged Brie", sellIn: 1, quality: 4)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 5) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 7) + } +} + diff --git a/swift/Tests/GildedRoseTests/GildedRoseConjuredTests.swift b/swift/Tests/GildedRoseTests/GildedRoseConjuredTests.swift new file mode 100644 index 00000000..7408d8e1 --- /dev/null +++ b/swift/Tests/GildedRoseTests/GildedRoseConjuredTests.swift @@ -0,0 +1,22 @@ +// +// GildedRoseConjuredTests.swift +// +// +// Created by Murat Bataray on 09/02/2023. +// + +@testable import GildedRose +import XCTest + +class GildedRoseConjuredTests: XCTestCase { + func test_updateQuality_conjuredItemQuality_shouldDegradeTwiceAsFastAfterSellByDate() throws { + let items = [Item(name: "Conjured item", sellIn: 1, quality: 15)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 13) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 9) + } +} + + diff --git a/swift/Tests/GildedRoseTests/GildedRoseSulfurasTests.swift b/swift/Tests/GildedRoseTests/GildedRoseSulfurasTests.swift new file mode 100644 index 00000000..a65feb7c --- /dev/null +++ b/swift/Tests/GildedRoseTests/GildedRoseSulfurasTests.swift @@ -0,0 +1,30 @@ +// +// GildedRoseSulfurasTests.swift +// +// +// Created by Murat Bataray on 09/02/2023. +// + +@testable import GildedRose +import XCTest + +class GildedRoseSulfurasTests: XCTestCase { + func test_updateQuality_sulfurasQuality_shouldntHaveSellDate() throws { + let items = [Item(name: "Sulfuras, Hand of Ragnaros", sellIn: 0, quality: 1)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 1) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 1) + } + + func test_updateQuality_sulfurasQuality_shouldntDecreaseInQuality() throws { + let items = [Item(name: "Sulfuras, Hand of Ragnaros", sellIn: 1, quality: 1)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 1) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 1) + } + +} diff --git a/swift/Tests/GildedRoseTests/GildedRoseTests.swift b/swift/Tests/GildedRoseTests/GildedRoseTests.swift index 62bde8f1..a19daa2d 100644 --- a/swift/Tests/GildedRoseTests/GildedRoseTests.swift +++ b/swift/Tests/GildedRoseTests/GildedRoseTests.swift @@ -2,10 +2,39 @@ import XCTest class GildedRoseTests: XCTestCase { - func testFoo() throws { - let items = [Item(name: "foo", sellIn: 0, quality: 0)] + func test_updateQuality_itemSellIn_shouldDecreaseAfterCallingFunction() throws { + let items = [Item(name: "foo", sellIn: 5, quality: 5)] let app = GildedRose(items: items) app.updateQuality() - XCTAssertEqual(app.items[0].name, "foo") + XCTAssertEqual(app.items[0].quality, 4) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 3) + } + + func test_updateQuality_itemQuality_shouldDegradeTwiceAsFastAfterPassingSellByDate() throws { + let items = [Item(name: "foo", sellIn: 0, quality: 5)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 3) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 1) + } + + func test_updateQuality_itemQuality_shouldntBecomeNegativeAfterPassingSellByDate() throws { + let items = [Item(name: "foo", sellIn: 0, quality: 1)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 0) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 0) + } + + func test_updateQuality_itemQuality_shouldntGoAbove50() throws { + let items = [Item(name: "Aged Brie", sellIn: 1, quality: 49)] + let app = GildedRose(items: items) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 50) + app.updateQuality() + XCTAssertEqual(app.items[0].quality, 50) } }