diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..76b3e7b --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1 @@ +/fi/ diff --git a/bin/fi/oulu/tol/sqat/GildedRose.class b/bin/fi/oulu/tol/sqat/GildedRose.class index f244eba..067f481 100644 Binary files a/bin/fi/oulu/tol/sqat/GildedRose.class and b/bin/fi/oulu/tol/sqat/GildedRose.class differ diff --git a/bin/fi/oulu/tol/sqat/Item.class b/bin/fi/oulu/tol/sqat/Item.class index 478a739..a59f2ec 100644 Binary files a/bin/fi/oulu/tol/sqat/Item.class and b/bin/fi/oulu/tol/sqat/Item.class differ diff --git a/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class b/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class index e44e81c..0f25d8d 100644 Binary files a/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class and b/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class differ diff --git a/src/fi/oulu/tol/sqat/GildedRose.java b/src/fi/oulu/tol/sqat/GildedRose.java index 24741c6..ebe64d8 100644 --- a/src/fi/oulu/tol/sqat/GildedRose.java +++ b/src/fi/oulu/tol/sqat/GildedRose.java @@ -19,79 +19,62 @@ public void addItem(Item item) { public GildedRose() { items = new ArrayList(); } + public static void updateEndOfDay() { - for (int i = 0; i < items.size(); i++) + for (Item item : items) { - if ((!"Aged Brie".equals(items.get(i).getName())) && !"Backstage passes to a TAFKAL80ETC concert".equals(items.get(i).getName())) + if("Sulfuras, Hand of Ragnaros".equals(item.getName())) + { + //do nothing about quality + } + + else if ("Backstage passes to a TAFKAL80ETC concert".equals(item.getName())) { - if (items.get(i).getQuality() > 0) - { - if (!"Sulfuras, Hand of Ragnaros".equals(items.get(i).getName())) - { - items.get(i).setQuality(items.get(i).getQuality() - 1); - } + if (item.isExpired()) + { + item.setQuality(0); } + else if(item.getSellIn() < 6) + { + item.increaseQuality(3); + } + else if(item.getSellIn() < 11) + { + item.increaseQuality(2); + } + else + { + item.increaseQuality(1); + } } - else + + else if("Aged Brie".equals(item.getName())) { - if (items.get(i).getQuality() < 50) - { - items.get(i).setQuality(items.get(i).getQuality() + 1); - - if ("Backstage passes to a TAFKAL80ETC concert".equals(items.get(i).getName())) - { - if (items.get(i).getSellIn() < 11) - { - if (items.get(i).getQuality() < 50) - { - items.get(i).setQuality(items.get(i).getQuality() + 1); - } - } - - if (items.get(i).getSellIn() < 6) - { - if (items.get(i).getQuality() < 50) - { - items.get(i).setQuality(items.get(i).getQuality() + 1); - } - } - } - } + + if (item.isExpired()) + { + item.increaseQuality(2); + } + else + { + item.increaseQuality(1); + } } + + else + { + if(item.isExpired()) + { + item.decreaseQuality(2); + } + else + { + item.decreaseQuality(1); + } + } - if (!"Sulfuras, Hand of Ragnaros".equals(items.get(i).getName())) - { - items.get(i).setSellIn(items.get(i).getSellIn() - 1); - } - - if (items.get(i).getSellIn() < 0) - { - if (!"Aged Brie".equals(items.get(i).getName())) - { - if (!"Backstage passes to a TAFKAL80ETC concert".equals(items.get(i).getName())) - { - if (items.get(i).getQuality() > 0) - { - if (!"Sulfuras, Hand of Ragnaros".equals(items.get(i).getName())) - { - items.get(i).setQuality(items.get(i).getQuality() - 1); - } - } - } - else - { - items.get(i).setQuality(items.get(i).getQuality() - items.get(i).getQuality()); - } - } - else - { - if (items.get(i).getQuality() < 50) - { - items.get(i).setQuality(items.get(i).getQuality() + 1); - } - } - } + item.decreaseSellIn(1); } } diff --git a/src/fi/oulu/tol/sqat/Item.java b/src/fi/oulu/tol/sqat/Item.java index 447b7fe..81382ef 100644 --- a/src/fi/oulu/tol/sqat/Item.java +++ b/src/fi/oulu/tol/sqat/Item.java @@ -31,5 +31,38 @@ public int getQuality() { public void setQuality(int quality) { this.quality = quality; } + + public void decreaseQuality(int decrease) { + if(this.quality - decrease > 0) { + this.quality -= decrease; + } + else { + this.quality = 0; + } + } + + public void increaseQuality(int increase) { + if(this.quality + increase <= 50) { + this.quality += increase; + } + else { + this.quality = 50; + } + } + + public void decreaseSellIn(int decrease) { + if (!"Sulfuras, Hand of Ragnaros".equals(getName())) { + this.sellIn -= decrease; + } + } + + public boolean isExpired() { + if(getSellIn()<=0) { + return true; + } + else { + return false; + } + } } diff --git a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java index 7aceb2e..613dbb2 100644 --- a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java +++ b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java @@ -36,7 +36,227 @@ public void testUpdateEndOfDay_AgedBrie_Quality_10_11() { } @Test - public void testUpdateEndOfDay() { - fail("Test not implemented"); + public void testUpdateEndOfDay_AgedBrie_Quality_12_14_SellIn0() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Aged Brie", 0, 12) ); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBrie = items.get(0); + assertEquals(14, itemBrie.getQuality()); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_SellIn9_8() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Aged Brie", 9, 10) ); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBrie = items.get(0); + assertEquals(8, itemBrie.getSellIn()); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_QualityStopsIncreasingAfter50() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Aged Brie", 9, 50) ); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBrie = items.get(0); + assertEquals(50, itemBrie.getQuality()); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_SellIn0_Quality49_QualityStopsIncreasingAfter50() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Aged Brie", 0, 49) ); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBrie = items.get(0); + assertEquals(50, itemBrie.getQuality()); + } + + @Test + public void testUpdateEndOfDay_BackstagePass_SellIn15_Quality_20_21() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBackstagePass = items.get(0); + assertEquals(21, itemBackstagePass.getQuality()); + } + + @Test + public void testUpdateEndOfDay_BackstagePass_SellIn10_Quality_20_22() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 10, 20)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBackstagePass = items.get(0); + assertEquals(22, itemBackstagePass.getQuality()); + } + + @Test + public void testUpdateEndOfDay_BackstagePass_SellIn5_Quality_20_23() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 5, 20)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBackstagePass = items.get(0); + assertEquals(23, itemBackstagePass.getQuality()); + } + + @Test + public void testUpdateEndOfDay_BackstagePass_SellIn15_Quality_49_50() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 15, 49)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBackstagePass = items.get(0); + assertEquals(50, itemBackstagePass.getQuality()); + } + + @Test + public void testUpdateEndOfDay_BackstagePass_SellIn10_Quality_49_50() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBackstagePass = items.get(0); + assertEquals(50, itemBackstagePass.getQuality()); + } + + @Test + public void testUpdateEndOfDay_BackstagePass_SellIn5_Quality_49_50() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBackstagePass = items.get(0); + assertEquals(50, itemBackstagePass.getQuality()); + } + + @Test + public void testUpdateEndOfDay_ConjuredManaCake_SellIn1_Quality_10_9() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Conjured Mana Cake", 1, 10)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemConjuredManaCake = items.get(0); + assertEquals(9, itemConjuredManaCake.getQuality()); + } + + @Test + public void testUpdateEndOfDay_ConjuredManaCake_SellIn0_Quality_10_8() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Conjured Mana Cake", 0, 10)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemConjuredManaCake = items.get(0); + assertEquals(8, itemConjuredManaCake.getQuality()); + } + + @Test + public void testUpdateEndOfDay_ConjuredManaCake_SellIn0_Quality_0_0_NoNegativeQuality() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Conjured Mana Cake", 0, 0)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemConjuredManaCake = items.get(0); + assertEquals(0, itemConjuredManaCake.getQuality()); + } + + @Test + public void testUpdateEndOfDay_SulfurasQuality80() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Sulfuras, Hand of Ragnaros", 0, 80)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemSulfuras = items.get(0); + assertEquals(80, itemSulfuras.getQuality()); + } + + @Test + public void testUpdateEndOfDay_SulfurasSellIn0() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Sulfuras, Hand of Ragnaros", 0, 80)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemSulfuras = items.get(0); + assertEquals(0, itemSulfuras.getSellIn()); } }