Generalize Sulfuras condition

This commit is contained in:
Remus Decea 2023-11-13 11:57:20 +02:00
parent 36b6e62963
commit 5459470d10
2 changed files with 7 additions and 7 deletions

View File

@ -7,14 +7,13 @@ class GildedRose {
Item[] items; Item[] items;
public static String backStagePasses = "Backstage passes to a TAFKAL80ETC concert"; public static String backStagePasses = "Backstage passes to a TAFKAL80ETC concert";
public static String sulfuras = "Sulfuras, Hand of Ragnaros";
public static String agedBrie = "Aged Brie"; public static String agedBrie = "Aged Brie";
public GildedRose(Item[] items) { public GildedRose(Item[] items) {
this.items = items; this.items = items;
} }
public void updateQuality() { public void updateQuality() {
Item[] agingItems = Arrays.stream(items).filter(i -> !i.name.equals(sulfuras)).toArray(Item[]::new); Item[] agingItems = Arrays.stream(items).filter(i -> !i.name.toLowerCase().contains("sulfuras")).toArray(Item[]::new);
Stream<Item> bries = Arrays.stream(agingItems).filter(i -> i.name.equals(agedBrie)); Stream<Item> bries = Arrays.stream(agingItems).filter(i -> i.name.equals(agedBrie));
Stream<Item> backstagePasses = Arrays.stream(agingItems).filter(i -> i.name.equals(backStagePasses)); Stream<Item> backstagePasses = Arrays.stream(agingItems).filter(i -> i.name.equals(backStagePasses));
Stream<Item> standardItems = Arrays.stream(agingItems).filter(i -> !i.name.equals(backStagePasses) && !i.name.equals(agedBrie)); Stream<Item> standardItems = Arrays.stream(agingItems).filter(i -> !i.name.equals(backStagePasses) && !i.name.equals(agedBrie));
@ -30,12 +29,10 @@ class GildedRose {
item.quality = Math.min(Math.max(item.quality + factor, 0), 50); item.quality = Math.min(Math.max(item.quality + factor, 0), 50);
} }
private void changeQualityOfStandardItems(Item item) { private void changeQualityOfStandardItems(Item item) {
final int decreaseFactor = (item.sellIn > 0) ? -1 : -2; changeQuality(item, (item.sellIn > 0) ? -1 : -2);
changeQuality(item, decreaseFactor);
} }
private void changeQualityOfBries(Item item) { private void changeQualityOfBries(Item item) {
final int increaseFactor = (item.sellIn > 0) ? 1 : 2; changeQuality(item, (item.sellIn > 0) ? 1 : 2);
changeQuality(item, increaseFactor);
} }
private void changeQualityOfPasses(Item item) { private void changeQualityOfPasses(Item item) {
if (item.sellIn < 0) { if (item.sellIn < 0) {

View File

@ -77,12 +77,15 @@ class GildedRoseTest {
void sulfurasNeverDecreases(){ void sulfurasNeverDecreases(){
//TODO: Sulfuras should be protected against instantiation with quality != 80 //TODO: Sulfuras should be protected against instantiation with quality != 80
Item[] items = new Item[]{ Item[] items = new Item[]{
new Item(GildedRose.sulfuras, 100, 80) new Item("Sulfuras, Hand of Ragnaros", 100, 80),
new Item("SULFURAS, pants of Ragnar Lothbrok", 200, 80)
}; };
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
app.updateQuality(); app.updateQuality();
assertEquals(app.items[0].quality, 80); assertEquals(app.items[0].quality, 80);
assertEquals(app.items[0].sellIn, 100); assertEquals(app.items[0].sellIn, 100);
assertEquals(app.items[1].quality, 80);
assertEquals(app.items[1].sellIn, 200);
} }
@Test @Test