Skip to content

Commit 060d765

Browse files
aacciolyO-Link06
authored andcommitted
Refactor and group regular item logic.
1 parent c8d6a70 commit 060d765

File tree

2 files changed

+46
-12
lines changed

2 files changed

+46
-12
lines changed

Java/src/main/java/com/gildedrose/GildedRose.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,16 @@ public void updateQuality() {
3636
private void updateItem(Item item) {
3737
if (isLegendary(item.name)) {
3838
return;
39-
} else if (isAgedBrie(item.name)) {
40-
item.sellIn--;
39+
}
40+
41+
item.sellIn--;
42+
43+
if (isAgedBrie(item.name)) {
4144
if (item.quality < 50) {
4245
var qualityDelta = item.sellIn < 0 ? 2 : 1;
4346
item.quality += qualityDelta;
4447
}
45-
return;
4648
} else if (isBackStagePass(item.name)) {
47-
item.sellIn--;
4849
if (item.sellIn < 0) {
4950
item.quality = 0;
5051
} else {
@@ -53,15 +54,9 @@ private void updateItem(Item item) {
5354
item.quality += qualityDelta;
5455
}
5556
}
56-
return;
57-
}
58-
59-
// all items except Sulfuras -> decrease sellIn
60-
item.sellIn = item.sellIn - 1;
61-
62-
if (item.quality > 0) {
57+
} else { // regular item
6358
var qualityDelta = item.sellIn < 0 ? 2 : 1;
64-
item.quality = item.quality - qualityDelta;
59+
item.quality = Math.max(0, item.quality - qualityDelta);
6560
}
6661
}
6762
}

Java/src/test/java/com/gildedrose/GildedRoseTest.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,45 @@ void qualityIncreasesBy3WhenSellInIsBetween5And0() {
129129
}
130130
}
131131

132+
@Nested
133+
class NormalItem {
134+
private final Item normalItem = new Item("Foo", 10, 20);
135+
136+
@DisplayName("quality decreases by 1")
137+
@Test
138+
void qualityDecreasesBy1() {
139+
GildedRose app = createGildedRose(normalItem);
140+
app.updateQuality();
141+
assertThat(normalItem.quality).isEqualTo(19);
142+
}
143+
144+
@DisplayName("sellIn decreases by 1")
145+
@Test
146+
void sellInDecreasesBy1() {
147+
GildedRose app = createGildedRose(normalItem);
148+
app.updateQuality();
149+
assertThat(normalItem.sellIn).isEqualTo(9);
150+
}
151+
152+
@DisplayName("quality decreases by 2 after sellIn date")
153+
@Test
154+
void qualityDecreasesBy2AfterSellIn() {
155+
normalItem.sellIn = 0;
156+
GildedRose app = createGildedRose(normalItem);
157+
app.updateQuality();
158+
assertThat(normalItem.quality).isEqualTo(18);
159+
}
160+
161+
@DisplayName("quality never goes below 0")
162+
@Test
163+
void qualityNeverGoesBelow0() {
164+
normalItem.quality = 0;
165+
GildedRose app = createGildedRose(normalItem);
166+
app.updateQuality();
167+
assertThat(normalItem.quality).isEqualTo(0);
168+
}
169+
}
170+
132171
public GildedRose createGildedRose(Item item) {
133172
return new GildedRose(item);
134173
}

0 commit comments

Comments
 (0)