From e390312f31f67c4401cac0205e3b4ab3d00c601e Mon Sep 17 00:00:00 2001 From: Joseph Lilien Date: Thu, 7 Apr 2016 17:37:29 -0400 Subject: [PATCH] completed lab --- .classpath | 7 ++ src/debug/ContainerArray.java | 12 +++- src/debug/ContainerArrayTest.java | 38 +++++++++++ src/tdd/Sheet.java | 32 +++++++++ src/tdd/TestSheet.java | 86 ++++++++++++++++++++++++ src/voogasalad/FormDataManagerTest.java | 37 ++++++++++ src/voogasalad/SpriteControllerTest.java | 43 ++++++++++++ 7 files changed, 252 insertions(+), 3 deletions(-) create mode 100644 .classpath create mode 100644 src/tdd/Sheet.java create mode 100644 src/tdd/TestSheet.java create mode 100644 src/voogasalad/FormDataManagerTest.java create mode 100644 src/voogasalad/SpriteControllerTest.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..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()); + } + +}