From dc8c7ae6e144e61f529dac328acf18f8216dc191 Mon Sep 17 00:00:00 2001 From: alatinovic-fh Date: Sun, 22 Jun 2025 21:42:42 +0200 Subject: [PATCH] test: add JUnit test for GildedRose updateQuality logic - Adds tests covering all item types (Aged Brie, Backstage passes, Sulfuras, normal items), - Edge cases (quality never below 0 or above 50), and sellIn behavior. - Includes tests for quality changes before and after sellIn expiration. --- .../java/com/gildedrose/GildedRoseTest.java | 82 +++++++++++++++++-- 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 8ae29eec..b86b80fa 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -1,17 +1,83 @@ package com.gildedrose; import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.*; class GildedRoseTest { - @Test - void foo() { - Item[] items = new Item[] { new Item("foo", 0, 0) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals("fixme", app.items[0].name); + private Item createItem(String name, int sellIn, int quality) { + return new Item(name, sellIn, quality); } + @Test + void normaleItem_QualitaetSinktProTag() { + Item item = createItem("Normaler Gegenstand", 10, 20); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(19, item.quality); // -1 Qualität + } + + @Test + void normaleItem_QualitaetSinktDoppeltNachVerfall() { + Item item = createItem("Normaler Gegenstand", 0, 20); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(18, item.quality); // -2 Qualität + } + + @Test + void agedBrie_QualitaetSteigt() { + Item item = createItem("Aged Brie", 10, 20); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(21, item.quality); // +1 Qualität + } + + @Test + void agedBrie_QualitaetSteigtSchnellerNachVerfall() { + Item item = createItem("Aged Brie", -1, 20); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(22, item.quality); // +2 Qualität + } + + @Test + void backstagePass_QualitaetSteigtUm3Bei5Tagen() { + Item item = createItem("Backstage passes to a TAFKAL80ETC concert", 5, 20); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(23, item.quality); // +3 Qualität + } + + @Test + void backstagePass_QualitaetFälltAuf0NachKonzert() { + Item item = createItem("Backstage passes to a TAFKAL80ETC concert", 0, 20); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(0, item.quality); // Qualität = 0 + } + + @Test + void sulfuras_QualitaetUnverändert() { + Item item = createItem("Sulfuras, Hand of Ragnaros", 10, 80); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(80, item.quality); // Qualität bleibt 80 + } + + @Test + void qualitaetNieÜber50() { + Item item = createItem("Aged Brie", 10, 50); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(50, item.quality); // Maximalwert 50 + } + + @Test + void qualitaetNieUnter0() { + Item item = createItem("Normaler Gegenstand", 10, 0); + GildedRose app = new GildedRose(new Item[]{item}); + app.updateQuality(); + assertEquals(0, item.quality); // Minimalwert 0 + } }