From 453d16867b9885f105c978499e6d8f67f4c3985e Mon Sep 17 00:00:00 2001 From: heimonsa Date: Fri, 9 Sep 2016 15:54:15 +0300 Subject: [PATCH 1/2] Project finnished. --- .../oulu/tol/sqat/tests/GildedRoseTest.java | 114 +++++++++++++++++- 1 file changed, 108 insertions(+), 6 deletions(-) diff --git a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java index 7aceb2e..ff149cd 100644 --- a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java +++ b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.List; +import org.junit.Before; import org.junit.Test; import fi.oulu.tol.sqat.GildedRose; @@ -19,24 +20,125 @@ public class GildedRoseTest { // Item("Sulfuras, Hand of Ragnaros", 0, 80)); // Item("Backstage passes to a TAFKAL80ETC concert", 15, 20)); // Item("Conjured Mana Cake", 3, 6)); - + public static GildedRose store; + + + @Before + public void SetUp(){ + store = new GildedRose(); + store.addItem(new Item("+5 Dexterity Vest", 10, 20)); + store.addItem(new Item("Aged Brie", 2, 10)); + store.addItem(new Item("Elixir of the Mongoose", 5, 12)); + store.addItem(new Item("Sulfuras, Hand of Ragnaros", 0, 80)); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20)); + store.addItem(new Item("Conjured Mana Cake", 3, 6)); + } + @Test public void testUpdateEndOfDay_AgedBrie_Quality_10_11() { // Arrange - GildedRose store = new GildedRose(); - store.addItem(new Item("Aged Brie", 2, 10) ); + //GildedRose store = new GildedRose(); // Act store.updateEndOfDay(); // Assert List items = store.getItems(); - Item itemBrie = items.get(0); + Item itemBrie = items.get(1); assertEquals(11, itemBrie.getQuality()); } + @Test + public void Test_manacake_quality_after_2_updates(){ + for (int i=0; i<2; i++){ + store.updateEndOfDay(); + } + Item cake = store.getItems().get(5); + assertEquals(4, cake.getQuality()); + } + @Test + public void Test_manacake_selling_after_2_updates(){ + for (int i=0; i<2; i++){ + store.updateEndOfDay(); + } + Item cake = store.getItems().get(5); + assertEquals(1, cake.getSellIn()); + } @Test - public void testUpdateEndOfDay() { - fail("Test not implemented"); + public void testUpdateEndOfDay_sulfurs() { + //GildedRose store = new GildedRose(); + + + store.updateEndOfDay(); + assertEquals(80, store.getItems().get(3).getQuality()); + } + @Test + public void Test_Dexterity_vest_quality_after_1_update(){ + store.updateEndOfDay(); + Item vest = store.getItems().get(0); + assertEquals(19, vest.getQuality()); + } + @Test + public void Test_Dexterity_vest_Sellin_after_1_update(){ + store.updateEndOfDay(); + Item vest = store.getItems().get(0); + assertEquals(9, vest.getSellIn()); + } + @Test + public void Test_aged_brie_quality_after_50_updates_should_be_50(){ + for (int i=0; i<50; i++){ + store.updateEndOfDay(); + } + Item brie = store.getItems().get(1); + assertEquals(50, brie.getQuality()); + } + @Test + public void Test_aged_brie_selling_after_50_updates_should_be_50(){ + for (int i=0; i<50; i++){ + store.updateEndOfDay(); + } + Item brie = store.getItems().get(1); + assertEquals(-48, brie.getSellIn()); + } + @Test + public void Test_Mana_cake_quality_after_10_updates_should_be_zero(){ + for (int i=0; i<10; i++){ + store.updateEndOfDay(); + } + Item cake = store.getItems().get(5); + assertEquals(0, cake.getQuality()); + } + @Test + public void Test_backstage_pass_value_when_time_is_droped_to_zero(){ + for (int i=0; i<16; i++){ + store.updateEndOfDay(); + } + Item pass = store.getItems().get(4); + assertEquals(0, pass.getQuality()); + } + @Test + public void Test_backstage_pass_double_value_increase_when_time_is_lowered_bellow_10(){ + for (int i=0; i<6; i++){ + store.updateEndOfDay(); + } + Item pass = store.getItems().get(4); + assertEquals(27, pass.getQuality()); + } + @Test + public void Test_if_quality_drops_by_2_when_time_has_passed(){ + for (int i=0; i<7; i++){ + store.updateEndOfDay(); + } + Item elixir = store.getItems().get(2); + + assertEquals(3, elixir.getQuality()); + } + @Test + public void Test_if_backstage_pass_quality_increses_by_3_when_3_days_left(){ + for (int i=0; i<12; i++){ + store.updateEndOfDay(); + } + Item pass = store.getItems().get(4); + assertEquals(41, pass.getQuality()); } } From 0fd1744896f70b06a3a47a5bfca410a32a30aa87 Mon Sep 17 00:00:00 2001 From: Samuli Heimonen Date: Wed, 19 Oct 2016 22:44:21 +0300 Subject: [PATCH 2/2] Assignment completed. --- bin/fi/oulu/tol/sqat/GildedRose.class | Bin 2380 -> 3280 bytes bin/fi/oulu/tol/sqat/Item.class | Bin 1034 -> 1034 bytes .../oulu/tol/sqat/tests/GildedRoseTest.class | Bin 504 -> 4144 bytes src/fi/oulu/tol/sqat/GildedRose.java | 153 +++++++++++------- 4 files changed, 93 insertions(+), 60 deletions(-) diff --git a/bin/fi/oulu/tol/sqat/GildedRose.class b/bin/fi/oulu/tol/sqat/GildedRose.class index f244eba73874c91f18244a292b7f88cc3b4b5f80..9fa928ae4166458276690702925b7bf5a3c8f079 100644 GIT binary patch literal 3280 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 diff --git a/bin/fi/oulu/tol/sqat/Item.class b/bin/fi/oulu/tol/sqat/Item.class index 478a73984862181a0a6b22a57fca5a1788d6a3f6..86c608e1a130d3506ba1bc783f500e2d34d0181d 100644 GIT binary patch delta 30 gcmeC;=;GLLiBXV&ft7)c0R-3?I6&0q$BgPs08#Y>lK=n! delta 30 jcmeC;=;GLLiBXV|ft7)cfq{XMft`T^L~nk~sLlicQXd4C diff --git a/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class b/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class index e44e81ce2b232358b6069c215dc740c0984c2b8c..e311b9b05bc4d00fc2e83df92568e160843114a2 100644 GIT binary patch literal 4144 zcmbuB-%}gc701695E8OtD+UwC4zcXS4FYU|Z4##tCm7>cjxdgeX~`trF4C1)yzIj6 z%C<6XXWU8JiIcW}L!SDaWX8^qnWWEs>VMNbWa@tJ?nOh z{^#580h~uOi5`K|HKSlR%tpbp&4RnFdj(Iro?Cd^Fsrh9%XZ~5KPS;AkloPl>IGA` z>V>7X4O#I760T=EQedRCM`lN0MxcMzung~#K<{XNMWAoquF5oeaUg>vQUZrch9z$_ zHrJ%Htgo3=JY2FXy1Ak|hWZ@d?DN(QSKyVs(c+*PH&K?}?Ja@lZ#68>*pw@VYfx^^ zvTRTH4BMg_BRTcLMuUKb%d*CNW|9~ZIQ~CUN@EZQ1|aZU1_|^h@w~v1J?o2}+)UxP zz_a7ixhwL%Cmq9U=2mEE8b>jrl7EpJqoo~Z%bsIc^_gNZzoLTVGB}A-0!h7ERdNEy zM)zi~p3LM|Qg~TlV6HB!xyz0rQ}~6z@PcXFH=LYZ%X#ZEw`f~+n?+4wlv3q}S!+1D zJCVDlTUE8@mR`4X$97W~6UblID|cK^uglz)?z+;=d3H|EEzezjXRdT{a$$KsSFx>% zbi5QMXym+YZ8RK4U(_uhQtgV~)D)ot)ZT6ACLPhHCbg+4 zHdv$*s_SNy1Ctp{sTMid=nzql&S!7|(*miw^ppjvn4|f?%!X%}g_1#$19%OuCvlMy zzRm3?8T=CLkzVd*^+t=~&PapLBseMR=YXo$n;E=?Ie|1cgyeoh7t@%>LK0V)!A>j9 z(J;r$;40o0$SC_9Z(*AWlQJ=S{kocigb`3@cQZ35^+=h-{^(M07PoUqnp>?w*=@pX z7l}*E|Fp7N+hoZqteB<{RZa97+f_TK1-82_CwLABgMUR%v05+iOxa_bEb3d~knYlR zrD?LGck3xbf0ewa`)Z=feZd7jzU#iQ?1(>Yr)E_uElMy+6^A2p^9Nu9I3mzhdJ#$3)rvf%;(i1Ui0hAzXKHbE_gRF_893ec+rClU;F)= z2k{KAGrnqd8?HLc_W}O>5bkMyhr!jyIPw*Szr^r&IJ$cHST>yl&O7<+q1{5`{n`Ft(GL760s=1}jS>F7$Q(~#4mp(R zMh&NMA1_4`Yqk?R(~;QOFtG>d^Bp|-H44Okgmb0wzHjhq5B`Cpi$j>5c!WzIe~rru zpx1YAm{tSh{B)KO1suU7!%z7^bAebGG>zwQ4Mn`(2H)7E~ zC0Y+xPxQ|I9RuY1NQmQ!&!7AlaHd+6r6DYh@1Z>Ax5EXpPE-8?>-rigFOvK92WD(v?Xnu*}%}f9xkDM1mi0$3lJ*LXPbRnI_^&r;!2TED_(J_AC+KWcas` zXFXMG24;@MAg1FHS7Q;Eh$tvGLJNoRUf^DT%e{zk!EhY(OL&d1MRwWsNH2|qBm(cp z2GT+=PPBWew-tpo`XE}PAk<-Q02UeQ2LE+fVl&_L!wvg&KM{r-WJNT;A_Bkt8G-ev z^U=U%23}_1+YG$2PvA;y;LpO0&qS-AJ@@&Oe+MqNCyDu2qxlDu6g0pp8{j?4ukzG+ zpF{isCh(g`1Dt6$z@e~5PtuWET#wfOZ_4$kSy4)zlxvjNNm(VOBxUXAQEtRiJ`BAa z@9;9+_Ht+52f8_FkWq;nWHiaRi7{9a#_<>@yNuGEr(n#s8I$dP@5;DMMu+0tWc0|` zAmiPA8O^wAZ^kml_hf$z;}EQFPBuyTA?2H-{2eKO&uaf6LK)wav6Nd+L78k*CfZI8 zVY?gU15*Bx@()P)5h?#f%0KT*>Bf2KJq2Z^O}SI=AvC&CJ|yL*lz&LdzmW2;r2N~y Ol(Amk<8j%8`~L;}+eerH literal 504 zcma)2Jx>Bb6r4Q{PtQ{j{GzllqJ>*fVoZpMHWy9sLSeVS3QLaNc)RESveH=i1N>3O zw@5-vENtHF?7U3o&F9zq2Y?P*5dwzeN5xH&qw=vF_l=bq@dzP9 zeI}j-&xM}wyWvcZ9K+g$(#l;jRNAKlhVaUaWsC|o5>&CqP)n7Tx8-~&i%bl2$iqcIPTK!TxHJ1Zr6}k4bHcmKYG?~^@Q%v}* zq@3KJ(v8u;ZiFUDE2U?xEL?&;>@&n-!N{BfhwTS{T6}NHVkEDXKce}&opWCdjzBd~ zvp_&EI-h1lj1w}#>e(ySUlwvq)60Ht(oB992)BqaY}0>$+H$K-=#4t0ER4c8?5vDp RS_NW+Wc8QX0jU8FzX9QBYz6=T diff --git a/src/fi/oulu/tol/sqat/GildedRose.java b/src/fi/oulu/tol/sqat/GildedRose.java index 24741c6..a02e99f 100644 --- a/src/fi/oulu/tol/sqat/GildedRose.java +++ b/src/fi/oulu/tol/sqat/GildedRose.java @@ -19,80 +19,113 @@ public void addItem(Item item) { public GildedRose() { items = new ArrayList(); } + private static boolean updateQuality(int index, int quantity){ + if (items.size() > index){ + Item item = items.get(index); + int quality = item.getQuality(); + item.setQuality(quality + quantity); + return true; + } + return false; + + } + private static boolean isNotBrie(int i){ + return !itemMatches(i, "Aged Brie"); + + } + private static boolean isNotBackstagePass(int i){ + return !isBackstagePass(i); + } + private static boolean isBackstagePass(int i) { + return itemMatches(i,"Backstage passes to a TAFKAL80ETC concert"); + } + private static boolean isNotSulfuras(int i){ + return !itemMatches(i, "Sulfuras, Hand of Ragnaros"); + + } + private static boolean itemMatches(int i, String name){ + Item item = getItem(i); + if (item.getName().contentEquals(name)) return true; + return false; + } + private static int getQuality(int i){ + Item item = getItem(i); + return item.getQuality(); + } + private static void setQuality(int i, int quality){ + Item item = getItem(i); + item.setQuality(quality); + } + private static Item getItem(int i){ + return items.get(i); + } + private static int getSellIn(int i){ + return getItem(i).getSellIn(); + } + private static void updateSellIn(int i, int quantity){ + Item item = getItem(i); + int current = item.getSellIn(); + item.setSellIn(current + quantity); + } public static 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); - } + for (int i = 0; i < items.size(); i++){ + if (isNotBrie(i) && isNotBackstagePass(i)){ + if (getQuality(i) > 0 && isNotSulfuras(i)){ + updateQuality(i, -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); - } - } - - if (items.get(i).getSellIn() < 6) - { - if (items.get(i).getQuality() < 50) - { - items.get(i).setQuality(items.get(i).getQuality() + 1); - } - } + else{ + if (getQuality(i) < 50){ + updateQuality(i, 1); + if (isBackstagePass(i)){ + updateBackstagePass(i); } } } - - if (!"Sulfuras, Hand of Ragnaros".equals(items.get(i).getName())) - { - items.get(i).setSellIn(items.get(i).getSellIn() - 1); + if (isNotSulfuras(i)){ + updateSellIn(i, -1); } + if (getSellIn(i) < 0){ + updateSellInLessThanZero(i); + } + } + } + private static void updateBackstagePass(int i) { + if (getSellIn(i) < 11) + { + updateQuality(i, 1); + } + if (getSellIn(i) < 6) + { + updateQuality(i, 1); + } + } - if (items.get(i).getSellIn() < 0) + private static void updateSellInLessThanZero(int i){ + if (isNotBrie(i)) + { + if (isNotBackstagePass(i)) { - 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 (getQuality(i) > 0 && isNotSulfuras(i)) { - if (items.get(i).getQuality() < 50) - { - items.get(i).setQuality(items.get(i).getQuality() + 1); - } + updateQuality(i, -1); } } + else + { + setQuality(i, 0); + } + } + else + { + if (getQuality(i) < 50) + { + updateQuality(i, 1); + } } } + + }