From 73e1a863ed472ef0db753797bb3d0e3b66b38c22 Mon Sep 17 00:00:00 2001 From: sweiding18 Date: Wed, 26 Sep 2018 18:58:36 +0300 Subject: [PATCH] Assignment Finished --- bin/StringCalculator.class | Bin 405 -> 2752 bytes bin/StringCalculatorTest.class | Bin 505 -> 4904 bytes src/StringCalculator.java | 67 ++++++++- tests/StringCalculatorTest.java | 234 ++++++++++++++++++++++++++++++++ 4 files changed, 300 insertions(+), 1 deletion(-) diff --git a/bin/StringCalculator.class b/bin/StringCalculator.class index a937b0c43633d36f133837cd90ddd10fb14ac782..c1acb1c3355183aada97813dca82deee61fa3e81 100644 GIT binary patch literal 2752 zcma)7TUQfT7~LnCWI`C^qQRoU3)Vs)+-gNjAl0JQRKRK!Dr#{E(>NNEbTVP-TKy%i zzICng;&R!SXlrlJ{Ud$oe<5U}*Eb$nIaeS&XBTZZEf5?@tO#ferA;e}AUX_$ z5EkfOw2Rhqb!)?NZkZbeOQ3JDlrsw}ren)@e^7HD+7&ssf8P`{o12>gv602*?p{dVxf{q~1Pz)1_pp z_Y4f+2xZ8XirbdsrIVWpB>hDDRwdq%D~@A21_cK8)4lv8XO&&MR5Wm0$ya6>+^lQn z9^Z1z9HkXFX5;oFY`xY>wW=b+Xu%#_kZpC5#%V3~La9(-GtxDw#7YDUY{TTY_li+W zc0SsuEgScCE1pIZwiT(BSKG*D1tsGp z1IxHB5V2j$ktY$2G}4+Q<}M}fi-j!MA>vI7RO}lJp=dg6@}V13svj-*AiI9N2c=DiAWj`3><*D?-;9B zdM%1LIwby00~VM`e`r>g6;z(9YdRj*PdSyip}bcm%dvBG+!`I_)vVFaD-v0wpZBh% zF~|S2YIO=}p0$#5*}yko2_kmU^^+4I+do*5XHYa-syaFAiY*WNm}jNtH)KM}ijzFT zg8bBgPNp#t=2hq0B=77VghpQ>@*^Jti1I3@WoRd_hW~7!i*JI8cJnG1|IO$y?^AEk zbLSQMmi+tj=vWO0mqwE{9A4f*bT%{)s^RG9cnv3Jw3zms>-#DGasD;6-w^v(_HYCp zEStgE1Dxw7>|T6;gBa(C#FF;*V}!)Qo$)?SGg|~Bj2kAN9-QFwFv*VdpTH=0I7udB zNb)+)HT{h8;wKvMlZ>6>+yDZ*gr(^aI;M5>@FySRQV@R8xZn)K0{mo40lp_3jrXas zzOz5zu%xg3is?JSzH`~v`1ln*c{$eiX`qHnN}8lMwmkllYdqrp1O*&ro;Z%+7{4*c zF+sqRtb{Hp?k77$ajqgm6q10XEy;R?@(r#<#dn;hLl%icBH3 zU$56tO9y8()^Bk(yn_n^;h*q@z#o{FMSP8w87&#pUgK^J>#IA^XZ2uu@EJPaAWjEt z{2tT3Yre?E?2%`?za(FB;~{Q5gS^jtmMlQ@vJ_Dks*5EWBBKO7d4{ad^B|q2&S{+G zX*z>zIEO4_?qg1=b5&Jfy`j#!QbJl`RT)4U`8I4kBK0oZ#ABuB5VIC&nGo{_m~D$$ z>ZYIw%rQZvUXDpdNK;%xXqTnel_{hngtY$+Kw71BR9WVR^h-Y2xl3fNlim^~!zm{A zY*bVvUhrMoAQ7Bb!fQK-4QRgbt2LC;@xcf4azv^5SNu7HTm5s92^Lu9OBm#Rn0ht+ vlV~WEP`U`l4x>Uf0$iafU7G$O2u8_MK{AiYcIZUNWA3x=<)q8W0IL52wog$9 delta 104 zcmX>gI+dC0)W2Q(7#J8#7(^y=t(|*Ai01|-qDPKk%0-Qgo$|# oh-Babl59XR1_pKpZXhWJk!9dv;05wPDg+n=f%1$DLSUXS07!HVO#lD@ diff --git a/bin/StringCalculatorTest.class b/bin/StringCalculatorTest.class index d44b83f48579a95c814a0008fdfcca590443d2de..3012e264b72ca4214a83777e3eb035cb114e84f1 100644 GIT binary patch literal 4904 zcmb_e?QdIG9ez%H9p5+(b#I!qd0m$#U7XlSoH$vVbYWTA4tI{T%~@CP&AoN*GPjQH z+SgeNY-5a0uzlf0LSkRWG$9xt*g&JLm>38lfhO@H0bdXj5_~~ONbnB;&$;*d#*Lk& z(i$oE#pid=d7j_zd4A`7^xvO+2q1>neP|IlkTT1;!p5?m&sOugSuC#^71IYrAb3&V z(kJtJVPkUj!bKx%3bdZc6>{dHfM+yxRzO)Ut{Z-M&=!CftpfWJxq^|bZeB3TYx;$} zA)qCSSv`MNFX!aD^P^%um#YYLCz`FjAkb?P!-IyoR4(gRPnV0Ec3fsE6BX!rv|2E8 zo5tB(CC4e33WcJno4I0vGX@jI^2X%FDnU+49t$cof}ILSeK;V{X)&srx%{Lxbs|?W z{pduS4+r`2PBeaW%c0&|Qeg+F=ob)EDh7Fr%D}?`+>Id;-e|xr5E@NvC)1u`A!Pq_ zE1CrfXE=Zn92M}HMGK}t*J$X;x*6XP{ROL*6+)J!Y~VnQP6RPFrxGM3>__mp70}yhkaOO)wk;uFPO%LQ4Zh{Jj!Bi>G`U$ z`Yba#8h3JM`P&JjqPnpbz++(TgV{PD(kTLAXW<>1ZCVA+bq-JXkfvjIR{qqLtWlDd z4d6+uZIsx8%#^8TFRhjJEZatV#p+6q`~w`7G@Mt#fW8Jfxs$TiW6iW!uZtRCDU1$l z;T65)bSJwCPCqnK)lFGenVIzf3@~{Csc6|OZkAoq78aV7^Z2IGrJaq zmUr{WUZK|Dso0`Kb%D8tDNh!wY{O@zvUZ4}+`!10DDlEwx*_?EMCeB3Ob z7ifvlu~ru11?oAs9xt$UWR{DYn|j90!b>zuH0-At+~m`$t#=o7X{j)(v@`R zl&tKRq`$81aF(5$+s4Mbr?~`d-!b-Gdyo7nB^Lh zh#fV@D1m#M68XMEWI`KgAfnhrZiB;+wR$^-iDm?Y#5T-*F@kU%hY6R19I-hZaXIuk z90r?kkWn^=V|#Eoz8iy*b`bj!We8068vW5vOqyajf7>9mk|wr-$4+ zExUDEaO$+!q)sx*uG43laTF)0!&WNuyyKX}xYly>rAP7H z#EJ~*Q55GXOjD(j--UnP+vB|sj?i6^n!^Oy#gX8~s8~*$v&_5-6%W(OkI-i+R`@X- z#pA?$4#$z^7tipU3^#Y3qXwUzwX(8kV|KElGWsd{j-8QNl)h`>Ec1Apzj-)Ul=_+C zs!96x8P4Igym**n_Lp<~(vCmx#-C@r&b;)a<$nb2^+EX1=|i`5?UZllWQ)4cEUWmj zqnuectF2Cs#(mC1Ewe%2qRd-%P8qn?rChs-jqPSMM1a60Uh~+GP4uFOAzY@NP1^W* zTH;EbNM_x1L@eq&+EG$=Iz}jsOPs~S@7g$1o&akNNu{Ko#(9zvC^V(>zC$PG(y0}H zy!KF|JlHk!j`*kv=`gpG{1*%UvP z%`vUiVC&Xed*wbsLwjlHJvWQ5GOJ%B@~<=7-(Z{lCL8Iu*s9*BV{^=?z`4JhtPaHSM=;j?}^x03w=ySKv=tDC485#YYjDA5z zza*nykX)iWd%H1;TGgpL1E_!OGrWOP`@}Won&=+aM0Z)@lP9i&j*0qtJe1GEy-z~(pNqSwx2OY%w zorWb**>;ge_;OP$B?rqPO`f6Zv9vWs@(&{UC+Gbak^Gza_)i^@LoSjo7m3f>2qcmY NCwGEvSRTM%`#&|zmc9T0 delta 201 zcmZ3X_LEuQ)W2Q(7#J8#7^K-5m>3yECMU9sOjN07WhqH5E}6K`Bv{xlzeJ%jwL~E^ zw;(4qH#M&$HHC{ogh7m*L6ng}AipSGKdUq^vqayqxHz?_goi<#L4uKiB`q;Chmk>4 z!zU}TEKxrvF)v*|xTGjEFWp)*Y;qvG2_w_wHg+vW*2x>$we3w97=e(1flWwo2ZQiN mAd88C3rKPSX$A&P238=88_42;r~=ZwKprE5B#>lckOBbJHz`j5 diff --git a/src/StringCalculator.java b/src/StringCalculator.java index 487916b..0c26689 100644 --- a/src/StringCalculator.java +++ b/src/StringCalculator.java @@ -1,9 +1,74 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class StringCalculator { public int add(String numbersStr) { // Returns the sum of the numbers given in numbersStr + ArrayList stringArray = new ArrayList(); + ArrayList integerArray = new ArrayList(); + int result; + + stringArray = getArrayFromString(numbersStr); + try { + integerArray = convertArrayList(stringArray); + } catch (StringCalculatorException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + result = calculateSum(integerArray); // not yet implemented - return 0; + return result; + } + + public ArrayList getArrayFromString(String numbersStr){ + + if(numbersStr == "") + return new ArrayList(Arrays.asList("0")); + + String[] numbers = numbersStr.split(",|\\n", -1); + ArrayList stringArray = new ArrayList(Arrays.asList(numbers)); + + return stringArray; + } + + public ArrayList convertArrayList(ArrayList stringArray) throws StringCalculatorException{ + + ArrayList integerArray = new ArrayList(); + + boolean numeric = true; + int number = 0; + + for(String stringValue : stringArray) { + + try { + number = Integer.parseInt(stringValue); + integerArray.add(number); + }catch(Exception e) { + numeric = false; + } + + if(numeric == false) { + throw new StringCalculatorException(); + }else if(number < 0) { + throw new StringCalculatorException(); + } + + } + + return integerArray; + } + + public int calculateSum(ArrayList integerArray) { + + int sum = 0; + + for(int number : integerArray) { + sum += number; + } + return sum; } + + } diff --git a/tests/StringCalculatorTest.java b/tests/StringCalculatorTest.java index 4ec9afe..ea3a064 100644 --- a/tests/StringCalculatorTest.java +++ b/tests/StringCalculatorTest.java @@ -1,12 +1,246 @@ import static org.junit.Assert.*; +import java.util.ArrayList; + import org.junit.Test; public class StringCalculatorTest { + /* @Test public void test() { fail("Not yet implemented"); } + */ + + @Test + public void testGetArrayFromString_0_1() { + //Arrange + String numbersStr = "0,1"; + ArrayList numbers = new ArrayList(); + StringCalculator calc = new StringCalculator(); + String[] expectedOutput = {"0", "1"}; + + //Act + numbers = calc.getArrayFromString(numbersStr); + + //Assert + assertArrayEquals(expectedOutput, numbers.toArray()); + } + + @Test + public void testGetArrayFromString_1() { + //Arrange + String numbersStr = "1"; + ArrayList numbers = new ArrayList(); + StringCalculator calc = new StringCalculator(); + String[] expectedOutput = {"1"}; + + //Act + numbers = calc.getArrayFromString(numbersStr); + + //Assert + assertArrayEquals(expectedOutput, numbers.toArray()); + } + + @Test + public void testGetArrayFromString_EmptyString() { + //Arrange + String numbersStr = ""; + ArrayList numbers = new ArrayList(); + StringCalculator calc = new StringCalculator(); + String[] expectedOutput = {"0"}; + + //Act + numbers = calc.getArrayFromString(numbersStr); + + //Assert + assertArrayEquals(expectedOutput, numbers.toArray()); + } + + @Test + public void testGetArrayFromString_0_1_2_3_4_5_6() { + //Arrange + String numbersStr = "0,1,2,3,4,5,6"; + ArrayList numbers = new ArrayList(); + StringCalculator calc = new StringCalculator(); + String[] expectedOutput = {"0", "1", "2", "3", "4", "5", "6"}; + + //Act + numbers = calc.getArrayFromString(numbersStr); + + //Assert + assertArrayEquals(expectedOutput, numbers.toArray()); + } + + @Test + public void testConvertArray_0_1() { + //Arrange + ArrayList stringArray = new ArrayList(); + stringArray.add("0"); + stringArray.add("1"); + + StringCalculator calc = new StringCalculator(); + + ArrayList integerArray = new ArrayList(); + + ArrayList expectedOutput = new ArrayList(); + expectedOutput.add(0); + expectedOutput.add(1); + + + //Act + try { + integerArray = calc.convertArrayList(stringArray); + } catch (StringCalculatorException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + //Assert + assertArrayEquals(expectedOutput.toArray(), integerArray.toArray()); + } + + @Test + public void testCalculateSum_3_4() { + //Arrange + ArrayList integerArray = new ArrayList(); + integerArray.add(3); + integerArray.add(4); + + StringCalculator calc = new StringCalculator(); + + int expectedSum = 7; + + //Act + int result = calc.calculateSum(integerArray); + + //Assert + assertEquals(expectedSum, result); + } + + @Test + public void testCalculateSum_0_0() { + //Arrange + ArrayList integerArray = new ArrayList(); + integerArray.add(0); + integerArray.add(0); + + StringCalculator calc = new StringCalculator(); + + int expectedSum = 0; + + //Act + int result = calc.calculateSum(integerArray); + + //Assert + assertEquals(expectedSum, result); + } + + + @Test + public void testGetArrayFromString_NewLine() { + //Arrange + String numbersStr = "1\n2,3"; + ArrayList numbers = new ArrayList(); + StringCalculator calc = new StringCalculator(); + String[] expectedOutput = {"1", "2", "3"}; + + //Act + numbers = calc.getArrayFromString(numbersStr); + + //Assert + assertArrayEquals(expectedOutput, numbers.toArray()); + } + + @Test(expected = StringCalculatorException.class) + public void testConvertArray_Letter_StringCalculatorException() throws StringCalculatorException { + //Arrange + ArrayList stringArray = new ArrayList(); + stringArray.add("0"); + stringArray.add("a"); + + StringCalculator calc = new StringCalculator(); + + ArrayList integerArray = new ArrayList(); + + //Act + integerArray = calc.convertArrayList(stringArray); + } + + @Test(expected = StringCalculatorException.class) + public void testConvertArray_DoubleValue_StringCalculatorException() throws StringCalculatorException { + //Arrange + ArrayList stringArray = new ArrayList(); + stringArray.add("0"); + stringArray.add("2.34"); + + StringCalculator calc = new StringCalculator(); + + ArrayList integerArray = new ArrayList(); + + //Act + integerArray = calc.convertArrayList(stringArray); + } + + + @Test(expected = StringCalculatorException.class) + public void testConvertArray_NegativeNumber_StringCalculatorException() throws StringCalculatorException { + //Arrange + ArrayList stringArray = new ArrayList(); + stringArray.add("0"); + stringArray.add("-1"); + + StringCalculator calc = new StringCalculator(); + + ArrayList integerArray = new ArrayList(); + + //Act + integerArray = calc.convertArrayList(stringArray); + } + + @Test (expected = StringCalculatorException.class) + public void testInvalidInput_Comma_NewLine() throws StringCalculatorException{ + //Arrange + String numbersStr = "1,\n"; + ArrayList stringArray = new ArrayList(); + StringCalculator calc = new StringCalculator(); + ArrayList integerArray = new ArrayList(); + + //Act + stringArray = calc.getArrayFromString(numbersStr); + integerArray = calc.convertArrayList(stringArray); + } + + @Test + public void testAdd_1_5_6_1_0() { + //Arrange + String numbersStr = "1,5,6,1,0"; + int result; + StringCalculator calc = new StringCalculator(); + + //Act + result = calc.add(numbersStr); + + //Assert + assertEquals(13, result); + } + + @Test + public void testAdd_EmptyString() { + //Arrange + String numbersStr = ""; + int result; + StringCalculator calc = new StringCalculator(); + + //Act + result = calc.add(numbersStr); + + //Assert + assertEquals(0, result); + } + + + }