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 92b411f..4db0f25 100644 Binary files a/bin/Spreadsheet.class and b/bin/Spreadsheet.class differ diff --git a/bin/SpreadsheetTest.class b/bin/SpreadsheetTest.class index e7086bd..85c8e4e 100644 Binary files a/bin/SpreadsheetTest.class and b/bin/SpreadsheetTest.class differ diff --git a/src/Spreadsheet.java b/src/Spreadsheet.java index e4f120b..491af51 100644 --- a/src/Spreadsheet.java +++ b/src/Spreadsheet.java @@ -1,18 +1,35 @@ +import java.util.HashMap; public class Spreadsheet { - + + private HashMap 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")); } } +