From 1d333ceed7cc7ec8cfca70451334177fd8387e1d Mon Sep 17 00:00:00 2001 From: jkorpeli Date: Fri, 14 Oct 2016 16:44:18 +0300 Subject: [PATCH] done until 5. --- bin/.gitignore | 2 ++ bin/Spreadsheet.class | Bin 613 -> 1461 bytes bin/SpreadsheetTest.class | Bin 490 -> 1796 bytes src/Spreadsheet.java | 29 +++++++++++++++---- tests/SpreadsheetTest.java | 56 +++++++++++++++++++++++++++++++++++-- 5 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 bin/.gitignore diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..2079672 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,2 @@ +/Spreadsheet.class +/SpreadsheetTest.class diff --git a/bin/Spreadsheet.class b/bin/Spreadsheet.class index 92b411f05752a6cee6d06c9769e1b70d40aa0840..4db0f25ddec1341dc06aff61f232be99a09c81ec 100644 GIT binary patch literal 1461 zcmZ`&T~8BH5IwiMuu!%Xil870g2J{G5JmYY0)ikAz=s-)hL@$R?c!2!yXC*|AAG<> zi_ygRY~o)cp1WOOv6!^?WA4nEb7p3LpMC!cU>s{2A_7g>L)S8QO9jjFG^heCd*+cj z>X^m+=&PMQE9VJB3i|?W>;6O8vz^fuvsBnH4>JOdSvy}ey|QZwOx1eKR82lw)^qJ* zK2vL%B~JZ}U9`Pf0mVpe38;$)yH*qmVmcZT)eskGt;runGh&SpNa(0Ty+C~3E?S%A z{T<7FZSFYalvqE=na-B!+VUP4Rj*)|1Y+wU?c|{3Es7m5Y8fVLO)__vj+?msPe`?B znQ%y8(s1WWd8-AX*qr4!lImsUgIbYONpc#zhEuI~a!Zox*Kr>Y7&DljiinghS>K~d8gzzRG`CHT@A|($V>NO9U~ZJdmXEo_X>V{ zSLMT)#CaspZd@NKFs|bXo-&hNVn;34&PneO_aII3T>~Zs#Gr(o){(&s^I0Furo$dz zi8xow2u@mk|B~w-xD@){c1x_4>X>qiWj!-%i(JY&DV%*F79zy6@GpErsTwO*LaJdfj3G;lxq_$ z3-l7)TT-XcQ$NuB_7p8&(fZlpx0+F*=;bNRMF(4r7P%rb4e^307Mb< z0eh>i7l2IxAj2_0=m?<)FNpr}1p#Xzq8n*Nt-#n!GgDgKt>EFbn*N5z$EZu63@0Wk zm^wyhry88%Y4zOEI7vK{G8JEDA0+~?miL0%g_4e5rtzN-R|H;uB5b^7n>X OsF6z#-vw5DuhqY`O(5m~ literal 613 zcma)2%T5A85Ug32hdcyd=us~U9OPoWVDw<(X`=@W_hFg9kaaQ3!guM(#DgE;M;WVk zH%i1rFWuGCT~*!l{_*+-;0y;vI0}{iV`TJbJ~1XP!c}NY^-^~O9ge$q!>RFOg~Ejm zZG5SaYqbXo?)7YB%E)1(iaZJmb8p! zWsjm`LyzN@_ifydBO8u;?e!D~VTrcuiwBhbG7+L!ir@JdRxAp?~| zR-j|Y-m@!B+ig^yZ0*Rp61X(yxQ<#7Xep0w3S^hPZJ9?4+Dx?K664eySFVM-ThiaK zx0+JGs(E$0xoP{3z9)}a^~wnZinXs~s{-AM@-LT3qh#uB?_WUFZWY7Umb<&=LOMYQG7g&%Y1ro*xQQV>XAnfM7k0tGv|t$AuK zY&HeD%C)bHP}PaIMwOy{Is?+@HT?srl=Kbs3uKli4GeOhoY4fom>9+gs~1QXvy=|L zu6)OBR8w-v%jl-|yl$d|GCdpG^ZE&%qu;vfe8)_T;|9s%%r^XxP05y@>nsZE%C7(Y zr~Ue{SDJoJHdxlZq>Bb_=`3y=xJ~hiIE`r&GaAN_dv-HqqXe!*uAa-@OW&y*xTD>s z4E(0|83S`1p5YbW_xz+vae4;s@m{hAgDC%!fhER0yy^s&P5h1(0W(fu-($Z*uxo<*G$?aH`(e&f0=kJD1J23Ew(=vZdL8Nsr^y_lf(KFnc8l(;S z-PALIA+RF+hX8{ojz8BNZx!x>d+XR+82|B*L7uDr3>sYKYQ_fK3%s#<{F*^~V$~7Z z0gw2W;koc0#bNoLNSJx7&(%# z`mBL{42@fT`?zKe{DWNfUu0VjFshYXqEswodG4ZeH#+#^45KHdK60eqo2XCFI*-gp z4CGK;)HFBGOH;8XBbv%SrmV?RX!=OgPnto}3|)}s*YncMT6ZIwSxr+tg=T~_*GN+$ zP5FW}^C!~0NIKPff$?3=9k=4AK+1`dL^?Qi~_9H;CY15MpEy_RB9(s7x(U$jmLsNzF~o zD@je^Vh~{vV`mU$WDv+NO4rXS&C4v&cPuVWEh^z*5ND8JWMD~4%*N-Rs% z&q>Tn*AFf!%FIi*)(o30$E?rDG}(_i%-)275eOL=*n|XkFbHo1vX~gSfFu`?W? hm = new HashMap(); + public String get(String cell) { - // to be implemented - return null; + return hm.get(cell); } public void set(String cell, String value) { - // to be implemented + hm.put(cell, value); } public String evaluate(String cell) { - // to be implemented - return null; + + String value = hm.get(cell); + String first = value.substring(0,1); + String last = value.substring(value.length() - 1); + + if(isNumeric(value)){ + return value; + }else if(first.equals("'") && last.equals("'")){ + return value.substring(1, value.length()-1); + }else{ + return "#Error"; + } + } + + public static boolean isNumeric(String str) + { + return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal. } } diff --git a/tests/SpreadsheetTest.java b/tests/SpreadsheetTest.java index 9e0936a..ea5f84a 100644 --- a/tests/SpreadsheetTest.java +++ b/tests/SpreadsheetTest.java @@ -6,10 +6,62 @@ public class SpreadsheetTest { + @Test - public void test() { - fail("Not yet implemented"); + public void test_CreateSpreadsheet(){ + Spreadsheet sheet = new Spreadsheet(); + + assertNotNull(sheet); + + } + + @Test + public void testGetter() { + Spreadsheet sheet = new Spreadsheet(); + sheet.set("A1", "15"); + + assertTrue(sheet.get("A1") == "15"); + } + + @Test + public void testNegativeNumber() { + Spreadsheet sheet = new Spreadsheet(); + sheet.set("A2", "-15"); + + assertTrue(sheet.evaluate("A2") == "-15"); + } + @Test + public void testNonNumeric(){ + Spreadsheet sheet = new Spreadsheet(); + sheet.set("A3", "A5"); + + assertTrue(sheet.evaluate("A3") == "#Error"); + } + + @Test + public void testString(){ + Spreadsheet sheet = new Spreadsheet(); + sheet.set("A1", "'a string'"); + + assertEquals("a string",sheet.evaluate("A1")); + } + + @Test + public void testUnquotedString(){ + Spreadsheet sheet = new Spreadsheet(); + sheet.set("A1", "a string"); + + assertEquals("#Error", sheet.evaluate("A1")); + } + + @Test + public void testFormulas(){ + Spreadsheet sheet = new Spreadsheet(); + sheet.set("A1", "='a string'"); + + assertEquals("a string", sheet.evaluate("A1")); } } +