From a19cafac19b4e75d7832ae1087b9c83e1017603c Mon Sep 17 00:00:00 2001 From: Raghav Date: Thu, 7 Apr 2016 17:25:51 -0400 Subject: [PATCH] finished lab, rk145, blc14 --- .classpath | 7 +++ src/debug/ContainerArray.java | 22 ++++++-- src/debug/ContainerArrayTest.java | 13 +++++ src/tdd/Sheet.java | 50 ++++++++++++++++++ src/tdd/TestSheet.java | 85 +++++++++++++++++++++++++++++++ 5 files changed, 172 insertions(+), 5 deletions(-) create mode 100644 .classpath create mode 100644 src/tdd/Sheet.java create mode 100644 src/tdd/TestSheet.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..3e0fb27 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/debug/ContainerArray.java b/src/debug/ContainerArray.java index 124ece6..9f90873 100755 --- a/src/debug/ContainerArray.java +++ b/src/debug/ContainerArray.java @@ -2,7 +2,7 @@ public class ContainerArray { - private int initialCapacity = 10; + private int limit = 10; private int currentSize = 0; private Object[] internalArray; @@ -11,11 +11,12 @@ public ContainerArray () { } public ContainerArray (int initialCapacity) { - internalArray = new Object[initialCapacity]; + internalArray = new Object[limit]; } public void add (E element) { - internalArray[currentSize++] = element; + if (currentSize == limit) return; + internalArray[currentSize++] = element; } public int size () { @@ -23,11 +24,22 @@ public int size () { } public void remove (E objectToRemove) { - currentSize--; + currentSize--; + + int i = 0; + while (!internalArray[i].equals(objectToRemove)) { + i++; + } + if (i < currentSize) { + for (int k = i; k < currentSize; k++) { + internalArray[k] = internalArray[k+1]; + } + } + internalArray[currentSize] = null; } @SuppressWarnings("unchecked") public E get (int index) { return (E)internalArray[index]; } -} +} \ No newline at end of file diff --git a/src/debug/ContainerArrayTest.java b/src/debug/ContainerArrayTest.java index c566d50..5524644 100755 --- a/src/debug/ContainerArrayTest.java +++ b/src/debug/ContainerArrayTest.java @@ -43,5 +43,18 @@ public void testObjectIsRemoved () { myContainer.add("Bear"); myContainer.remove("Bear"); assertEquals("Remove should be same reference", alligator, myContainer.get(0)); + myContainer.remove("Alligator"); + assertEquals(null, myContainer.get(0)); + } + + @Test + public void testSizeLimit() { + for (int i = 0; i < 11; i++) { + myContainer.add("Yo"); + } + assertEquals(10, myContainer.size()); } + } + + diff --git a/src/tdd/Sheet.java b/src/tdd/Sheet.java new file mode 100644 index 0000000..a73b537 --- /dev/null +++ b/src/tdd/Sheet.java @@ -0,0 +1,50 @@ +package tdd; + +import java.util.HashMap; +import java.util.Map; + +public class Sheet { + + private Map mySheet; + + public Sheet(){ + mySheet = new HashMap(); + } + + public String get(String string) { + // TODO Auto-generated method stub + String val = mySheet.get(string); + if(val == null){ + return ""; + } + return strip(val); + } + + public void put(String theCell, String string) { + // TODO Auto-generated method stub + mySheet.put(theCell, string); + } + + private String strip(String string){ + if(isNumeric(string)){ + return string.trim(); + } + return string; + } + + private boolean isNumeric(String s) { + return s.matches("\\s+[-+]?\\d+\\.?\\d+\\s+"); + } + + public Object getLiteral(String theCell) { + // TODO Auto-generated method stub + String val = mySheet.get(theCell); + if(val == null){ + return ""; + } + return val; + } + + +} + diff --git a/src/tdd/TestSheet.java b/src/tdd/TestSheet.java new file mode 100644 index 0000000..a0bbe84 --- /dev/null +++ b/src/tdd/TestSheet.java @@ -0,0 +1,85 @@ +package tdd; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class TestSheet { + + @Test + public void testThatCellsAreEmptyByDefault() { + Sheet sheet = new Sheet(); + assertEquals("", sheet.get("A1")); + assertEquals("", sheet.get("ZX347")); + } + + @Test + public void testThatTextCellsAreStored() { + Sheet sheet = new Sheet(); + String theCell = "A21"; + + sheet.put(theCell, "A string"); + assertEquals("A string", sheet.get(theCell)); + + sheet.put(theCell, "A different string"); + assertEquals("A different string", sheet.get(theCell)); + + sheet.put(theCell, ""); + assertEquals("", sheet.get(theCell)); + } + + @Test + public void testThatManyCellsExist() { + Sheet sheet = new Sheet(); + sheet.put("A1", "First"); + sheet.put("X27", "Second"); + sheet.put("ZX901", "Third"); + + assertEquals("A1", "First", sheet.get("A1")); + assertEquals("X27", "Second", sheet.get("X27")); + assertEquals("ZX901", "Third", sheet.get("ZX901")); + + sheet.put("A1", "Fourth"); + assertEquals("A1 after", "Fourth", sheet.get("A1")); + assertEquals("X27 same", "Second", sheet.get("X27")); + assertEquals("ZX901 same", "Third", sheet.get("ZX901")); + } + + @Test + public void testThatNumericCellsAreIdentifiedAndStored() { + Sheet sheet = new Sheet(); + String theCell = "A21"; + + sheet.put(theCell, "X99"); // "Obvious" string + assertEquals("X99", sheet.get(theCell)); + + sheet.put(theCell, "14"); // "Obvious" number + assertEquals("14", sheet.get(theCell)); + + sheet.put(theCell, " 99 X"); // Whole string must be numeric + assertEquals(" 99 X", sheet.get(theCell)); + + sheet.put(theCell, " 1234 "); // Blanks ignored + assertEquals("1234", sheet.get(theCell)); + + sheet.put(theCell, " "); // Just a blank + assertEquals(" ", sheet.get(theCell)); + } + + @Test + public void testThatWeHaveAccessToCellLiteralValuesForEditing() { + Sheet sheet = new Sheet(); + String theCell = "A21"; + + sheet.put(theCell, "Some string"); + assertEquals("Some string", sheet.getLiteral(theCell)); + + sheet.put(theCell, " 1234 "); + assertEquals(" 1234 ", sheet.getLiteral(theCell)); + + sheet.put(theCell, "=7"); // Foreshadowing formulas:) + assertEquals("=7", sheet.getLiteral(theCell)); + } + + +}