From 74b56a15361c13cd203db36a84e21243701acd0b Mon Sep 17 00:00:00 2001 From: pottumuusi Date: Wed, 19 Oct 2016 00:38:38 +0300 Subject: [PATCH 1/3] Separating item quality updates. Work in progress. --- .besouro/20161018231708455/actions.txt | 0 .besouro/20161018231708455/zorroEpisodes.txt | 0 .besouro/20161018232041335/actions.txt | 0 .besouro/20161018232041335/zorroEpisodes.txt | 0 bin/.gitignore | 1 + bin/fi/oulu/tol/sqat/GildedRose.class | Bin 2380 -> 3613 bytes .../oulu/tol/sqat/tests/GildedRoseTest.class | Bin 504 -> 6370 bytes src/fi/oulu/tol/sqat/GildedRose.java | 168 +++++++---- .../oulu/tol/sqat/tests/GildedRoseTest.java | 272 +++++++++++++++++- 9 files changed, 373 insertions(+), 68 deletions(-) create mode 100644 .besouro/20161018231708455/actions.txt create mode 100644 .besouro/20161018231708455/zorroEpisodes.txt create mode 100644 .besouro/20161018232041335/actions.txt create mode 100644 .besouro/20161018232041335/zorroEpisodes.txt create mode 100644 bin/.gitignore diff --git a/.besouro/20161018231708455/actions.txt b/.besouro/20161018231708455/actions.txt new file mode 100644 index 0000000..e69de29 diff --git a/.besouro/20161018231708455/zorroEpisodes.txt b/.besouro/20161018231708455/zorroEpisodes.txt new file mode 100644 index 0000000..e69de29 diff --git a/.besouro/20161018232041335/actions.txt b/.besouro/20161018232041335/actions.txt new file mode 100644 index 0000000..e69de29 diff --git a/.besouro/20161018232041335/zorroEpisodes.txt b/.besouro/20161018232041335/zorroEpisodes.txt new file mode 100644 index 0000000..e69de29 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 f244eba73874c91f18244a292b7f88cc3b4b5f80..ec2f3b8acd7e9f0094a9720387437f857cc63720 100644 GIT binary patch literal 3613 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 diff --git a/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class b/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class index e44e81ce2b232358b6069c215dc740c0984c2b8c..5bd3d1a0d2266f6e4cbb6232cd9f48cdf465c662 100644 GIT binary patch literal 6370 zcmbuDTW}ml6^2ji;vKCv)>>8^N5aYA;8;@D+KW&kTOvWWWk-$_JCdScOtOr2N2`%X zGxp4^96`tp0)fO%s!~p+5_kzk0eJ~fi47#&c}a@m@)C;T@)C;T@)C;T@)Y=cF1urG zOKLz>T4{Qw=Y0M5f6i&?&3C{3T_PH!rxVn~XwQO?wX0?|>)B@3J*#~AHT4&aFxoO|ScZ2iqvqbe zIYupq?6RJuW@=ASf|LYZ#i(b4HzX-V?QH~v6t&V8MjexerQcayp4XjOZQcYy=cHZI z%sI_5_;ong;w>63qrHuEqD6wUmyh3lrmT7TxK%#Ba9CR{j#c#XLC4UGcU3jh@K%e3 zVm`;{+Uct08O!>d;TniIW?8nUd4_EvV0zMaD%qtf)|}s>uDvPhr9MVVMfdm&te~^EFNj_B3^O}vU=8hb6YWb-2Cwj`YIjmJ zKv`@pW@C}P6XDF5QAYTx@+m6NAfqIn3#Ih^Frm;8qwB&U)m~6*VyK2ya&*nr-BwtZ zf3+uRKS9m|5V@}LnCt3}m!eVn0Hc)VUyYx|c3~wV5sw|?E==$zu%V3D1f%u^%`m5Q z*VQV%of?#9)FMf5V*(JL=lLmdgqLiu4)S&g3josIbo^X;_9O2s%N-d^H)-F&f7({Kk;exr$j1b!ZKW6q}NZf?vr7&Ew~&^>T+T&c1i8WFY3 z^%azhk@stb3=QAV)_;dz;$4`jnhRA&b8D3-R~*JJ6p{PUt&DoRW|esoO=}fPb8J^3 zjZuHhhS8(khr>CQKOWdoGvSX~rkxNkFq&NqMI7=G78u&lri`_8YbdG*|)ZXttpsx>ONSR@V3UwZ_uA2*Hr4X3t=h2kv=eVWmZV4T+hzMLuBs@OQnDfBq*MKVNj z+$#d%bR`ND(uZ?VI}zwSqb`i|ZW5J8|5fPmGj`P}=|>EHG}~T33eMs%G{8G64lii_ zXy^>zIMU&B2Y$z45T9+hI*7acUb_D>CHr5a)XB@V^;PQlI>wr48$P%C^A&2r^BtJi ziLq2LhqhA}u291<-h?+3BH$>1pZwkDam8bg^uIzKuhGtvo!zbJ{5$1&ubF_|`PNoZ+a~|TH<3i3J(Cwlgx}LHiD_|Q&Xm^Zr zG~~?II14e(qe4!BoXs+F-p(#I2k zj3Hp&0=Qvd?g!=pY0TrYm`&-f%{Sdw^Mp{%+kiO+%tOFD49syr9+AeJ7GgdTnsa~M zoSWy+%xLG_R3<5eyaSL^fIJS!6M(!6icZHM_t&<(ojw$1kW$N_ld_O4n>sUqY!gD> z1BjD=JO#*)0Pex)r5I*BeIhOE)#zSH z%=?*y#e|wV$E*l39{}cqzs4Bl^m_Z9HI3f@cLy)4aJ z74lvT{ZKzQotDB~;qu-uw8QJb{SKw+b=dcNu@NZP z7GQq`*k1$oH-P;uO2hABu<_CmX$$r9t8}B|Mu3yl;c|_pt8Uu1SV8{a-BmUO9CB@+Mu delta 275 zcmZXNOAY}+7=){5hM|r3`v!<)A}mEB5+@J~8xcAl3zC_(b_Q`0D`MdQj^Pwmq6UeD zO;!J0^?(1p@i67>dAR~;qP&;Aa=5)*FLg)2tW<{rR&O&?5+p1Rc zhiWH8j(ix9)F2KtMs+>~dYqF$g8v4R-&TqqfSOF+AnT0u4 items = null; + + private static final String DEXTERITY_VEST_NAME = "+5 Dexterity Vest"; + private static final String AGED_BRIE_NAME = "Aged Brie"; + private static final String MONGOOSE_ELIXIR_NAME = "Elixir of the Mongoose"; + private static final String SULFURAS_NAME = "Sulfuras, Hand of Ragnaros"; + private static final String BACKSTAGE_PASSES_NAME = "Backstage passes to a TAFKAL80ETC concert"; + private static final String MANA_CAKE_NAME = "Conjured Mana Cake"; + + private String[] specialItemNames = { + BACKSTAGE_PASSES_NAME, + AGED_BRIE_NAME, + SULFURAS_NAME, + }; + + private int currentItemQuality; + private String currentItemName; + private int currentItemSellIn; /** * @param args */ public static void main(String[] args) { + GildedRose gildedRose = new GildedRose(); System.out.println("OMGHAI!"); items = new ArrayList(); - items.add(new Item("+5 Dexterity Vest", 10, 20)); - items.add(new Item("Aged Brie", 2, 0)); - items.add(new Item("Elixir of the Mongoose", 5, 7)); - items.add(new Item("Sulfuras, Hand of Ragnaros", 0, 80)); - items.add(new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20)); - items.add(new Item("Conjured Mana Cake", 3, 6)); + items.add(new Item(DEXTERITY_VEST_NAME, 10, 20)); + items.add(new Item(AGED_BRIE_NAME, 2, 0)); + items.add(new Item(MONGOOSE_ELIXIR_NAME, 5, 7)); + items.add(new Item(SULFURAS_NAME, 0, 80)); + items.add(new Item(BACKSTAGE_PASSES_NAME, 15, 20)); + items.add(new Item(MANA_CAKE_NAME, 3, 6)); - updateQuality(); + gildedRose.updateEndOfDay(); } + public List getItems() { + return items; + } + + public void addItem(Item item) { + items.add(item); + } + public GildedRose() { + items = new ArrayList(); + } - public static void updateQuality() + public void updateEndOfDay() { for (int i = 0; i < items.size(); i++) { - if ((!"Aged Brie".equals(items.get(i).getName())) && !"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 - { - 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); - } - } + currentItemQuality = items.get(i).getQuality(); + currentItemSellIn = items.get(i).getSellIn(); + currentItemName = items.get(i).getName(); - if (items.get(i).getSellIn() < 6) - { - if (items.get(i).getQuality() < 50) - { - items.get(i).setQuality(items.get(i).getQuality() + 1); - } - } - } - } - } + updateSpecialItemQualities(); + updateSellIn(); + + //if (!isSpecialItemName(currentItemName)) + updateItemQualities(); + + items.get(i).setQuality(currentItemQuality); + items.get(i).setSellIn(currentItemSellIn); + } + } + + private void updateSpecialItemQualities() { + if ((AGED_BRIE_NAME.equals(currentItemName))) { + incrementQuality(); + } else if (BACKSTAGE_PASSES_NAME.equals(currentItemName)) { + incrementQuality(); + + if (currentItemSellIn < 11) + incrementQuality(); - if (!"Sulfuras, Hand of Ragnaros".equals(items.get(i).getName())) - { - items.get(i).setSellIn(items.get(i).getSellIn() - 1); - } + if (currentItemSellIn < 6) + incrementQuality(); + } else { + if (!SULFURAS_NAME.equals(currentItemName)) + decrementQuality(); + } + } - if (items.get(i).getSellIn() < 0) + private void updateSellIn() { + if (!SULFURAS_NAME.equals(currentItemName)) + currentItemSellIn--; + } + + private void updateItemQualities() { + if (currentItemSellIn < 0) + { + if (!AGED_BRIE_NAME.equals(currentItemName)) { - if (!"Aged Brie".equals(items.get(i).getName())) + if (!BACKSTAGE_PASSES_NAME.equals(currentItemName)) { - if (!"Backstage passes to a TAFKAL80ETC concert".equals(items.get(i).getName())) + if (currentItemQuality > 0) { - if (items.get(i).getQuality() > 0) + if (!SULFURAS_NAME.equals(currentItemName)) { - if (!"Sulfuras, Hand of Ragnaros".equals(items.get(i).getName())) - { - items.get(i).setQuality(items.get(i).getQuality() - 1); - } + currentItemQuality--; } } - 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); - } + currentItemQuality = currentItemQuality - currentItemQuality; + } + } + else + { + if (currentItemQuality < 50) + { + currentItemQuality++; } } } } + + private void incrementQuality() { + if (currentItemQuality < 50) + currentItemQuality++; + } + + private void decrementQuality() { + if (currentItemQuality > 0) + currentItemQuality--; + } + + private boolean isSpecialItemName(String nameToTest) { + for (int i = 0; i < specialItemNames.length; i++) { + if (nameToTest.equals(specialItemNames[i])) + return true; + } + + return false; + } } diff --git a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java index 04a5d2d..88f5a75 100644 --- a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java +++ b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java @@ -1,12 +1,274 @@ package fi.oulu.tol.sqat.tests; - import static org.junit.Assert.*; +import java.util.ArrayList; +import java.util.List; import org.junit.Test; - +import fi.oulu.tol.sqat.GildedRose; +import fi.oulu.tol.sqat.Item; public class GildedRoseTest { + GildedRose store = new GildedRose(); + // Test Aged Brie + + @Test + public void testUpdateEndOfDay_AgedBrie_Quality_2_10() { + // Arrange + store.addItem(new Item("Aged Brie", 2, 10) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality of Aged Brie increases"; + assertEquals(failMessage, 11,quality); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_Quality_10_50() { + // Arrange + store.addItem(new Item("Aged Brie", 10, 50) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "The Quality of an item is never more than 50"; + assertEquals(failMessage, 50, quality); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_Quality_0_10() { + // Arrange + store.addItem(new Item("Aged Brie", 0, 10) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "The Quality of Aged Brie increases twice after SellIn date has passed"; + assertEquals(failMessage, 12, quality); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_Quality_0_50() { + // Arrange + store.addItem(new Item("Aged Brie", 0, 50) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "The Quality of Aged Brie is never more than 50 increases twice after SellIn date has passed"; + assertEquals(failMessage, 50, quality); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_Quality_Minus1_20() { + // Arrange + store.addItem(new Item("Aged Brie", -1, 20) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "The Quality of Aged Brie increases twice after SellIn date has passed"; + assertEquals(failMessage, 22, quality); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_SellIn_2_10() { + // Arrange + store.addItem(new Item("Aged Brie", 2, 10) ); + // Act + store.updateEndOfDay(); + // Assert + int sellIn = store.getItems().get(0).getSellIn(); + String failMessage = "SellIn date decreases"; + assertEquals(failMessage, 1, sellIn); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_SellIn_1_10() { + // Arrange + store.addItem(new Item("Aged Brie", 1, 10) ); + // Act + store.updateEndOfDay(); + // Assert + int sellIn = store.getItems().get(0).getSellIn(); + String failMessage = "SellIn date decreases"; + assertEquals(failMessage, 0, sellIn); + } + + @Test + public void testUpdateEndOfDay_AgedBrie_SellIn_0_10() { + // Arrange + store.addItem(new Item("Aged Brie", 0, 10) ); + // Act + store.updateEndOfDay(); + // Assert + int sellIn = store.getItems().get(0).getSellIn(); + String failMessage = "SellIn date decreases"; + assertEquals(failMessage, -1, sellIn); + } + + // Test Sulfuras + @Test + public void testUpdateEndOfDay_Sulfuras_Quality_0_80() { + // Arrange + store.addItem(new Item("Sulfuras, Hand of Ragnaros", 0, 80) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality of Sulfuras is 80 and never alters"; + assertEquals(failMessage, 80, quality); + } + + @Test + public void testUpdateEndOfDay_Sulfuras_SellIn_5_80() { + // Arrange + store.addItem(new Item("Sulfuras, Hand of Ragnaros", 5, 80) ); + // Act + store.updateEndOfDay(); + // Assert + int sellIn = store.getItems().get(0).getSellIn(); + String failMessage = "Sulfuras, being a legendary item, never has to be sold"; + assertEquals(failMessage, 5, sellIn); + } + + @Test + public void testUpdateEndOfDay_Sulfuras_SellIn_0_80() { + // Arrange + store.addItem(new Item("Sulfuras, Hand of Ragnaros", 0, 80) ); + // Act + store.updateEndOfDay(); + // Assert + int sellIn = store.getItems().get(0).getSellIn(); + String failMessage = "Sulfuras, being a legendary item, never has to be sold"; + assertEquals(failMessage, 0, sellIn); + } + + // Test Backstage pass + @Test + public void testUpdateEndOfDay_Backstage_Quality_15_20() { + // Arrange + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 15, 20) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality of Backstage pass increases by 1 when there are more than 10 days"; + assertEquals(failMessage, 21, quality); + } + + @Test + public void testUpdateEndOfDay_Backstage_Quality_10_20() { + // Arrange + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 10, 20) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality of Backstage pass increases by 2 when there are 10 or less days"; + assertEquals(failMessage, 22, quality); + } + + @Test + public void testUpdateEndOfDay_Backstage_Quality_8_20() { + // Arrange + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 8, 20) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality of Backstage pass increases by 2 when there are 10 or less days"; + assertEquals(failMessage, 22, quality); + } + + @Test + public void testUpdateEndOfDay_Backstage_Quality_5_20() { + // Arrange + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 5, 20) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality of Backstage pass increases by 3 when there are 5 or less days"; + assertEquals(failMessage, 23, quality); + } + + @Test + public void testUpdateEndOfDay_Backstage_Quality_3_20() { + // Arrange + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 3, 20) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality of Backstage pass increases by 3 when there are 5 or less days"; + assertEquals(failMessage, 23, quality); + } + + @Test + public void testUpdateEndOfDay_Backstage_Quality_0_20() { + // Arrange + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 0, 20) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality of Backstage drops to 0 after the concert"; + assertEquals(failMessage, 0, quality); + } + + @Test + public void testUpdateEndOfDay_Backstage_Quality_15_50() { + // Arrange + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 15, 50) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "The Quality of an item is never more than 50"; + assertEquals(failMessage, 50, quality); + } + + @Test + public void testUpdateEndOfDay_Backstage_SellIn_5_10() { + // Arrange + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 5, 10) ); + // Act + store.updateEndOfDay(); + // Assert + int sellIn = store.getItems().get(0).getSellIn(); + String failMessage = "The SellIn value should decrease by 1"; + assertEquals(failMessage, 4, sellIn); + } + + // Test Elixir + @Test + public void testUpdateEndOfDay_Elixir_Quality_2_7() { + // Arrange + store.addItem(new Item("Elixir of the Mongoose", 2, 7) ); + // Act + store.updateEndOfDay(); + // Assert + int quality = store.getItems().get(0).getQuality(); + String failMessage = "Quality decreases by 1"; + assertEquals(failMessage, 6,quality); + } @Test - public void testTheTruth() { - assertTrue(true); + public void testUpdateEndOfDay_SellIn_Quality_2_7() { + // Arrange + store.addItem(new Item("Elixir of the Mongoose", 2, 7) ); + // Act + store.updateEndOfDay(); + // Assert + int sellIn = store.getItems().get(0).getSellIn(); + String failMessage = "SelIn decreases by 1"; + assertEquals(failMessage, 1, sellIn); } -} +} \ No newline at end of file From 4b94b72b2c7210da2063a882672fceed54b80eb4 Mon Sep 17 00:00:00 2001 From: pottumuusi Date: Wed, 19 Oct 2016 01:04:30 +0300 Subject: [PATCH 2/3] Finished refactoring --- bin/fi/oulu/tol/sqat/GildedRose.class | Bin 3613 -> 3314 bytes src/fi/oulu/tol/sqat/GildedRose.java | 76 +++++++++----------------- 2 files changed, 26 insertions(+), 50 deletions(-) diff --git a/bin/fi/oulu/tol/sqat/GildedRose.class b/bin/fi/oulu/tol/sqat/GildedRose.class index ec2f3b8acd7e9f0094a9720387437f857cc63720..55b7412b77f1bc075bf912393058979187286db8 100644 GIT binary patch literal 3314 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 q57`l)SVu-|H0Ma-;@8%D 0) - { - if (!SULFURAS_NAME.equals(currentItemName)) - { - currentItemQuality--; - } - } - } - else - { - currentItemQuality = currentItemQuality - currentItemQuality; - } - } - else - { - if (currentItemQuality < 50) - { - currentItemQuality++; - } - } + private void updateItemQualitiesAfterSellIn() { + if (AGED_BRIE_NAME.equals(currentItemName)) { + incrementQuality(); + return; + } + + if (BACKSTAGE_PASSES_NAME.equals(currentItemName)) { + currentItemQuality = currentItemQuality - currentItemQuality; + return; } + + if (!SULFURAS_NAME.equals(currentItemName)) + decrementQuality(); } private void incrementQuality() { @@ -136,14 +121,5 @@ private void decrementQuality() { if (currentItemQuality > 0) currentItemQuality--; } - - private boolean isSpecialItemName(String nameToTest) { - for (int i = 0; i < specialItemNames.length; i++) { - if (nameToTest.equals(specialItemNames[i])) - return true; - } - - return false; - } } From c9c47124b3af43ca0a30f8629ad4eafcd4c38d42 Mon Sep 17 00:00:00 2001 From: pottumuusi Date: Wed, 19 Oct 2016 20:16:17 +0300 Subject: [PATCH 3/3] Changed control flow to be more sensible. --- bin/fi/oulu/tol/sqat/GildedRose.class | Bin 3314 -> 3721 bytes src/fi/oulu/tol/sqat/GildedRose.java | 86 ++++++++++++++------------ 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/bin/fi/oulu/tol/sqat/GildedRose.class b/bin/fi/oulu/tol/sqat/GildedRose.class index 55b7412b77f1bc075bf912393058979187286db8..5d6fb9c60e46448e089ab5339503043355c3417a 100644 GIT binary patch delta 1367 zcmZ8hU2has7=F%9cb45brQ0R7h1w<*M7rCgCTNVJ4J`y{1ln5A6x1-?PPYrQOWE0i z1!O3nf)pvsH>lB@y^xyp67W#X8&G!u`Th( ztEbNaY`{-#%DQ_*ROV=5YF)WlOHbR5eGWqvPlRb@8&nY#{^3Z}i( ziD`v)O`@W5lKEn`WEHI9f89{Q8xl8hOF%kaUp;~`0d0NfUKO5F$6bkgsGQQ9wW4*j zGOI6$hKJi???jgW2@MgB=!EuB6@|*Vc(3~#*0wHSB!b`3lYRuVhVuWe#%uWctPrid zUchmIpZ}SiCx(V~Jkv<>JKfEIj+3^sCBAES@wR&2rudSNqu9GmerGvDy}F^mCv z5xh5zlW3=Amu?)9MMT9*m!T zRYhke)!;p+s%Xo&sV2{9siHCc1m9M%oaVbKVl-ElI@FFBaX!Hyc49Yn;d4Ii!w|kA z?TdBtD7QBD!LjF$_c3UwCul5(bqF(7LK6Npj8ccm0k>JGVreLLK9Kd42%{ zU!sA8OH|1a75mh{zHos9^ci{zyvqlUr?n@zJ?}9+!g$j7#p814*v9ds?t3BTb(|w$ zvg}b7mPI|r(TEAG;#k{pkSc7hNg<@BE2Jh0tv)HKfS*aAX9KO$6QzVZs=|m`y$)`k zn&u=+JRAax24E3XD(}i68LYwzCf}>f$pJUGXygU|ZUT-TdJ0WXw?2mXnk3*j$^CXc z4u603fP?wC@2zh{eU-1Ve7%Nh(0xSf9%v5;?SC+O#;fIYNU;$rpTmeV;RmnEAO8hV CK>F7J delta 894 zcmaKq%}*0i6vfYLnO25}&>FM^fmjXHnuw7^qgEnlOe-QO_z^TFjxr_GT1q?R!>=k- z5ERAC3gbpME=d(@aADlI@qh3yaAVwPqEXM#ij7e>Z*tFl_vHNUo046NmAGbg%h@f=RNxRY5;x5EN@GhFQ%>9x zsE%qQT1!le547|e$-(%5#595e4tgh7h-NZqKUVwFC>Wy5h+S zVxe#pi=4a0pD7GKTxs9=4YLcCbPo~f2&&Nu7mlHx`8E;3j~;BtaUz@`;wc1h8bO@F zQJh6Hr(_{nk;kHNLUC=BsAA~UDnbwUCd?126qDu`wLWu>gBq7{zQklhi3x98o8k{w z+`$9OfbN0+?ZD;l<5ODC+5ZBXh5QfVU=zw|rZYu^$OA-<68R!=V|>dY;wFeYT#_zO ll1_o$Rcisxnyr;#X;CxXItp{ 0) currentItemQuality--; } + + private void setQuality(int newQuality) { + currentItemQuality = newQuality; + } + + private boolean sellInPassed() { + return currentItemSellIn < 0; + } }