Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions src/debug/ContainerArray.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@


public class ContainerArray<E> {
private int initialCapacity = 10;
private static int limit = 10;
private int currentSize = 0;
private Object[] internalArray;

public ContainerArray () {
this(10);
this(limit);
}

public ContainerArray (int initialCapacity) {
internalArray = new Object[initialCapacity];
public ContainerArray (int limit) {
internalArray = new Object[limit];
}

public void add (E element) {
Expand All @@ -23,6 +23,18 @@ public int size () {
}

public void remove (E objectToRemove) {
//remove removes the first element in the list
// and then collapse all other elements down the list
boolean collapse = false;
for(int i=0; i<currentSize; i++){
if(internalArray[i].equals(objectToRemove)){
internalArray[i] = null;
collapse = true;
}
if(collapse && i < internalArray.length-1){
internalArray[i] = internalArray[i+1];
}
}
currentSize--;
}

Expand Down
43 changes: 40 additions & 3 deletions src/debug/ContainerArrayTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,47 @@ public void testSizeChangeWithRemove () {

@Test
public void testObjectIsRemoved () {
String alligator = "Alligator";
myContainer.add("Alligator");
myContainer.add("Bear");
myContainer.remove("Bear");
assertEquals("Remove should be same reference", alligator, myContainer.get(0));
myContainer.remove("Alligator");
assertEquals("Remove should be same reference", "Bear", myContainer.get(0));

}

@Test
public void testSizeLimit(){
for(int i = 0; i < 10; i++){
myContainer.add("a");
}
myContainer.remove("a");
myContainer.add("a");
assert(myContainer.size() < 10);
}

@Test
public void testAddAfterRemovePlacement(){
myContainer.add("Alligator");
myContainer.add("Bear");
myContainer.remove("Alligator");
myContainer.add("Dog");
assertEquals("Dog", myContainer.get(1));
}

@Test
public void testDoubleAddAndRemove(){
String Alligator = "Alligator";
myContainer.add("Alligator");
myContainer.add("Alligator");
myContainer.add("Alligator");
myContainer.add("Alligator");
myContainer.remove(Alligator);
assert(myContainer.size() == 3);
assertEquals(myContainer.get(0), Alligator);

}

@Test(expected=IndexOutOfBoundsException.class)
public void testOutOfBounds(){
myContainer.get(10);
}
}
45 changes: 45 additions & 0 deletions src/tdd/Sheet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package tdd;

import java.util.HashMap;
import java.util.Map;



public class Sheet {

private Map<String, String> mySheet = new HashMap();

public String get(String string){

if(mySheet.get(string) == null){
return "";
}

String tempString = mySheet.get(string).replace(" ", "");

boolean numeric = true;
if(tempString.isEmpty()){
return mySheet.get(string);
}
for(char c: tempString.toCharArray()){
if(!Character.isDigit(c)){
numeric = false;
}
}
if(numeric){
return tempString;
}
return mySheet.get(string);


}

public void put(String cellName, String cellContents){

mySheet.put(cellName, cellContents);
}

public String getLiteral(String cellName){
return mySheet.get(cellName);
}
}
87 changes: 87 additions & 0 deletions src/tdd/TestSheet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
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("ZX34?"));
}

@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));
}

// Implement each test before going to the next one; then refactor.
@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"));
}


// Implement each test before going to the next one.
// You can split this test case if it helps.
@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));
}

// Refactor before going to each succeeding test.
@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));
}
}