From e8b9b98a4534613c8482bf1380b0dcd0bfa8dd50 Mon Sep 17 00:00:00 2001 From: Tapio Date: Wed, 3 Oct 2018 22:02:38 +0300 Subject: [PATCH] Assignment Finished --- bin/StringCalculator.class | Bin 405 -> 2084 bytes bin/StringCalculatorTest.class | Bin 505 -> 2138 bytes src/StringCalculator.java | 47 +++++++++++++++++-- tests/StringCalculatorTest.java | 77 +++++++++++++++++++++++++++++++- 4 files changed, 118 insertions(+), 6 deletions(-) diff --git a/bin/StringCalculator.class b/bin/StringCalculator.class index a937b0c43633d36f133837cd90ddd10fb14ac782..081e8fead418ad07739d2034872443eccf77dede 100644 GIT binary patch literal 2084 zcmZ`)TUQ%Z6#fpmOfFLifnc!^pj=8qE?#PC8`|1JD<~H=73EUxFqy(YGQr72X`lTQ z^59x7edIx3g4(t8-B*8z{s5QtJ2NQ|pbv9$&OZC>{e9ow=j6}-e)}E3Ra6vo2*gT` zZCabtT19VEG^b`O@YA}jeWm3qnzfl<+SoR9M<6(5TBdVLz&DXv7VuBk%0>h}gjEC( z6zH5cEn~4!-7xG2+D63?h|kw_t+K4yrd+p-erL<9%e~Wii;S$5%L0js`Qz-KS1~mw z5V^Of8@rBKv+4@s0)3|=9PLLS(4!)OPJyu1s4hL`P?y$MRa`_L!P>@dMbnK%3q;%xZy40zd zl>UsoEN9((%905>2lblmItt3t?K!t)qT4pVJ%I})N7Hu}v|YEj3a+(vj#r-u3b?M~ zhQt-D7}ln{XsIf+>|5Vdm^3F)Vf~4=Hg(D)q675+1Oqt)3N_IoT4^Tbf-mzHAtlZWK?1 zYO}XkyBFFki@a`i#}46BM$VGFrHHZDp7C5)FS0m^`IE2rs_j*~L z58)BT%B9z|?9+$2bO;+Hkd-0JDhxappn8_0nHFPSdMSg{Y6x3AImFg5y{i=|)f%>L z+&AT;lJMXkzgIa~H4O7!`uMDYmx?D5h z*aqmNSB!H%S6yzHzZqPHyPKYDqWh*Cdl%E$CSH4n%5AD;h{2p%ws&&7~)vxkT!Obk-bD2AAQg!#vrKZ9 zhmPkApePUu3i4Bs6jVk^!q=0dB>g?Z2KYNl*6-{i;5%^nFJvU=;xD+pnEe&^1PcCy zU()lt^m^Sh{UkTQNJ%CeWR-?o8dtq|M>Iw;=hEn8*7rHV4gIF`AKSiEHJi2 z=It%gE=l+x!Zh+(Z^2!lNwz|CGQK1cezcJJiA%5W5&n`1QH{AshCJ6JBvE|gA_>#a zLn7p3&sBRv{6&jQveS}+%6x~OOnkYC&-M|0hOU)EtpAar-T$N9cz9|f{sj%+p74xo zP3Ucg&31$AUaxbKZdp>SVw%EE;u?!MOV}$EYMWBYuJ(xS91+`T5exDzny$oBJpKp$ SizEwwF&2wazirw&u=78Hnyy#? delta 110 zcmZ1?FqN6>)W2Q(7#J8#7(^y=ZJ7L(QE~Dn7ClC$$q!kyfFuvAq&p)6J5Yfc10w?y skY-|D10or?fFv7Gi~%Ui4J5@NvJ5;7yg(jEg#d#fP@a)N2+R`(0Hz@gjQ{`u diff --git a/bin/StringCalculatorTest.class b/bin/StringCalculatorTest.class index d44b83f48579a95c814a0008fdfcca590443d2de..e574231dc657316c6ec1581c8dc172f38a93c05a 100644 GIT binary patch literal 2138 zcmZuy>sA_96#hmSW*``G1Y6>z#MWCtCtxHEq*g+;)gU%XY}5M)qZx}}hoQ;pe;=g} z&_795x>g?`50E$LYjpKH!!Wp1*BWM@edg@_UG`bN`|s^P0Pf*P!H|UbzGGXh)2?InZGbE_j^ymDRdqJ&|G7+7ZasMS5?hsnKe z%dt+)1FK`PN~zUqJBDMmTilCP+V-)2(j_ikKrbrLn7v#%f>DH3BqTtDA4KsXk`lsf z(C?C1s0$8F`h$u}Tm7YD=g6SH!`Rhr&pc}yb+cMg zu`D1&aw_ifSXS`PMX`c=G|KkAGG8=l8DY;|$Nnl5AxB;izb|3_;*s8n6fd0cGGb7A z@Ev=FBh)fqxIC3!K-gZyO;?3dqah)(@v?57xgIO{oFi~qGk;&uDn;=~*cmVyjlSRk z6`RcDBEAKj={}Gwd)a2E+jItzK+?+*N&iD?LARs(SEyY*Ue2!T*xaz*2rmDj2v!*b=+Z<8Sz5%SK(UcoA(Cto!3zR z60^)Z1a}(<;|Aks?*qPvxuR0s9m0tBRg7;@=uZTh2bTWE=(E=tt7!3^bmkSt*QU`o}Gh!4% z@AVM)-10uR6_49Z+;tfRSSy21U2aKMdB8|!-DwmUg;;$YMMetwKIA&U9-s~q)-D?- z4Kpt+f9f+&xyG&2xH!tfx(&~|b7tzm=f(?BiIe*V|>1@Sb&RjX;=R>h>$wC_C8YT6GRo}?^tKY5zfv|kEJI;k*sS)p|zc|^u#_S@hE z*yKO6uQ)_o9Gb@*g9?qWlGQG?dO|LHSjYZ_@hSNVJ@6IEdkT$FWuZ%e^=7^CnWGv) W1DQ2Pap)XZL?JV`ASX39 zHLoN!g^NLiL5!V2l#xLozbIWlt28gOMBlNvIJKyRhe4b{f{}qGEip5PkwH|$Co8cm zQ9ma!FI_*lq$o2l-C8qj@&{%UMyAQCELx1LlLJ_^?M)aMfslcLO-OJDgYZTmi-~~? hNOA#b1_n+BRv?QT$l`&h0@A!d9wUP!kYr+z0ss;EC>a0% diff --git a/src/StringCalculator.java b/src/StringCalculator.java index 487916b..3615705 100644 --- a/src/StringCalculator.java +++ b/src/StringCalculator.java @@ -1,9 +1,48 @@ +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; public class StringCalculator { - public int add(String numbersStr) { - // Returns the sum of the numbers given in numbersStr + public int add(String numbersStr) throws StringCalculatorException { - // not yet implemented - return 0; + int size = numOfnums(numbersStr); + String corStr = replaceNewlines(numbersStr); + checkInput(corStr); + Scanner s = new Scanner(corStr).useDelimiter(","); + //ArrayList arr = new ArrayList(); + + int j = 0; + int x = 0; + if (size==0) return 0; + else { + while (size > j) { + x += s.nextInt(); + j++; + } + return x; + } + + } + + public int numOfnums(String numberStr) { + if (numberStr.length()==0) return 0; + String commaStr = replaceNewlines(numberStr); + List splittedStr = Arrays.asList(commaStr.split(",")); + int size = splittedStr.size(); + return size; + } + + public String replaceNewlines(String str) { + String commaStr = str.replace("\n", ","); + return commaStr; + } + + public void checkInput(String str) throws StringCalculatorException{ + String input = replaceNewlines(str); + if (input.length()>0 && !input.matches(".*\\d+.*")) throw new StringCalculatorException(); + if (input.length()>1 && !input.matches("\\d.*\\d")) throw new StringCalculatorException(); + if (input.matches(".*[a-z].*")) throw new StringCalculatorException(); + if (input.contains("-")) throw new StringCalculatorException(); + if (input.contains(" ")) throw new StringCalculatorException(); } } diff --git a/tests/StringCalculatorTest.java b/tests/StringCalculatorTest.java index 4ec9afe..e7c57b2 100644 --- a/tests/StringCalculatorTest.java +++ b/tests/StringCalculatorTest.java @@ -1,12 +1,85 @@ import static org.junit.Assert.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.junit.Test; public class StringCalculatorTest { @Test - public void test() { - fail("Not yet implemented"); + public void testNumOfnums() { + StringCalculator strC = new StringCalculator(); + + String testStr = ""; + int testSize = strC.numOfnums(testStr); + assertEquals(testSize, 0); + + String testStr2 = "1,2"; + int testSize2 = strC.numOfnums(testStr2); + assertEquals(testSize2, 2); + } + + @Test + public void testReplaceNL() { + StringCalculator strC = new StringCalculator(); + + String testStr = "1\n2"; + String testStr2 = "1,2"; + String testStr3 = "1"; + + String newStr = strC.replaceNewlines(testStr); + String newStr2 = strC.replaceNewlines(testStr2); + String newStr3 = strC.replaceNewlines(testStr3); + + assertEquals(newStr, "1,2"); + assertEquals(newStr2, "1,2"); + assertEquals(newStr3, "1"); + } + + @Test + public void testAdd() throws StringCalculatorException { + StringCalculator strC = new StringCalculator(); + + String testStr1 = "1,2"; + int result1 = strC.add(testStr1); + assertEquals(result1, 3); + + String testStr2 = "2\n2"; + int result2 = strC.add(testStr2); + assertEquals(result2, 4); + + String testStr3 = "1"; + int result3 = strC.add(testStr3); + assertEquals(result3, 1); + + String testStr4 = ""; + int result4 = strC.add(testStr4); + assertEquals(result4, 0); + } + + @Test(expected = StringCalculatorException.class) + public void testCheckInput() throws StringCalculatorException { + StringCalculator strC = new StringCalculator(); + + String testStr1 = "-1,2"; + strC.checkInput(testStr1); + + String testStr2 = "///"; + strC.checkInput(testStr2); + + String testStr3 = "1\na"; + strC.checkInput(testStr3); + + String testStr4 = "abc"; + strC.checkInput(testStr4); + + String testStr5 = "1, 2"; + strC.checkInput(testStr5); + + String testStr6 = "1,,"; + strC.checkInput(testStr6); } }