From f0fe95be8529d71d7a963072c6fd9cc8523fb92b Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 16:04:40 +0100 Subject: [PATCH 1/3] feat: making the Item class respecting the Encapsulation Principle --- .../main/java/com/gildedrose/GildedRose.java | 44 ++++----- Java/src/main/java/com/gildedrose/Item.java | 30 +++++-- .../java/com/gildedrose/GildedRoseTest.java | 89 +++++++++---------- 3 files changed, 88 insertions(+), 75 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index cfd0cdac..94397891 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -11,22 +11,22 @@ class GildedRose { for (int i = 0; i < items.length; i++) { // to avoid to have to check it later on - if (items[i].name.equals("Sulfuras, Hand of Ragnaros")) { + if (items[i].getName().equals("Sulfuras, Hand of Ragnaros")) { continue; } // first we define what should increase and what should decrease - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert") | - items[i].name.equals("Aged Brie")) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; + if (items[i].getName().equals("Backstage passes to a TAFKAL80ETC concert") | + items[i].getName().equals("Aged Brie")) { + if (items[i].getQuality() < 50) { + items[i].setQuality(items[i].getQuality() + 1); - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].sellIn < 11 && items[i].quality < 50) { - items[i].quality = items[i].quality + 1; + if (items[i].getName().equals("Backstage passes to a TAFKAL80ETC concert")) { + if (items[i].getSellIn() < 11 && items[i].getQuality() < 50) { + items[i].setQuality(items[i].getQuality() + 1); } - if (items[i].sellIn < 6 && items[i].quality < 50) { - items[i].quality = items[i].quality + 1; + if (items[i].getSellIn() < 6 && items[i].getQuality() < 50) { + items[i].setQuality(items[i].getQuality() + 1); } } } @@ -34,29 +34,29 @@ class GildedRose { updateNormalAndConjuredItems(items[i]); } - if (items[i].sellIn <= 0) { + if (items[i].getSellIn() <= 0) { - if (items[i].name.equals("Aged Brie") && items[i].quality < 50) { - items[i].quality = items[i].quality + 1; + if (items[i].getName().equals("Aged Brie") && items[i].getQuality() < 50) { + items[i].setQuality(items[i].getQuality() + 1); } - if (items[i].name.equals("+5 Dexterity Vest") || items[i].name.equals("Elixir of the Mongoose") || - items[i].name.equals("Conjured Mana Cake")) { + if (items[i].getName().equals("+5 Dexterity Vest") || items[i].getName().equals("Elixir of the Mongoose") || + items[i].getName().equals("Conjured Mana Cake")) { updateNormalAndConjuredItems(items[i]); } - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - items[i].quality = items[i].quality - items[i].quality; + if (items[i].getName().equals("Backstage passes to a TAFKAL80ETC concert")) { + items[i].setQuality(0); } } - items[i].sellIn = items[i].sellIn - 1; + items[i].setSellIn(items[i].getSellIn() - 1); } } private void updateNormalAndConjuredItems(Item item) { - if (item.quality > 0) { - item.quality = item.quality - 1; - if (item.name.equals("Conjured Mana Cake") && item.quality > 0) { - item.quality = item.quality - 1; + if (item.getQuality() > 0) { + item.setQuality(item.getQuality() - 1); + if (item.getName().equals("Conjured Mana Cake") && item.getQuality() > 0) { + item.setQuality(item.getQuality() - 1); } } } diff --git a/Java/src/main/java/com/gildedrose/Item.java b/Java/src/main/java/com/gildedrose/Item.java index 465729ec..6559ab39 100644 --- a/Java/src/main/java/com/gildedrose/Item.java +++ b/Java/src/main/java/com/gildedrose/Item.java @@ -2,11 +2,11 @@ package com.gildedrose; public class Item { - public String name; + private String name; - public int sellIn; + private int sellIn; - public int quality; + private int quality; public Item(String name, int sellIn, int quality) { this.name = name; @@ -14,8 +14,28 @@ public class Item { this.quality = quality; } - @Override - public String toString() { + public String getName() { + return this.name; + } + + public int getSellIn() { + return this.sellIn; + } + + public void setSellIn(int value) { + this.sellIn = value; + } + + public int getQuality() { + return this.quality; + } + + public void setQuality(int value) { + this.quality = value; + } + + @Override + public String toString() { return this.name + ", " + this.sellIn + ", " + this.quality; } } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 92586e0c..2f1aa1b7 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -14,11 +14,9 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("Elixir of the Mongoose", 5, 7)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals("Elixir of the Mongoose", app.items[0].name); - System.out.println("Quality: " + app.items[0].sellIn); - assertEquals(4, app.items[0].sellIn); + assertEquals(4, app.items[0].getSellIn()); app.updateQuality(); - assertEquals(3, app.items[0].sellIn); + assertEquals(3, app.items[0].getSellIn()); } @Test @@ -26,11 +24,9 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("Elixir of the Mongoose", 5, 7)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals("Elixir of the Mongoose", app.items[0].name); - System.out.println("Quality: " + app.items[0].quality); - assertEquals(6, app.items[0].quality); + assertEquals(6, app.items[0].getQuality()); app.updateQuality(); - assertEquals(5, app.items[0].quality); + assertEquals(5, app.items[0].getQuality()); } @Test @@ -39,8 +35,8 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("+5 Dexterity Vest", 0, 20)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(18, app.items[0].quality); - assertEquals("+5 Dexterity Vest", app.items[0].name); + assertEquals(18, app.items[0].getQuality()); + assertEquals("+5 Dexterity Vest", app.items[0].getName()); } @Test @@ -49,8 +45,8 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("+5 Dexterity Vest", -1, 18)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(16, app.items[0].quality); - assertEquals("+5 Dexterity Vest", app.items[0].name); + assertEquals(16, app.items[0].getQuality()); + assertEquals("+5 Dexterity Vest", app.items[0].getName()); } @Test @@ -63,9 +59,8 @@ class UpdateQualityTest { GildedRose app = new GildedRose(items); app.updateQuality(); app.updateQuality(); - System.out.println(app.items[0].quality); - assertEquals(0, app.items[0].quality); - assertEquals(0, app.items[1].quality); + assertEquals(0, app.items[0].getQuality()); + assertEquals(0, app.items[1].getQuality()); } @Test @@ -74,8 +69,8 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("+5 Dexterity Vest", 1, 30)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(29, app.items[0].quality); - assertEquals(0, app.items[0].sellIn); + assertEquals(29, app.items[0].getQuality()); + assertEquals(0, app.items[0].getSellIn()); } @Test @@ -84,8 +79,8 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("Aged Brie", 1, 30)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(31, app.items[0].quality); //new Item("Aged Brie", 2, 0), - assertEquals(0, app.items[0].sellIn); + assertEquals(31, app.items[0].getQuality()); + assertEquals(0, app.items[0].getSellIn()); } @Test void sellInValueCanBeNegativeStartAtZero() { @@ -96,8 +91,8 @@ class UpdateQualityTest { for (int i = 0; i < timeFrame; i++) { app.updateQuality(); } - assertEquals(10, app.items[0].quality); - assertEquals(-timeFrame, app.items[0].sellIn); + assertEquals(10, app.items[0].getQuality()); + assertEquals(-timeFrame, app.items[0].getSellIn()); } @Test @@ -109,8 +104,8 @@ class UpdateQualityTest { for (int i = 0; i < timeFrame; i++) { app.updateQuality(); } - assertEquals(10, app.items[0].quality); - assertEquals(-5 -timeFrame, app.items[0].sellIn); + assertEquals(10, app.items[0].getQuality()); + assertEquals(-5 -timeFrame, app.items[0].getSellIn()); } @Test @@ -121,7 +116,7 @@ class UpdateQualityTest { for (int i = 0; i < 10; i++) { app.updateQuality(); } - assertEquals(-1, app.items[0].sellIn); + assertEquals(-1, app.items[0].getSellIn()); } @@ -132,11 +127,9 @@ class UpdateQualityTest { GildedRose app = new GildedRose(items); app.updateQuality(); app.updateQuality(); - assertEquals("Aged Brie", app.items[0].name); - System.out.println("Quality: " + app.items[0].quality); - assertEquals(2, app.items[0].quality); + assertEquals(2, app.items[0].getQuality()); app.updateQuality(); - assertEquals(3, app.items[0].quality); + assertEquals(3, app.items[0].getQuality()); } @Test @@ -145,7 +138,7 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("Aged Brie", -1, 20)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(22, app.items[0].quality); + assertEquals(22, app.items[0].getQuality()); } @@ -155,9 +148,9 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("Aged Brie", 10, 49)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(50, app.items[0].quality); + assertEquals(50, app.items[0].getQuality()); app.updateQuality(); - assertEquals(50, app.items[0].quality); + assertEquals(50, app.items[0].getQuality()); } @Test @@ -166,9 +159,9 @@ class UpdateQualityTest { Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(50, app.items[0].quality); + assertEquals(50, app.items[0].getQuality()); app.updateQuality(); - assertEquals(50, app.items[0].quality); + assertEquals(50, app.items[0].getQuality()); } @Test @@ -176,11 +169,11 @@ class UpdateQualityTest { System.out.println("\"Sulfuras\", being a legendary item, never decreases in Quality and stays the same"); Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", 5, 55)}; GildedRose app = new GildedRose(items); - assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].name); + assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].getName()); for (int i = 0; i < 10; i++) { app.updateQuality(); } - assertEquals(55, app.items[0].quality); + assertEquals(55, app.items[0].getQuality()); } @Test @@ -193,9 +186,9 @@ class UpdateQualityTest { }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(2, app.items[0].quality); - assertEquals(2, app.items[1].quality); - assertEquals(50, app.items[2].quality); + assertEquals(2, app.items[0].getQuality()); + assertEquals(2, app.items[1].getQuality()); + assertEquals(50, app.items[2].getQuality()); } @@ -209,9 +202,9 @@ class UpdateQualityTest { }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(6, app.items[0].quality); - assertEquals(6, app.items[1].quality); - assertEquals(50, app.items[2].quality); + assertEquals(6, app.items[0].getQuality()); + assertEquals(6, app.items[1].getQuality()); + assertEquals(50, app.items[2].getQuality()); } @@ -225,9 +218,9 @@ class UpdateQualityTest { }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(0, app.items[0].quality); - assertEquals(0, app.items[1].quality); - assertEquals(0, app.items[2].quality); + assertEquals(0, app.items[0].getQuality()); + assertEquals(0, app.items[1].getQuality()); + assertEquals(0, app.items[2].getQuality()); } @@ -239,7 +232,7 @@ class UpdateQualityTest { }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(0, app.items[0].quality); + assertEquals(0, app.items[0].getQuality()); } /** @@ -254,7 +247,7 @@ class UpdateQualityTest { new Item("Conjured Mana Cake", 3, 6)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(4, app.items[0].quality); + assertEquals(4, app.items[0].getQuality()); } @Test @@ -265,7 +258,7 @@ class UpdateQualityTest { }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(6, app.items[0].quality); + assertEquals(6, app.items[0].getQuality()); } @Test @@ -276,7 +269,7 @@ class UpdateQualityTest { }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(4, app.items[0].quality); + assertEquals(4, app.items[0].getQuality()); } } From ce18e35be76786078432c7c5a32bed8dc9a74c1f Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 16:16:26 +0100 Subject: [PATCH 2/3] chore: change in the argument name for setters --- Java/src/main/java/com/gildedrose/Item.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/Item.java b/Java/src/main/java/com/gildedrose/Item.java index 6559ab39..8a420fb9 100644 --- a/Java/src/main/java/com/gildedrose/Item.java +++ b/Java/src/main/java/com/gildedrose/Item.java @@ -18,20 +18,22 @@ public class Item { return this.name; } + // No setter for Name because it is not necessary yet + public int getSellIn() { return this.sellIn; } - public void setSellIn(int value) { - this.sellIn = value; + public void setSellIn(int sellIn) { + this.sellIn = sellIn; } public int getQuality() { return this.quality; } - public void setQuality(int value) { - this.quality = value; + public void setQuality(int quality) { + this.quality = quality; } @Override From 8a2e2e787651d9085e97823d39d2da0ea5d376c3 Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 16:16:51 +0100 Subject: [PATCH 3/3] test: adding some others units tests for object Item --- .../test/java/com/gildedrose/ItemTest.java | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/Java/src/test/java/com/gildedrose/ItemTest.java b/Java/src/test/java/com/gildedrose/ItemTest.java index f1daea60..2bf02778 100644 --- a/Java/src/test/java/com/gildedrose/ItemTest.java +++ b/Java/src/test/java/com/gildedrose/ItemTest.java @@ -4,12 +4,51 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; -class ItemTest{ +class ItemTest { @Test - void toImplement() { - //todo testing the class - assertEquals(true,true); + void contructorWithThreeArguments() { + Item[] items = new Item[]{new Item("Elixir of the Mongoose", 5, 7)}; + assertEquals("Elixir of the Mongoose", items[0].getName()); + assertEquals(7, items[0].getQuality()); + assertEquals(5, items[0].getSellIn()); } + @Test + void getterName() { + Item[] items = new Item[]{new Item("Elixir of the Mongoose", 0, 0)}; + assertEquals("Elixir of the Mongoose", items[0].getName()); } + + @Test + void getterSellin() { + Item[] items = new Item[]{new Item("Elixir of the Mongoose", 7, 0)}; + assertEquals(7, items[0].getSellIn()); + assertEquals(0, items[0].getQuality()); + + } + + @Test + void setterSellin() { + Item[] items = new Item[]{new Item("Elixir of the Mongoose", 7, 0)}; + items[0].setSellIn(1); + assertEquals(1, items[0].getSellIn()); + assertEquals(0, items[0].getQuality()); + } + + + @Test + void getterQuality() { + Item[] items = new Item[]{new Item("Elixir of the Mongoose", 0, 5)}; + assertEquals(5, items[0].getQuality()); + assertEquals(0, items[0].getSellIn()); + } + + @Test + void setterQuality() { + Item[] items = new Item[]{new Item("Elixir of the Mongoose", 0, 5)}; + items[0].setQuality(1); + assertEquals(1, items[0].getQuality()); + assertEquals(0, items[0].getSellIn()); + } +}