From 93e3ed90dcfcc7d1b5e4a92bdccbe9fbd46e6c38 Mon Sep 17 00:00:00 2001 From: jkorpeli Date: Fri, 9 Sep 2016 16:41:03 +0300 Subject: [PATCH 1/2] Project Finished --- bin/.gitignore | 1 + bin/fi/oulu/tol/sqat/GildedRose.class | Bin 2380 -> 2131 bytes bin/fi/oulu/tol/sqat/Item.class | Bin 1034 -> 1034 bytes .../oulu/tol/sqat/tests/GildedRoseTest.class | Bin 504 -> 2968 bytes .../oulu/tol/sqat/tests/GildedRoseTest.java | 77 ++++++++++++++++++ 5 files changed, 78 insertions(+) create mode 100644 bin/.gitignore 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..b904cd2a2f60ff47b023e9e0b84ddbe56eddc526 100644 GIT binary patch literal 2131 zcmbVMOK%%h6#nkmi60qa*C}amn|9Jbu$vHv7D7{p7RPxuu0!g`sD(vu?6Es#Vkh$e zr9wgic3q&h3q*w~5fUv69~hLv6^Zw z!ISZ;q=)9k*i~4gBU|X#spp`g$N?cH>hie zpEkfj$ytV0DJO$8k8k?$M$@>}d@?45I^F7)&2`g{vou&UyzrrE@v^FHa??~z#i}Y? zSxe0?r!r?J=GM|mp;{@Z25of==VT-?%@8CCtAwFh+s=?J`9aeb&Dna%Hn=&aEb>ZG zsg{(>oJQEFnj-lf87a(Avgu0pk`j60os}^spaTS*Q+0i*BCHEC7DY~ga%xr~=0zFH zBGzkaH%SJj(X&M3owH~&m-uFVeuKHHZ4}gbO-y*GF=gYTkr<)_;i1z@gv6}1L{Kl*T({M3E))4wR2CM=2GJ(N4Tha(c+YZMPUt}t;tLkNGv~>qNor&CX7jmx~-MQ{IyVn%b@>y%=bLssBSd`HAKzG2me}62FiN`sk zH|Y?7?u#x&=~6sK7tC>d00p057@uMUcM-!wx|jFqrg?&K{DBD;p__9Alk6Pbj#qJk zZ6U>OW0rk~dG;8K>{nc5zazu`L{^GoRT{*aw2Zuz#T98C?@OOyK)Q`<|D7I5`Vtvj iA|6?K`VshxZju9RAK=ab7A6mHYvPPJm@DL!@b16uzSTPb literal 2380 zcmbVNOK%fb6#nkm@r!{N=K&3cPD%qdq?kuT00*cO@-R3F!NF+)6mIMrGhyNhGvk(^ zN|oB~SX6qLxWS8s_~`Vk$TZGOB}Lr7-9rUq2(z}r-}St4#) zD#5xLKTnYk#S1={2w)e3e{^_oD4A*xLBqR#v@;NyMfCI7;eB7DQg_wR91{F`~NP&~NFMX3l8N zb)gNL#ezw)3*ZDpTc%{plq_y{YD2u3mp&IbNy{?r0D4GVy*zirc6dQ(^W3(DtvRN~ zwejS@xn%m-!T#|+EoT;U!g2y2QAPU9;w-5$uMP7e*ZTMk5h8JYs3IvPvbi*$=Z+XF zaf1jUEpV$ql4+_V1xZ4`iUAB#!v!IaJesOX-8Cf%NoY#NS)8N8B)<_pN1APpx?QX4 z3Sk(devH&=tE@Z~=Owc~ag$23WzGvKG8ktFQO?zRX=YN=m{l=>kH~1dj9#iQE3H#1 zF3Hd!g=U0dq>2)~qT*v26Qr05DqFm!f=geot>31)nNClNh{`y``!Jucj$0^WmaLo@ z(B(ijuFcZ{DG;<1#U8qBs31AS^!C%2f&jeq1PNu>L`Vm{-zGY%X7r#1W7NnDw&63nlNQm2Z|DM&990^=k6!eZ8zyO28up}#aAHfj z>q$IRzKnEHKW$HOM!|20E@NmJ=?9pJB>7pDE9*Plt96|WZ(2fkEjA|8?{;JE_3QMt*ksuEhI#6e@_*Y; zN>VPb+x~m}QU7$ltw+NHY&ab()i30Zdn5OH?R2iYVfUI`)_qov^Nsla3apK?J;haq zAOHDOs@+qb_S@J+>vp;*cGJI;4)kL$E+a-N@5JYb;~oy-F3&89eH|M5&WC(q!lcz;O+_rkFMa(!6OPyk|3*sng0M*izc}M 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..d505bed23ef1801647a0a8456353ebccbf24e30e 100644 GIT binary patch literal 2968 zcmb7_ZC4Xl5Xb+Q09it;F-A~PyI|Eozyy2%M5*CPqEQeKwVoO`$xT???BebXM?OG5 zOi%l!Zv^W(J$>B|)zi7zO#(^wSo2~xyL0c%{Qfg{_MdRD$SYxK`4WR@JB` zg=Hk251L2{?g%IONH>bSxM4Ybi=Kn%W{B)+`&!b_%yM!qzsn1Pq4&OS>SCTD5Fg!U z=w7snJcI!H!stOS!|AMU@@Lgbp4(em-rx+;tX0sAZOzu@v-h%F?C1`|jqLwQW{zP( zCi!Bos0qGo7S~Ek+CgqXE4+7vR_5!P<21-r;F7|%9U-W0ZOmgh2=(QO&>QW%$Ug(0XF zi!uzu#dy17(lY06P{SCORrs!YLMiF%Y8XG@8iP{iLhc|PqVZ8Tc2(#`GOLpk{kVbA zAmZermQ}+N#uyS*b=plL#53N`W4$q_V1nU#zFw5N2p`Ae43}zX^QfON&%OFJ5NzBKOWux{u z!m_CwFSqO0EHm|4kM3#{X;p^dj5IZBEK5uQ+uha5!7y;L?GN_qt>3EoeIFO|-`e%J z>Y~bC>~LJtWnNscb)NGy&P}FrlamS_G4x5BDvfm?{ZjiUQspd(5_d&ZY6{RQhA}t5 z((&`SZ0H|#d#$v!!=GAa*`iUByOWz%uugKgM%5~*Vu!1ByMhgB>iUy*)w>Bn}Qc*Wp~2Ru}ky2r0Iq{(CtG=o|@36RkaIz zMVEv8Z1bQRa0pm9S-wRV&h`bVDtx(4YvNq0u~p0PtHf6$*Ugy<^Gz$x_8HS8{+ z`zd;&i9^;doc2~l=q?@oPH(&Ee(wv;ygtO)Y~l-IucHHzzDVp4=RaZS2;V0@VdUv} z;4`jw;cvvAMaN^fIq?apUyg8FMi11YU#WS#2n9p9fGfB}=?`NB!VcKyY4=BTN%5)w-lFx^I{A5n-H@Nh)EAZZ9pX2AY7XZvD^{jR}W(PB*aQjB;;F(7*;)m$E|gk zC4_r~@PH5=5<;2~7H}7f#}K9)2+0P*pjU?k*`A)Lg9>SL5uSBK@TtR^5()YuM4!j7 z=~stUg2)g=mLS#$Vx1tKQyn&rL42(aFIpgEqqz{<-vaS65Lx$!cpbwVKZutE@roec z5X4)8$PvUlg3!JJ;%8row;dsTnkg3v1^gkjK0kyKA(RPWmk=t1U=o5w&9rw6;cLxQ vXhCQ;Q?Vn$Z949ZMnG?rAEDeFav>T7K$WK9el5B?=z6_YW_VB5E*Sp-@-}iT delta 165 zcmbOs{)3t8)W2Q(7#J9g86+oi?dIhvNi8l3$w&<;DlN&F_*vhGi$RD%gq=Z{kwGB8 zC|y6RG%vG6-?6wjwWx%LL6kv^k%21_%meC3Wn^H{h?;E9X28faIfG4$k!|v1Hf=j& w21X!cU|?n0!63L1$Y5gN0+L)n8bq=%a04L&0}n(Ikmd#Q7#YNYBol)K0NI-#KmY&$ diff --git a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java index 7aceb2e..76d30b8 100644 --- a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java +++ b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java @@ -19,7 +19,38 @@ 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)); + + @Test + public void testUpdateEndOfDay_BackstagePassQualityIncby2() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 9, 20)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBackstagepass = items.get(0); + assertEquals("backstage passes quality increase by 2", 22, itemBackstagepass.getQuality()); + } + + @Test + public void testUpdateEndOfDay_BackstagePassQualityIncby3() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 4, 20)); + + // Act + store.updateEndOfDay(); + + // Assert + List items = store.getItems(); + Item itemBackstagepass = items.get(0); + assertEquals("backstage passes quality increase by 2", 23, itemBackstagepass.getQuality()); + } + @Test public void testUpdateEndOfDay_AgedBrie_Quality_10_11() { // Arrange @@ -35,6 +66,52 @@ public void testUpdateEndOfDay_AgedBrie_Quality_10_11() { assertEquals(11, itemBrie.getQuality()); } + @Test + public void testUpDateEndOfDay_ElixirOfTheMongoose_5_7() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Elixir of the Mongoose", 5, 7)); + + // Act + store.updateEndOfDay(); + + //Assert + List items = store.getItems(); + Item itemMongoose = items.get(0); + assertEquals("Mongoose quality incorrect", 6, itemMongoose.getQuality()); + } + + @Test + public void testUpDateEndOfDay_HandOfRagnaros_0_80() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("Sulfuras, Hand of Ragnaros", 0, 80)); + + // Act + store.updateEndOfDay(); + + //Assert + List items = store.getItems(); + Item itemHandOfRagnaros = items.get(0); + assertEquals("hand of ragnaros quality incorrect", 80, itemHandOfRagnaros.getQuality()); + } + + @Test + public void testUpDateEndOfDay_DexterityvestQualityIs0() { + // Arrange + GildedRose store = new GildedRose(); + store.addItem(new Item("+5 Dexterity Vest", 10, 0)); + + // Act + store.updateEndOfDay(); + + //assert + List items = store.getItems(); + Item itemDexterityVest = items.get(0); + assertEquals("dexterity vest quality incorrect", 0, itemDexterityVest.getQuality()); + } + + @Test public void testUpdateEndOfDay() { fail("Test not implemented"); From d1e9529fab06c66538417390fa0a3b276d03707d Mon Sep 17 00:00:00 2001 From: Joni Korpelin Date: Mon, 17 Oct 2016 18:34:40 +0300 Subject: [PATCH 2/2] Project refactored --- bin/fi/oulu/tol/sqat/GildedRose.class | Bin 2131 -> 2029 bytes bin/fi/oulu/tol/sqat/Item.class | Bin 1034 -> 1609 bytes .../oulu/tol/sqat/tests/GildedRoseTest.class | Bin 2968 -> 6277 bytes src/fi/oulu/tol/sqat/GildedRose.java | 84 ++--- src/fi/oulu/tol/sqat/Item.java | 19 ++ .../oulu/tol/sqat/tests/GildedRoseTest.java | 288 ++++++++++++++---- 6 files changed, 284 insertions(+), 107 deletions(-) diff --git a/bin/fi/oulu/tol/sqat/GildedRose.class b/bin/fi/oulu/tol/sqat/GildedRose.class index b904cd2a2f60ff47b023e9e0b84ddbe56eddc526..38d12737dfab9740db7cfeef6b1136ca17e7b89b 100644 GIT binary patch literal 2029 zcmaJ>O?MMj7=9)#O_~fzNok588bl;%p#c>HQ_!?cOKe&oX$w@e-ezvw!RbtynJBn* z;SX@(p~vHb4d=KLJr+@q$Aud`x^m~ngi>t1ctx)Nrs`w-)NI@J^&J3EN0J3+akjw1w+< z8sbBR;qmHJVXQcJrBJO#pliquiQ3x)S(ND&;d#nf%ckQw9Ou0WqM;|VrTLB7$Y*C+4>Q2;{SSBz9fLvrqG-bj9ewBtV?aZ9 zD^;{v$!gpK^scrS*RRVoJhO;;q z#!IYnE5n9W$9cR=%C@}2LE688uw~ryVGQ!F|2hv*+I7 zb(GP=nKSL0D}^VU9?CYU<1(&r(n+lUcx(j+6JSbe*P$>cE_ix0ESN(_~QWy;YwpJ|R|`>kzFv zb+;x*O|>wI*3b^9uHgvxtBvngI}TzGIw*xHg%F_}-6F>*@7*HDY2{MVKN%`tw}-yZD?^giSvgeUl4B>;4SDGewc!jn8TKn@3?1Jo+7_RrD#S>V@-Oazg7 z!;Yu$bbyf#uA$Nn6HDR77~B6C&xCNTl{^}ly2*Th0F!FCHencq46;FT?hd~Sus|P0 zCeil@{oml^jYr6ByHPwSUy23nMH~mV@Jlp-J8^0QPWzT{ir-)4_ZX)&lpo+X5e)|(nu*N>_W zv<2;dk0k+Hp2A@auz6?Lxbu8Uv69~hLv6^Zw z!ISZ;q=)9k*i~4gBU|X#spp`g$N?cH>hie zpEkfj$ytV0DJO$8k8k?$M$@>}d@?45I^F7)&2`g{vou&UyzrrE@v^FHa??~z#i}Y? zSxe0?r!r?J=GM|mp;{@Z25of==VT-?%@8CCtAwFh+s=?J`9aeb&Dna%Hn=&aEb>ZG zsg{(>oJQEFnj-lf87a(Avgu0pk`j60os}^spaTS*Q+0i*BCHEC7DY~ga%xr~=0zFH zBGzkaH%SJj(X&M3owH~&m-uFVeuKHHZ4}gbO-y*GF=gYTkr<)_;i1z@gv6}1L{Kl*T({M3E))4wR2CM=2GJ(N4Tha(c+YZMPUt}t;tLkNGv~>qNor&CX7jmx~-MQ{IyVn%b@>y%=bLssBSd`HAKzG2me}62FiN`sk zH|Y?7?u#x&=~6sK7tC>d00p057@uMUcM-!wx|jFqrg?&K{DBD;p__9Alk6Pbj#qJk zZ6U>OW0rk~dG;8K>{nc5zazu`L{^GoRT{*aw2Zuz#T98C?@OOyK)Q`<|D7I5`Vtvj iA|6?K`VshxZju9RAK=ab7A6mHYvPPJm@DL!@b16uzSTPb diff --git a/bin/fi/oulu/tol/sqat/Item.class b/bin/fi/oulu/tol/sqat/Item.class index 86c608e1a130d3506ba1bc783f500e2d34d0181d..89463b5ef72d25f7c0d73caefe33428355b3fdb4 100644 GIT binary patch delta 614 zcmZ|LJ5Rz;6bJDCZL5*eQb*%!QM4e6f{Te!2OS(36c?Gi(wopwknl)gVs~|QFb+<{ zgoulSyM7hFgYi(>21s3c?&I8F&pG#VUz+;;`|$}Ni~YX(!n%efigm#o;-bYJyV+qd z?CR7>%+JXS$2qSuMC`^{yJpvg#UPuB0)w7!@?ts1Yghc%5ey3@-nbOJSQ1u_x9v)+ z68JH?Dv0`>dmuGC53lTy>2E)5QR*6C(5Sit$g~2Y$?E}3#d?R?r>%q~`l=LxHHzz4 zrj<5I#R^tw$FPNen41u0gP2X9>C*dX;H1Kx_^_P#bU6uflD;#+Y-7jk>WJc~s{!JV zm{EFik5Xl~t693D|EEHXw41~tl(8FNCp3j2rYC7a^O>g*4oHt_y4RSeMd|fkpdGu~ YDGhVTDbJx=W=zv2HI=jsRU;w$2g#sRRR910 delta 36 scmX@f)5XDc>ff$?3=9m$3_2URmN8B?X0l>r-<-!J#l*_Mz{H>p0MyqA?f?J) diff --git a/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class b/bin/fi/oulu/tol/sqat/tests/GildedRoseTest.class index d505bed23ef1801647a0a8456353ebccbf24e30e..6a0513ac00cf780c086f04965d8c76efbffd62d8 100644 GIT binary patch literal 6277 zcmbW4TW}lI8OOilOC-xmEF2R;LSRXo#&+aLvZL7G6zU{SaIi_RjcK4D*3w#Dd%c_N zt{mJ_%C%eyr0ooyPA@MVhPE$sm_h=CVYs}|cDTII=@j}xhw0^oPN#(@F8{MPZLDKy zK{J-Umvg?~`JeyyeaC=G2T)(JC3+&@$FZ+0NLCWm}oUs#a1; zlZK^C<2ptyj8Y5ovYgRmy_`8ZyPyQs^(_ zvWzaCtmwA7q|B(6iijh+ZrHM|8ae`|#tpNaS*T#m87|*&j4oz$Va*E1Y-K4YcA5Oiush(Z zN!meiMjI;UEsxK&GfCal!zf->Y(4@j=q*N3!Q}KcDp%*dNh^ zS(q?R;2vESMIfGJpHhp8B+uChI;CjZm@aXPOY^cNo#1kn{P4-h;rSx3V|3Hn;YG^~ zHZ%egqrNDDPpEpu$`$$p2{$3*>kV`jaMGCjaym&ja9_5;m+qrD-3TLxg(@kY4^hf2 zN5E(?a!#p;Lc{m7^)v4y-h`=&HdiraD=0+S!Vos0fYkRNrKM|Ry~J~9QZDPVX;^WR z8TE!-=)cNsIFyz6>#iGR4fY5U?U;Ch{^)`yV%|ZRW3<xUG^MQQCD~kY zY@hbRaL?HWUXm^9vXQ%iI=MVN5ho3K8$5K~?f}Tr^vI!W zN5+S;qtgeZqM;X2LgJ(|8Vjj){>W-Ql4e(=oOEhl(UHIk(pbh%HJ@`?B-lzI=7o`& zvko)L*5QZ{{i`7m+AyKLWjP4qsue6NP-_T*qrU43dy3Jah>!!TA@k=k`o-s>r~m_B z0M=FXyNq%|*pg|SaQuK&aOxwr(|1GUUCX27i*vRrbdWH-Zr_cA7cZP%jainp3i4qd z2eFdm*BZxSzBD*~?GU(rR8wzP&0rJz3xjd`KBGcV~AO#JfbOobLdWmL?fa!BPTvyIi0;55!cyLn^9*#*5H z{hZ+kCpvs@!rwRx;=2u3`|*@NOZA?mMDICD9zRPPo~4ebaj%Ik!1o4cd>ge;f;up! z6Zewt7}`i(xIzubd`*~{5CJCv{N{5%gex9I91T?wwm9G&2zLR3Y@}XvAb*2KfX1*;5#qxh;!qVal}Pp1XFR|eM}>@ALADJ7T!u58gyY)fG)UV+ zj6)vdu7GiOi1DzHQ6OV;BN?yZh)0BoJAu#x;dVjBG$iVSjJrdKgLP#bkB-e3{zUIWv(?2m!AJ-~<4V0`M3BuctjU83N1)+uTmy^s*%$WXtiWfGu^M=mNG0 z0dEAraRA;7z;6NY769HF8So|{;1^C67qE+N79tjbr~t7H#Cag9*yM!}VmMWN4XYLB zmWYVAHm8o&_u*|kRc3{VCxB=I(FS4#h|54cwFY8sQ7lD8jMqhkiV8<83lZ-C;+;Ue z3y60E@g5-Fy9Q#dimDK?HdPv^=pu@p_#glu2H+zAd=!9>!HK6sfb~;lK?wNcn#Qu2 z>S$DNmbi$jK7V{XbTxddd9yLqpRmr(DQfD^C_@C4c6a-^%<}} z3)VA{St~-;A9;IUJ@+g&L|x``-Y(qwb3lEOQgjYBeF-*w88&?dHhmR&^jZitT#af| z{o7Gd*ELeL4(jVb{R2>62kM`I`UX(n1nOHreLFJhcZ8^?Yr5lNb0gF{Ceo`@-rfFp z0QzTuz5~#|0Q9c_eHWnbA@%_$4F7wwChB9&w3oH4f#~mi zwYUF3h*;Z|8X!W=N7gvNu{PSs+5xy8fExhVL3>y#1Q@oauVK}ikD+HY(do|tvS$tk literal 2968 zcmb7_ZC4Xl5Xb+Q09it;F-A~PyI|Eozyy2%M5*CPqEQeKwVoO`$xT???BebXM?OG5 zOi%l!Zv^W(J$>B|)zi7zO#(^wSo2~xyL0c%{Qfg{_MdRD$SYxK`4WR@JB` zg=Hk251L2{?g%IONH>bSxM4Ybi=Kn%W{B)+`&!b_%yM!qzsn1Pq4&OS>SCTD5Fg!U z=w7snJcI!H!stOS!|AMU@@Lgbp4(em-rx+;tX0sAZOzu@v-h%F?C1`|jqLwQW{zP( zCi!Bos0qGo7S~Ek+CgqXE4+7vR_5!P<21-r;F7|%9U-W0ZOmgh2=(QO&>QW%$Ug(0XF zi!uzu#dy17(lY06P{SCORrs!YLMiF%Y8XG@8iP{iLhc|PqVZ8Tc2(#`GOLpk{kVbA zAmZermQ}+N#uyS*b=plL#53N`W4$q_V1nU#zFw5N2p`Ae43}zX^QfON&%OFJ5NzBKOWux{u z!m_CwFSqO0EHm|4kM3#{X;p^dj5IZBEK5uQ+uha5!7y;L?GN_qt>3EoeIFO|-`e%J z>Y~bC>~LJtWnNscb)NGy&P}FrlamS_G4x5BDvfm?{ZjiUQspd(5_d&ZY6{RQhA}t5 z((&`SZ0H|#d#$v!!=GAa*`iUByOWz%uugKgM%5~*Vu!1ByMhgB>iUy*)w>Bn}Qc*Wp~2Ru}ky2r0Iq{(CtG=o|@36RkaIz zMVEv8Z1bQRa0pm9S-wRV&h`bVDtx(4YvNq0u~p0PtHf6$*Ugy<^Gz$x_8HS8{+ z`zd;&i9^;doc2~l=q?@oPH(&Ee(wv;ygtO)Y~l-IucHHzzDVp4=RaZS2;V0@VdUv} z;4`jw;cvvAMaN^fIq?apUyg8FMi11YU#WS#2n9p9fGfB}=?`NB!VcKyY4=BTN%5)w-lFx^I{A5n-H@Nh)EAZZ9pX2AY7XZvD^{jR}W(PB*aQjB;;F(7*;)m$E|gk zC4_r~@PH5=5<;2~7H}7f#}K9)2+0P*pjU?k*`A)Lg9>SL5uSBK@TtR^5()YuM4!j7 z=~stUg2)g=mLS#$Vx1tKQyn&rL42(aFIpgEqqz{<-vaS65Lx$!cpbwVKZutE@roec z5X4)8$PvUlg3!JJ;%8row;dsTnkg3v1^gkjK0kyKA(RPWmk=t1U=o5w&9rw6;cLxQ vXhCQ;Q?Vn$Z949ZMnG?rAEDeFav>T7K$WK9el5B?=z6_YW_VB5E*Sp-@-}iT diff --git a/src/fi/oulu/tol/sqat/GildedRose.java b/src/fi/oulu/tol/sqat/GildedRose.java index 24741c6..5f1f86a 100644 --- a/src/fi/oulu/tol/sqat/GildedRose.java +++ b/src/fi/oulu/tol/sqat/GildedRose.java @@ -6,6 +6,9 @@ public class GildedRose { + private static final String SULFURAS = "Sulfuras, Hand of Ragnaros"; + private static final String BACKSTAGE_PASS = "Backstage passes to a TAFKAL80ETC concert"; + private static final String AGED_BRIE = "Aged Brie"; private static List items = null; public List getItems() { @@ -21,76 +24,77 @@ public GildedRose() { } 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 (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) + if ((AGED_BRIE.equals(item.getName())) || BACKSTAGE_PASS.equals(item.getName())) + { + if (!item.hasReachedMaximumQuality()) { - items.get(i).setQuality(items.get(i).getQuality() + 1); + item.increaseQuality(); - if ("Backstage passes to a TAFKAL80ETC concert".equals(items.get(i).getName())) + if (BACKSTAGE_PASS.equals(item.getName())) { - if (items.get(i).getSellIn() < 11) + if (item.getSellIn() < 11) { - if (items.get(i).getQuality() < 50) + if (!item.hasReachedMaximumQuality()) { - items.get(i).setQuality(items.get(i).getQuality() + 1); + item.increaseQuality(); } } - if (items.get(i).getSellIn() < 6) + if (item.getSellIn() < 6) { - if (items.get(i).getQuality() < 50) + if (!item.hasReachedMaximumQuality()) { - items.get(i).setQuality(items.get(i).getQuality() + 1); + item.increaseQuality(); } } } } } + else + { + if (!item.hasReachedMaximumQuality()) + { + if (!SULFURAS.equals(item.getName())) + { + item.decreaseQuality(); + } + } + } - if (!"Sulfuras, Hand of Ragnaros".equals(items.get(i).getName())) + if (!SULFURAS.equals(item.getName())) { - items.get(i).setSellIn(items.get(i).getSellIn() - 1); + item.decreaseSellIn(); } - if (items.get(i).getSellIn() < 0) + if (item.getSellIn() < 0) { - if (!"Aged Brie".equals(items.get(i).getName())) + if (AGED_BRIE.equals(item.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 + if (!item.hasReachedMaximumQuality()) { - items.get(i).setQuality(items.get(i).getQuality() - items.get(i).getQuality()); + item.increaseQuality(); } } else { - if (items.get(i).getQuality() < 50) + if (BACKSTAGE_PASS.equals(item.getName())) { - items.get(i).setQuality(items.get(i).getQuality() + 1); + item.setQuality(0); } + else + { + if (!item.hasZeroQuality()) + { + if (!SULFURAS.equals(item.getName())) + { + item.decreaseQuality(); + } + } + } } + } } } diff --git a/src/fi/oulu/tol/sqat/Item.java b/src/fi/oulu/tol/sqat/Item.java index 447b7fe..897c497 100644 --- a/src/fi/oulu/tol/sqat/Item.java +++ b/src/fi/oulu/tol/sqat/Item.java @@ -31,5 +31,24 @@ public int getQuality() { public void setQuality(int quality) { this.quality = quality; } + public void decreaseQuality(){ + this.quality--; + } + public void increaseQuality(){ + this.quality++; + } + public void decreaseSellIn(){ + this.sellIn--; + } + public boolean isExpired(){ + return (this.sellIn < 0); + } + public boolean hasReachedMaximumQuality(){ + return (this.quality == 50); + } + public boolean hasZeroQuality(){ + return (this.quality < 1); + } + } diff --git a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java index 76d30b8..b46fe85 100644 --- a/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java +++ b/src/fi/oulu/tol/sqat/tests/GildedRoseTest.java @@ -1,119 +1,273 @@ 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 { - -// Example scenarios for testing -// Item("+5 Dexterity Vest", 10, 20)); -// Item("Aged Brie", 2, 0)); -// Item("Elixir of the Mongoose", 5, 7)); -// Item("Sulfuras, Hand of Ragnaros", 0, 80)); -// Item("Backstage passes to a TAFKAL80ETC concert", 15, 20)); -// Item("Conjured Mana Cake", 3, 6)); + 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_BackstagePassQualityIncby2() { + public void testUpdateEndOfDay_AgedBrie_Quality_10_50() { // Arrange - GildedRose store = new GildedRose(); - store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 9, 20)); - + store.addItem(new Item("Aged Brie", 10, 50) ); // Act store.updateEndOfDay(); - // Assert - List items = store.getItems(); - Item itemBackstagepass = items.get(0); - assertEquals("backstage passes quality increase by 2", 22, itemBackstagepass.getQuality()); + 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_BackstagePassQualityIncby3() { + public void testUpdateEndOfDay_AgedBrie_Quality_0_10() { // Arrange - GildedRose store = new GildedRose(); - store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", 4, 20)); - + store.addItem(new Item("Aged Brie", 0, 10) ); // Act store.updateEndOfDay(); - // Assert - List items = store.getItems(); - Item itemBackstagepass = items.get(0); - assertEquals("backstage passes quality increase by 2", 23, itemBackstagepass.getQuality()); + 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 50increases 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_Quality_10_11() { + public void testUpdateEndOfDay_AgedBrie_SellIn_2_10() { // Arrange - GildedRose store = new GildedRose(); store.addItem(new Item("Aged Brie", 2, 10) ); - // Act store.updateEndOfDay(); - // Assert - List items = store.getItems(); - Item itemBrie = items.get(0); - assertEquals(11, itemBrie.getQuality()); + 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_ElixirOfTheMongoose_5_7() { + public void testUpdateEndOfDay_Backstage_Quality_0_20() { // Arrange - GildedRose store = new GildedRose(); - store.addItem(new Item("Elixir of the Mongoose", 5, 7)); - + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 0, 20) ); // Act store.updateEndOfDay(); - - //Assert - List items = store.getItems(); - Item itemMongoose = items.get(0); - assertEquals("Mongoose quality incorrect", 6, itemMongoose.getQuality()); + // 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_HandOfRagnaros_0_80() { + public void testUpdateEndOfDay_Backstage_Quality_15_50() { // Arrange - GildedRose store = new GildedRose(); - store.addItem(new Item("Sulfuras, Hand of Ragnaros", 0, 80)); - + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 15, 50) ); // Act store.updateEndOfDay(); - - //Assert - List items = store.getItems(); - Item itemHandOfRagnaros = items.get(0); - assertEquals("hand of ragnaros quality incorrect", 80, itemHandOfRagnaros.getQuality()); + // 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_DexterityvestQualityIs0() { + public void testUpdateEndOfDay_Backstage_SellIn_5_10() { // Arrange - GildedRose store = new GildedRose(); - store.addItem(new Item("+5 Dexterity Vest", 10, 0)); - + store.addItem(new Item("Backstage passes to a TAFKAL80ETC concert", + 5, 10) ); // Act store.updateEndOfDay(); - - //assert - List items = store.getItems(); - Item itemDexterityVest = items.get(0); - assertEquals("dexterity vest quality incorrect", 0, itemDexterityVest.getQuality()); + // 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 testUpdateEndOfDay() { - fail("Test not implemented"); + 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); } }