From c1bc06f581422e34171b1732319085787831ab4f Mon Sep 17 00:00:00 2001 From: attet Date: Mon, 1 Oct 2018 08:16:50 +0300 Subject: [PATCH] Assignment finished. --- bin/StringCalculator.class | Bin 405 -> 897 bytes bin/StringCalculatorTest.class | Bin 505 -> 1772 bytes src/StringCalculator.java | 33 ++++++++++++++++++--- tests/StringCalculatorTest.java | 51 ++++++++++++++++++++++++++++++-- 4 files changed, 78 insertions(+), 6 deletions(-) diff --git a/bin/StringCalculator.class b/bin/StringCalculator.class index a937b0c43633d36f133837cd90ddd10fb14ac782..bf98942ebbfba13db0ef23ebd231f3281eec8a6c 100644 GIT binary patch delta 586 zcmY+BOK%cU7>1w23``h6p-2Siy$wjxlMGQ=~iksc!hX+iv_(Cpk`D5%b+{JJ?Vd z)!JexKau1lMIl-nx_3QLnAOFaV^e0z;*=uW(aV3G9Fgc&;P#T7W?Er+{Tp7}8wWYH zM>ZMaVPqxAEN2x*+iq}Yu<7=^)_v^{+|b+^y`7ym`h!h{T2w^6?qhdH5f9Uky#;p^ zsg*#to-FI_yL#PsM_&iS2x*y!iIOZ9s2m1SLHzn5*fzdRs?sKnRI;3#L%$e!A zJt}h8dz5qLdrG?`K9YI(jx(Q&AuzMn+-JIEu7wt_$k*j6vHvTd8>%GyF#Gb?>*9eV zG_YmAC1oH5Sj33SN(h=FDMcQUNvEj@f1U|0%Z!^$a!t_Nff$?3=9k=3?dV`HcakjRGfT|vDlrFfgLDl#=ywH1f-dm*MLX{E+EMU g6k`C&asx>*h%5sS122#VQX#+~2$W}J5CZdr0cN5L00000 diff --git a/bin/StringCalculatorTest.class b/bin/StringCalculatorTest.class index d44b83f48579a95c814a0008fdfcca590443d2de..942de3097038731acfcd6053f1e99d0a55e1889e 100644 GIT binary patch literal 1772 zcmbW0`BKwR6vn^HV$)a=Ls{Gax3MLGF6`E=A}Uxx1#$c{v{wkWNo`Z`1$-d?QAcNd z03XWnOGr|OMMl#}@4e^VoZpx4oc#Rt?FWDVm#H+N*&6*zUW!R0_x(2vaGw7V>e?sCvg5?(rBN1FI%>2)#QfNv?!-&+m37ckMea(PGc*x)8Y$e zJP!&n^fP)en~Egj3WfyWO)n&H5tnF)S*Zy0r%G+p_Ma@ImsAX6G=>poYa@!yrfj$g zT)|a=gz2vq-?z*vjp)By!;^ywW(DFDWK0@!#=O9A2wjnT zUMDmkNOw<4JAj4{_9(bb#H2cH%!ILi1^0=VG^W)VV>XNqDR}5d8B^y32HSuw)@?WF zHCm>~4|TSvWDzbN@+0bif`TQI$8*N`G^-V6Te5e}s#RIC>n%5@pyb=E9&;eCV3l8j z;axeFV$Eqa%JPxrb^D>-TW2FpcrC#?Gpk?77-#%i_#fjs!;!s&?y)aWK5^2)zJkBa zAWn0h*gwGW3|9g@-0j3!&bzqkg%+IeSb8FZ|5nx;FS3=RbbMWmVU% z1=A#M=-SO-(IyX&3dEt1-ACpysXCdSl7aoaff6<-(io!#!4rSiQP&oZ(RGQs zhN)_Vx<;w%$_cs_kI;3RKKAi`RK{b!kR{sf6|y%pP1l}~|GHhQ9>1q<5T0T~r2l~S rMrJ6H8O#3(eR>phoX{+x`4gbe{u8=#6m*8rc|vcU0DVr^I`HB*DpoO7 delta 208 zcmaFE`;(dL)W2Q(7#J8#7^Ek1&17XMNi8m!_)9;6gF%RqLD(<9M4>XZL?JV`ASX39 zHLoN!g^NLiL5!V2l#xLozbIWlt28gOMBlNvIJKyRhe4b{f{}qGEip5PkwH|$Co8cm zQ9ma!FI_*lq$o2l-C8qjvM;jlckOBa~BqwbE diff --git a/src/StringCalculator.java b/src/StringCalculator.java index 487916b..4623b01 100644 --- a/src/StringCalculator.java +++ b/src/StringCalculator.java @@ -1,9 +1,34 @@ 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; + if (numbersStr.length() == 0) { + return 0; + } + + int sum = 0; + int index = 0; + + while (index < numbersStr.length()) { + + char character = numbersStr.charAt(index); + + if (character != ',' && character != '\n') { + if (Character.isDigit(character) == false) { + throw new StringCalculatorException(); + } else { + sum+= Character.getNumericValue(character); + } + } else { + if ((index + 1) < numbersStr.length() && + Character.isDigit(numbersStr.charAt(index + 1)) == false) { + throw new StringCalculatorException(); + } + } + + index++; + } + + return sum; } } diff --git a/tests/StringCalculatorTest.java b/tests/StringCalculatorTest.java index 4ec9afe..568adc4 100644 --- a/tests/StringCalculatorTest.java +++ b/tests/StringCalculatorTest.java @@ -5,8 +5,55 @@ public class StringCalculatorTest { @Test - public void test() { - fail("Not yet implemented"); + public void testWith0And2And2NumbersSeparatedWithComma() throws StringCalculatorException { + StringCalculator calculator = new StringCalculator(); + + assertEquals(0, calculator.add("")); + assertEquals(1, calculator.add("1")); + assertEquals(3, calculator.add("1,2")); } + + @Test + public void testWithUnknownAmountOfNumbersSeparatedWithComma() throws StringCalculatorException { + StringCalculator calculator = new StringCalculator(); + + assertEquals(12, calculator.add("4,7,1")); + assertEquals(17, calculator.add("4,7,1,5")); + assertEquals(23, calculator.add("1,2,3,8,9")); + + } + + @Test + public void testWithNewLinesBetweenNumbers() throws StringCalculatorException { + StringCalculator calculator = new StringCalculator(); + + assertEquals(14, calculator.add("3\n5,6")); + assertEquals(21, calculator.add("3,5\n6,7")); + assertEquals(24, calculator.add("3,6,7\n8")); + } + + @Test (expected = StringCalculatorException.class) + public void testWithNegativeNumbers() throws StringCalculatorException { + StringCalculator calculator = new StringCalculator(); + + //Negative numbers + calculator.add("-1,-5"); + } + + @Test (expected = StringCalculatorException.class) + public void testWithInvalidInput1() throws StringCalculatorException { + StringCalculator calculator = new StringCalculator(); + + //Invalid input + calculator.add("1,\n"); + } + + @Test (expected = StringCalculatorException.class) + public void testWithInvalidInput2() throws StringCalculatorException { + StringCalculator calculator = new StringCalculator(); + + //Invalid input + calculator.add(",,,,,1"); + } }