From 8250515a59d7d7a0a47390536e9c7bc6cf9efb61 Mon Sep 17 00:00:00 2001 From: ezravanderweel Date: Thu, 13 Oct 2022 17:04:40 +0200 Subject: [PATCH] Add conjured items feature --- php/src/GildedRose.php | 11 +++++++++++ php/tests/GildedRoseTest.php | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/php/src/GildedRose.php b/php/src/GildedRose.php index 5b65330c..0cdffc10 100644 --- a/php/src/GildedRose.php +++ b/php/src/GildedRose.php @@ -9,6 +9,7 @@ final class GildedRose private const AGED_BRIE = 'Aged Brie'; private const BACKSTAGE = 'Backstage passes to a TAFKAL80ETC concert'; private const SHR = 'Sulfuras, Hand of Ragnaros'; + private const CONJURED = 'Conjured Mana Cake'; private const MAX_THRESHOLD = 50; private const MIN_THRESHOLD = 0; @@ -33,6 +34,11 @@ final class GildedRose $item->quality = $this->subtractQuality($item); } + // The quality of conjured items degrade twice as fast as normal items, so subtract once again + if ($this->isConjuredItem($item)) { + $item->quality = $this->subtractQuality($item); + } + if ($this->qualityIncreases($item)) { $item->quality = $this->addQuality($item); @@ -84,6 +90,11 @@ final class GildedRose return $item->sell_in < 0; } + private function isConjuredItem(Item $item): bool + { + return $item->name === self::CONJURED; + } + private function subtractQuality(Item $item): int { $quality = $item->quality; diff --git a/php/tests/GildedRoseTest.php b/php/tests/GildedRoseTest.php index e7f97887..c07c83de 100644 --- a/php/tests/GildedRoseTest.php +++ b/php/tests/GildedRoseTest.php @@ -16,6 +16,7 @@ class GildedRoseTest extends TestCase new Item('+5 Dexterity Vest', 10, 20), new Item('Aged Brie', 2, 0), new Item('Sulfuras, Hand of Ragnaros', 0, 80), + new Item('Conjured Mana Cake', 1, 6), ]; $gildedRose = new GildedRose($items); @@ -30,5 +31,8 @@ class GildedRoseTest extends TestCase $this->assertSame(0, $items[2]->sell_in); $this->assertSame(80, $items[2]->quality); + + $this->assertSame(0, $items[3]->sell_in); + $this->assertSame(4, $items[3]->quality); } }