From 442ffcd5431f5b7f74f16938ef0c86d946b2325f Mon Sep 17 00:00:00 2001 From: tcrane-oulu Date: Mon, 1 Oct 2018 18:24:47 +0300 Subject: [PATCH] Assignment Finished --- bin/StringCalculator.class | Bin 405 -> 2313 bytes bin/StringCalculatorTest.class | Bin 505 -> 4516 bytes src/StringCalculator.java | 75 ++++++++++++++++-- tests/StringCalculatorTest.java | 132 ++++++++++++++++++++++++++++++-- 4 files changed, 196 insertions(+), 11 deletions(-) diff --git a/bin/StringCalculator.class b/bin/StringCalculator.class index a937b0c43633d36f133837cd90ddd10fb14ac782..79a81588c9e100ea13909d6f868a2fccad510368 100644 GIT binary patch literal 2313 zcmZ`)O;;0F7=A99$%HTn1P4s{&{nOG08zB41n?tjOT&kX#Uj-@gb_x=Bu*wC?WP<5 zgm&dQJ%@98T(q0$sXeso?)wM2>9T8kO6hZFLIA-9nfvkH_dd__KKJGK|9)Nra0+D& zbpp*Zo@+Zx88e?N=S{ERYEZa(-+W}I@}{$tnqIhXgB1p zjt|hmyOu03;6kizdjXmsm+@UXx^a;4L|%(md*;V|z>cp*i8v+UU8DrGYJ@=DJQ;>c zZqAMfsJ3(kEB@YF8IvoN9mX^UWxC+8DlX^ZmO#Vi+GS@^ z!-PQVmWmf#*L*Tzm%J#l(pMvx)^Qcrm~qK1l#8-J<5jx;8>_lJiWz*N;f6rVmRZIf zk415H%%X|qE1GV};+l;8QpX&KMSEoC%hvQgY1JKht7j=-7GLSuhXD!Zj*hQ!SDIXc z$pjp!86BO)f{vWrR7&bFa|;tDGO0O!QUIIo9=(5g|W+8zF!>B0S%WRDlqd&r7-qgvzBRI-jANv_aGl8%V@>gg~zVWu}J4CwF@1cfX#x7K2xHF{0GTUaVp*%y>Q2kt? zEgpkJ2{zMubP#(NL3E=X2f1>Hvx7u=m`&>lW$wW!dTF$z&v7gOSmQW{%RWZ~m)J_K zkU%>w;!~gFDEWSdajKG~_Mda4`n+QZH>_iyh7nQMB-U|E$WpSg2Qr8ZPe>VxZ;)jz zCMRneOsygj8d6r#(QhafObx4jarHH>zsAi9=5Ib#grW3TaQnr^pZrjzKPZ;@OLSNX z4XLYWk1K}SXQ&k{{)U+fmZzVp!cgPN+KY|9;>wS_Q}L@jnKof%Oj{q;1d?ng${9LdZ`*vP7hH@csw2 CD%ytt delta 130 zcmeAan##;|>ff$?3=9k=3?dV`HcZZDRGj>VMURnbvNWq!A`=5QP>P3v5lFHEXIA6}U=Re#GcpK))e8dv_bv<% diff --git a/bin/StringCalculatorTest.class b/bin/StringCalculatorTest.class index d44b83f48579a95c814a0008fdfcca590443d2de..e21a1f772fb3496eceb137be4b5b051e0caa02eb 100644 GIT binary patch literal 4516 zcmbW4`&JWI6vp?EK!%V)h+G9E3M!W^QNw-YhzL|Un)wb zrsrhCj8RmeMKg>THoyIhMYGAs<@`8ig{h2NLTlQK+!R+Ajc^}l?f`R3V~{- z6jh!nZLZ3CPFgL>0;Q(3yi{C}bcNm952NO~VhGeQ6{I~Z&}qfUs#_&8g>_OY(%Kk8f_7JN&Ic&2uHyR5s-W#ZX{1VmWko+C6QVLYUMy_gGVu~b5^;Kek2tQ z`Fxz(s69p}AnehM8iuT!2};vRf#MRsW6mKU0WwQG(1>B41#>Sxf>oi*MyZJ82ulKW z`nmT+Zq`YSNL^UnFH(;{C-F3`@{Aqe!{O=3ZEIG(4Ux{FA_g-310waoFy0(xxGRWu zf<+FA&aLaRT}!ZiQJ~mRCf%P&!~CE?r}*oG1WbgJ2mf+{zGh*rvck-53)FLXjH?BaZt&0zW<(kl=*%t&SuGqW zuqK;!^qpMuY8=&dX$K*6d_gWQFWf&Lbr(2jRasiR@bR0)=>rV3F zh_7_#QMv;Hbsw?AUzdZv&Ggmk`3&3K6mS~x^r@J0T;7K?4 z_d$Ywq!o+_%U{RU@~+8A=4iwyZ2}WMp7Qpu?ACK#D#tKpKas=eJa?SsmB=BCuVjre zP1g}ef4-Ru8wvV}ih#kY111;%_t|i{MAG2HpreNa;rL!Xk4hvApva}nWoLPnKxYqL z&W?$Bc}vpSfg{om_728}oV^KwTG(E+xVCM;ubie$OX`lDEWF(}2i@u&7U>l-HJAYl zhVw2nPCK}*{VTdIb2&3)yXNY73wd+C!!l+Nlk<82w$*sGHGWQHE% z853yun`#$7(6OoBRNZ@O7)c#({Yb5zmDF%(w$ELZLhQm*E@HI#&MZD{4*u*w;(d_G9I9?A{yrxD6cp_MO$Rqp4?15m!S zH`=XGZiDg(D7S}J9tx{`g)0vSDR)4*6UwKdd?vK=NLc0TT=|&W7Hw5-{xIaJ~18n6rVYl`ACyq=o`>wME$_H2r~n83}0}Y z=n_Ziv5dIIUh5WnoMvbiBF6x72Uihb+&u!S1Zxbc&4ZeIPZQJ8Pw~Y_#cVLx6@Xm@ z*f8qx8nx1h53J1vt9QYwZLmfkSnde0=Qdb}2X>Evl{2uUIJ+24#t*<71>Q~IjiGRF z0b<;T*Wu!|xOjCoUYif^dtC1yRF7>aH-*UEbT9h$hwGJX?>^G~y(!EBWfGFNDTVJ8 zO*HL8X?9VZ6tXF4r7(rb^^hcf!)fk1ZwG=~8;k8zSiQ{VFe zwYxx#c5IS}q6O4|aq9rdfj}>8piT$K%T#pMrFs-dwFs&uG}|(@(0z>V2R^D!m#WpK zs&}bcd{pb8I;{O3f^YvJql{Fx?oOO_$Vebsg-#w+1x|DLAtUiaX7dP!Rhyy7iBWG# zeNW0r9c=|ttbt-36bc$`!$;BN#w6)haV3VOMWKH_g<(;Y0x32@p@KpK#a3vF?a!xp zYEe83q%c5Xf}#Y9C!r}`1W;6AE++ANCr>}~?;i_D9xIKcmzI|d#p~v3{(c7t&w%jU zC!cgvA-bu+|6J` 2) { + return false; + } + + // If the string doesn't start or end with a number, it is invalid. + boolean numberAtStart = Pattern.compile("^([0-9]+)").matcher(input).find(); + boolean numberAtEnd = Pattern.compile("([0-9]+)$").matcher(input).find(); + + return numberAtStart && numberAtEnd; + } + + public int[] getNumbers(String input) { + ArrayList list = new ArrayList(); + Matcher matcher = Pattern.compile("([0-9]+)").matcher(input); + while (matcher.find()) { + for (int i = 0; i < matcher.groupCount(); i++) { + String match = matcher.group(i); + list.add(Integer.parseInt(match)); + } + } + int[] returnList = new int[list.size()]; + for (int i = 0; i < returnList.length; i++) { + returnList[i] = list.get(i); + } + return returnList; + } + + public int addNumbers(int[] numbers) { + if (numbers.length == 0) { + return 0; + } + int sum = 0; + for (int i : numbers) { + sum += i; + } + return sum; + } } diff --git a/tests/StringCalculatorTest.java b/tests/StringCalculatorTest.java index 4ec9afe..8f2f241 100644 --- a/tests/StringCalculatorTest.java +++ b/tests/StringCalculatorTest.java @@ -1,12 +1,134 @@ import static org.junit.Assert.*; - import org.junit.Test; public class StringCalculatorTest { + @Test + public void isInputValid_ReturnsTrueForEmptyInput() { + StringCalculator calc = new StringCalculator(); + boolean result = calc.isInputValid(""); + assertTrue("Empty string returned false.", result); + } + + @Test + public void isInputValid_ReturnsTrueForOneNumber() { + StringCalculator calc = new StringCalculator(); + boolean result = calc.isInputValid("1"); + assertTrue("One number string returned false.", result); + } + + @Test + public void isInputValid_ReturnsTrueForTwoNumbers() { + StringCalculator calc = new StringCalculator(); + boolean result = calc.isInputValid("3,13"); + assertTrue("Two number string returned false.", result); + } + + @Test + public void isInputValid_ReturnsFalseForThreeNumbers() { + StringCalculator calc = new StringCalculator(); + boolean result = calc.isInputValid("8, 1, 3"); + assertFalse("Three number string returned true.", result); + } + + @Test + public void isInputValid_ReturnsFalseIfNoNumberAtStart() { + StringCalculator calc = new StringCalculator(); + boolean result = calc.isInputValid(", 1, 3"); + assertFalse("No number at start string returned true.", result); + } + + @Test + public void isInputValid_ReturnsFalseIfNoNumberAtEnd() { + StringCalculator calc = new StringCalculator(); + boolean result = calc.isInputValid("3,4,"); + assertFalse("No number at end string returned true.", result); + } + + @Test + public void getNumbers_ReturnsEmptyArrayForNoNumbers() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int[] numbers = calc.getNumbers(""); + int[] expected = new int[] {}; + assertArrayEquals(expected, numbers); + } + + @Test + public void getNumbers_ReturnsTheNumbersForOneNumber() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int[] numbers = calc.getNumbers("3"); + int[] expected = new int[] { 3 }; + assertArrayEquals(expected, numbers); + } + + @Test + public void getNumbers_ReturnsTheNumbersForTwoNumbers() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int[] numbers = calc.getNumbers("8, 10"); + int[] expected = new int[] { 8, 10 }; + assertArrayEquals(expected, numbers); + } + + @Test + public void addNumbers_AddsNumbersForEmptyArray() { + StringCalculator calc = new StringCalculator(); + int[] numbers = new int[] {}; + int sum = calc.addNumbers(numbers); + assertEquals(0, sum); + } + + @Test + public void addNumbers_AddsNumbersForOneNumber() { + StringCalculator calc = new StringCalculator(); + int[] numbers = new int[] { 3 }; + int sum = calc.addNumbers(numbers); + assertEquals(3, sum); + } - @Test - public void test() { - fail("Not yet implemented"); - } + @Test + public void addNumbers_AddsNumbersForTwoNumbers() { + StringCalculator calc = new StringCalculator(); + int[] numbers = new int[] { 8, 1 }; + int sum = calc.addNumbers(numbers); + assertEquals(9, sum); + } + @Test + public void add_IsCorrectForNoNumbers() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int result = calc.add(""); + assertEquals(0, result); + } + @Test + public void add_IsCorrectForOneNumber() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int result = calc.add("4"); + assertEquals(4, result); + } + @Test + public void add_IsCorrectForTwoNumbers() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int result = calc.add("5,6"); + assertEquals(11, result); + } + @Test + public void add_IsCorrectForTwoNumbersLineSeparator() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int result = calc.add("4\n8"); + assertEquals(12, result); + } + @Test(expected = StringCalculatorException.class) + public void add_ThrowsForTooManyNumbers() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int result = calc.add("4,5,6"); + } + @Test(expected = StringCalculatorException.class) + public void add_ThrowsForNoNumberAtStart() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int result = calc.add(",6,8"); + } + @Test(expected = StringCalculatorException.class) + public void add_ThrowsForNoNumberAtEnd() throws StringCalculatorException { + StringCalculator calc = new StringCalculator(); + int result = calc.add("4,5,"); + } }