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..0d113a2 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;
@@ -10,8 +10,8 @@ public ContainerArray () {
this(10);
}
- public ContainerArray (int initialCapacity) {
- internalArray = new Object[initialCapacity];
+ public ContainerArray (int limit) {
+ internalArray = new Object[limit];
}
public void add (E element) {
@@ -23,11 +23,17 @@ public int size () {
}
public void remove (E objectToRemove) {
+ if (currentSize == 0 ) return;
currentSize--;
}
@SuppressWarnings("unchecked")
public E get (int index) {
+ if(index>=currentSize && index < internalArray.length){
+ return null;
+ } else if ( index >= internalArray.length ) {
+ throw new IndexOutOfBoundsException();
+ }
return (E)internalArray[index];
}
}
diff --git a/src/debug/ContainerArrayTest.java b/src/debug/ContainerArrayTest.java
index c566d50..81412fb 100755
--- a/src/debug/ContainerArrayTest.java
+++ b/src/debug/ContainerArrayTest.java
@@ -44,4 +44,42 @@ public void testObjectIsRemoved () {
myContainer.remove("Bear");
assertEquals("Remove should be same reference", alligator, myContainer.get(0));
}
+
+ // New Tests
+
+ @Test(expected = IndexOutOfBoundsException.class)
+ public void testOutOfBounds(){
+ myContainer.add("Alligator");
+ myContainer.get(11);
+ }
+
+ @Test
+ public void testGetOnNull(){
+ myContainer.add("Alligator");
+ assertEquals(null,myContainer.get(5));
+ }
+
+ @Test
+ public void testCorrectRemove () {
+ myContainer.add("Alligator");
+ myContainer.add("Bear");
+ myContainer.remove("Alligator");
+ assertEquals(null, myContainer.get(1));
+
+ }
+
+ @Test
+ public void testSizeLimit () {
+ myContainer.remove(" ");
+ assertEquals(0, myContainer.size());
+ }
+
+ @Test
+ public void testIfRightObjectRemoved () {
+ myContainer.add("Aligator");
+ myContainer.add("Bear");
+ myContainer.remove("Aligator");
+ assertEquals("Bear", myContainer.get(0));
+ }
+
}
diff --git a/src/tdd/Sheet.java b/src/tdd/Sheet.java
new file mode 100644
index 0000000..904e598
--- /dev/null
+++ b/src/tdd/Sheet.java
@@ -0,0 +1,32 @@
+package tdd;
+
+import java.util.HashMap;
+
+public class Sheet {
+ private HashMap myCells = new HashMap();
+
+ public String get(String string){
+ if(myCells.containsKey(string)){
+ return trim(myCells.get(string));
+ }
+ return "";
+ }
+
+ public void put(String key, String value){
+ myCells.put(key, value);
+ }
+
+ public String getLiteral(String key){
+ if(myCells.containsKey(key)){
+ return (myCells.get(key));
+ }
+ return "";
+ }
+ private String trim (String value) {
+ String regex = "\\s*\\d+\\s*";
+ if(value.matches(regex)){
+ return value.replaceAll("\\s+", "");
+ }
+ return value;
+ }
+}
diff --git a/src/tdd/TestSheet.java b/src/tdd/TestSheet.java
new file mode 100644
index 0000000..c733fa7
--- /dev/null
+++ b/src/tdd/TestSheet.java
@@ -0,0 +1,86 @@
+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));
+ }
+
+}
diff --git a/src/voogasalad/FormDataManagerTest.java b/src/voogasalad/FormDataManagerTest.java
new file mode 100644
index 0000000..44be41a
--- /dev/null
+++ b/src/voogasalad/FormDataManagerTest.java
@@ -0,0 +1,37 @@
+package voogasalad;
+
+import static org.junit.Assert.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import org.junit.Before;
+import org.junit.Test;
+import gameauthoring.characters.FormData;
+import gameauthoring.characters.FormDataManager;
+
+public class FormDataManagerTest {
+
+ private FormDataManager dataManager;
+
+ @Before
+ public void setup () {
+ dataManager = new FormDataManager();
+ }
+
+ @Test
+ public void testAdd () {
+ FormData data = new FormData("Label", new ArrayList(Arrays.asList("value")));
+ dataManager.add(data);
+ assertEquals("value", dataManager.getValue("Label"));
+ }
+
+ @Test
+ public void testAddList () {
+ ArrayList dataList = new ArrayList( Arrays.asList("data1", "data2", "data3"));
+ FormData data = new FormData("Label", dataList);
+ dataManager.add(data);
+
+ assertEquals(dataList, dataManager.getValues("Label"));
+
+ }
+
+}
diff --git a/src/voogasalad/SpriteControllerTest.java b/src/voogasalad/SpriteControllerTest.java
new file mode 100644
index 0000000..c49dea0
--- /dev/null
+++ b/src/voogasalad/SpriteControllerTest.java
@@ -0,0 +1,43 @@
+package voogasalad;
+
+import static org.junit.Assert.*;
+import org.junit.Before;
+import org.junit.Test;
+import engine.ILevel;
+import engine.Level;
+import engine.sprite.ISprite;
+import engine.sprite.Sprite;
+import gameauthoring.levels.sprites.SpriteController;
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import util.Coordinate;
+
+public class SpriteControllerTest {
+
+ ObjectProperty level;
+ SpriteController controller;
+
+ @Before
+ public void setup () {
+ level = new SimpleObjectProperty<>(new Level());
+ controller = new SpriteController(level.get());
+ }
+
+ @Test
+ public void testMoveSprite () {
+ ObjectProperty sprite = new SimpleObjectProperty<>(new Sprite());
+ controller.moveSprite(sprite, 5, 5);
+ Coordinate point = sprite.get().getLocation().get();
+ assertEquals(5, point.getX(), .01);
+ assertEquals(5, point.getY(), .01);
+ }
+
+ @Test
+ public void testSpriteDelete() {
+ ObjectProperty sprite = new SimpleObjectProperty<>(new Sprite());
+ level.get().add(sprite.get(), new Coordinate(0,0));
+ controller.deleteSprite(sprite);
+ assertEquals(0, level.get().getSprites().size());
+ }
+
+}