refactor: limits of quality belong to their setter methods

This commit is contained in:
Kadir Sirimsi 2025-02-11 02:53:22 +01:00
parent 254d42fa1a
commit b7493ce188
No known key found for this signature in database
GPG Key ID: A21C0144C2D2A134
2 changed files with 32 additions and 23 deletions

View File

@ -30,33 +30,29 @@ public class Item {
case AgedBrie -> updateAgedBrieItem();
case BackstagePass -> updateBackstagePassItem();
case Sulfuras -> {}
case Normal -> updateUnknownItem();
case Normal -> updateNormalItem();
}
}
private void updateUnknownItem() {
private void updateNormalItem() {
sellIn--;
if (quality > 0) {
quality--;
}
subtractQuality(1);
if (sellIn < 0 && quality > 0) {
quality--;
if (sellIn < 0) {
subtractQuality(1);
}
}
private void updateBackstagePassItem() {
if (quality < 50) {
quality++;
addQuality(1);
if (sellIn < 11) {
addQuality(1);
}
if (sellIn < 11 && quality < 50) {
quality++;
}
if (sellIn < 6 && quality < 50) {
quality++;
if (sellIn < 6) {
addQuality(1);
}
sellIn--;
@ -67,14 +63,24 @@ public class Item {
}
private void updateAgedBrieItem() {
if (quality < 50) {
quality++;
}
addQuality(1);
sellIn--;
if (sellIn < 0 && quality < 50) {
quality++;
if (sellIn < 0) {
addQuality(1);
}
}
private void addQuality(int addition) {
if ((quality + addition) <= 50) {
quality += addition;
}
}
private void subtractQuality(int subtraction) {
if ((quality - subtraction) >= 0) {
quality -= subtraction;
}
}

View File

@ -43,17 +43,20 @@ class ItemTest {
of(new Item(Sulfuras.getName(), 4, 20), new Item(Sulfuras.getName(), 4, 20), 10),
// Backstagepass
of(new Item(BackstagePass.getName(), -1, 0), new Item(BackstagePass.getName(), -2, 0), 1),
of(new Item(BackstagePass.getName(), 8, 40), new Item(BackstagePass.getName(), 7, 42), 1),
of(new Item(BackstagePass.getName(), 8, 40), new Item(BackstagePass.getName(), -2, 0), 10),
of(new Item(BackstagePass.getName(), 4, 40), new Item(BackstagePass.getName(), -6, 0), 10),
of(new Item(BackstagePass.getName(), 0, 40), new Item(BackstagePass.getName(), -10, 0), 10),
of(new Item(BackstagePass.getName(), -1, 40), new Item(BackstagePass.getName(), -11, 0), 10),
// Other
// Normal
of(new Item(Normal.getName(), -1, 0), new Item(Normal.getName(), -11, 0), 10),
of(new Item(Normal.getName(), 0, 40), new Item(Normal.getName(), -10, 20), 10),
of(new Item(Normal.getName(), -1, 40), new Item(Normal.getName(), -11, 20), 10),
of(new Item(Normal.getName(), -5, 80), new Item(Normal.getName(), -25, 40), 20)
of(new Item(Normal.getName(), 10, 49), new Item(Normal.getName(), -10, 19), 20),
of(new Item(Normal.getName(), 10, 49), new Item(Normal.getName(), -10, 19), 20),
of(new Item(Normal.getName(), 11, 50), new Item(Normal.getName(), -9, 21), 20)
);
}
}