refactor level 1

This commit is contained in:
ismail 2025-03-31 19:45:17 +02:00
parent ca29744ff9
commit 3547271c33
4 changed files with 90 additions and 86 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@ -8,55 +8,74 @@ class GildedRose {
}
public void updateQuality() {
for (int i = 0; i < items.length; i++) {
if (!items[i].name.equals("Aged Brie")
&& !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
if (items[i].quality > 0) {
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
items[i].quality = items[i].quality - 1;
}
}
} else {
if (items[i].quality < 50) {
items[i].quality = items[i].quality + 1;
for (Item item : items) {
updateItemQuality(item);
}
}
if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
if (items[i].sellIn < 11) {
if (items[i].quality < 50) {
items[i].quality = items[i].quality + 1;
}
}
private void updateItemQuality(Item item) {
switch (item.name) {
case "Aged Brie":
updateQualityForAgedBrie(item);
break;
case "Backstage passes to a TAFKAL80ETC concert":
updateQualityForBackstagePasses(item);
break;
case "Sulfuras, Hand of Ragnaros":
break;
default:
updateQualityForRegularItems(item);
break;
}
if (items[i].sellIn < 6) {
if (items[i].quality < 50) {
items[i].quality = items[i].quality + 1;
}
}
}
}
if (!item.name.equals("Sulfuras, Hand of Ragnaros")) {
item.sellIn--;
}
if (item.sellIn < 0) {
handleExpiredItem(item);
}
}
private void updateQualityForAgedBrie(Item item) {
if (item.quality < 50) {
item.quality++;
}
}
private void updateQualityForBackstagePasses(Item item) {
if (item.quality < 50) {
item.quality++;
if (item.sellIn < 11) {
item.quality = Math.min(item.quality + 1, 50);
}
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
items[i].sellIn = items[i].sellIn - 1;
}
if (items[i].sellIn < 0) {
if (!items[i].name.equals("Aged Brie")) {
if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
if (items[i].quality > 0) {
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
items[i].quality = items[i].quality - 1;
}
}
} else {
items[i].quality = items[i].quality - items[i].quality;
}
} else {
if (items[i].quality < 50) {
items[i].quality = items[i].quality + 1;
}
}
if (item.sellIn < 6) {
item.quality = Math.min(item.quality + 1, 50);
}
}
}
private void updateQualityForRegularItems(Item item) {
if (item.quality > 0) {
item.quality--;
}
}
private void handleExpiredItem(Item item) {
switch (item.name) {
case "Aged Brie":
if (item.quality < 50) {
item.quality++;
}
break;
case "Backstage passes to a TAFKAL80ETC concert":
item.quality = 0;
break;
default:
if (item.quality > 0) {
item.quality--;
}
break;
}
}
}

View File

@ -1,17 +1,39 @@
package com.gildedrose;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class GildedRoseTest {
@Test
void foo() {
Item[] items = new Item[] { new Item("foo", 0, 0) };
void testAgedBrieQualityIncreases() {
Item[] items = new Item[] { new Item("Aged Brie", 5, 10) };
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals("fixme", app.items[0].name);
assertEquals(11, items[0].quality);
}
@Test
void testBackstagePassesQualityIncreases() {
Item[] items = new Item[] { new Item("Backstage passes to a TAFKAL80ETC concert", 10, 20) };
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(22, items[0].quality);
}
@Test
void testRegularItemQualityDecreases() {
Item[] items = new Item[] { new Item("Regular Item", 5, 10) };
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(9, items[0].quality);
}
@Test
void testSulfurasDoesNotChange() {
Item[] items = new Item[] { new Item("Sulfuras, Hand of Ragnaros", 5, 80) };
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(80, items[0].quality);
}
}

View File

@ -1,37 +0,0 @@
package com.gildedrose;
public class TexttestFixture {
public static void main(String[] args) {
System.out.println("OMGHAI!");
Item[] items = new Item[] {
new Item("+5 Dexterity Vest", 10, 20), //
new Item("Aged Brie", 2, 0), //
new Item("Elixir of the Mongoose", 5, 7), //
new Item("Sulfuras, Hand of Ragnaros", 0, 80), //
new Item("Sulfuras, Hand of Ragnaros", -1, 80),
new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49),
// this conjured item does not work properly yet
new Item("Conjured Mana Cake", 3, 6) };
GildedRose app = new GildedRose(items);
int days = 2;
if (args.length > 0) {
days = Integer.parseInt(args[0]) + 1;
}
for (int i = 0; i < days; i++) {
System.out.println("-------- day " + i + " --------");
System.out.println("name, sellIn, quality");
for (Item item : items) {
System.out.println(item);
}
System.out.println();
app.updateQuality();
}
}
}