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..c400a13 100755 --- a/src/debug/ContainerArray.java +++ b/src/debug/ContainerArray.java @@ -1,8 +1,9 @@ package debug; +import java.util.ArrayList; public class ContainerArray { - private int initialCapacity = 10; + private int limit = 10; private int currentSize = 0; private Object[] internalArray; @@ -10,11 +11,13 @@ 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) { + if(currentSize == limit) return; + internalArray[currentSize++] = element; } @@ -23,11 +26,28 @@ public int size () { } public void remove (E objectToRemove) { - currentSize--; + ArrayList values = new ArrayList(); + for(int i = 0; i < internalArray.length; i++){ + if(!this.get(i).equals(objectToRemove)){ + values.add(this.get(i)); + } + } + currentSize = values.size(); + internalArray = (Object[]) values.toArray(); } + @SuppressWarnings("unchecked") public E get (int index) { return (E)internalArray[index]; } + + public boolean contains(E objectToRemove){ + for(int i = 0; i < internalArray.length;i++){ + if(objectToRemove.equals(this.get(i))){ + return true; + } + } + return false; + } } diff --git a/src/debug/ContainerArrayTest.java b/src/debug/ContainerArrayTest.java index c566d50..0d4c822 100755 --- a/src/debug/ContainerArrayTest.java +++ b/src/debug/ContainerArrayTest.java @@ -44,4 +44,12 @@ public void testObjectIsRemoved () { myContainer.remove("Bear"); assertEquals("Remove should be same reference", alligator, myContainer.get(0)); } + + @Test + public void testObjectRemovedFromContainer () { + myContainer.add("Alligator"); + myContainer.add("Bear"); + myContainer.remove("Alligator"); + assertEquals("Alligator should be removed", false, myContainer.contains("Alligator")); + } } diff --git a/src/tdd/Sheet.java b/src/tdd/Sheet.java new file mode 100644 index 0000000..a496601 --- /dev/null +++ b/src/tdd/Sheet.java @@ -0,0 +1,44 @@ +package tdd; + +import java.util.HashMap; +import java.util.Map; + +public class Sheet { + + Map mySheet = new HashMap(); + Map myLiteralSheet = new HashMap(); + + public String get (String string) { + // TODO Auto-generated method stub + if(mySheet.containsKey(string)){ + return mySheet.get(string); + } + else{ + return ""; + } + } + + public void put (String theCell, String string) { + // TODO Auto-generated method stub + String myString = string; + myLiteralSheet.put(theCell, string); + try{ + Double num = Double.parseDouble(string.trim()); + myString = string.trim(); + } + catch (NumberFormatException error){ + //do nothing + } + mySheet.put(theCell, myString); + } + + public Object getLiteral (String theCell) { + if(mySheet.containsKey(theCell)){ + return myLiteralSheet.get(theCell); + } + else{ + return ""; + } + } + +} diff --git a/src/tdd/TestSheet.java b/src/tdd/TestSheet.java new file mode 100644 index 0000000..bccef67 --- /dev/null +++ b/src/tdd/TestSheet.java @@ -0,0 +1,105 @@ +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")); + } + + // Implement each test before going to the next one. + + @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")); + } + + @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)); + } + + @Test + public void testFormulaSpec() { + Sheet sheet = new Sheet(); + sheet.put("B1", " =7"); // note leading space + assertEquals("Not a formula", " =7", sheet.get("B1")); + assertEquals("Unchanged", " =7", sheet.getLiteral("B1")); + } + + @Test + public void testConstantFormula() { + Sheet sheet = new Sheet(); + sheet.put("A1", "=7"); + assertEquals("Formula", "=7", sheet.getLiteral("A1")); + assertEquals("Value", "7", sheet.get("A1")); + } + +} diff --git a/src/voogasalad/TestCreation.java b/src/voogasalad/TestCreation.java new file mode 100644 index 0000000..025fcde --- /dev/null +++ b/src/voogasalad/TestCreation.java @@ -0,0 +1,77 @@ +package gameauthoring.characters; + +import static org.junit.Assert.*; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import org.junit.Before; +import org.junit.Test; +import engine.ISprite; +import engine.Sprite; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Dhrumil and Jeremy + * + * jes85 and drp18 + * + */ +public class TestCreation { + + private CreationController myCreationController; + private ObservableList myCreationControllerItems; + private ISprite myCreationControllerCurrentItem; + + @Before + public void setup () { + myCreationController = new CreationController(); + + try{ + Field itemsField = CreationController.class.getDeclaredField("myItems"); + itemsField.setAccessible(true); + myCreationControllerItems = (ObservableList) itemsField.get(myCreationController); + + + Field currentItemField = CreationController.class.getDeclaredField("myCurrentItem"); + currentItemField.setAccessible(true); + myCreationControllerCurrentItem = (ISprite) itemsField.get(myCreationController); + + + }catch (Exception e) { + assert(false); + } + + myCreationControllerCurrentItem = new Sprite(); + myCreationControllerItems = FXCollections.observableArrayList(); + + /* + ISprite sprite1 = new Sprite(); + ISprite sprite2 = new Sprite(); + spriteList.add(sprite1); + spriteList.add(sprite2); + + myCreationController.setItems(spriteList); + */ + } + + @Test + public void testDeletion () { + myCreationControllerItems.add(myCreationControllerCurrentItem); + + try { + Method deleteMethod = CreationController.class.getDeclaredMethod("deleteItem"); + deleteMethod.setAccessible(true); + + assertEquals(myCreationControllerItems.contains(myCreationControllerCurrentItem), true); + deleteMethod.invoke(myCreationController); + assertEquals(myCreationControllerItems.contains(myCreationControllerCurrentItem), false); + + } catch (Exception e) { + assert(false); + } + + + } + +} diff --git a/src/voogasalad/TestSprite.java b/src/voogasalad/TestSprite.java new file mode 100644 index 0000000..b894999 --- /dev/null +++ b/src/voogasalad/TestSprite.java @@ -0,0 +1,59 @@ +package voogasalad; + +import static org.junit.Assert.*; +import java.lang.reflect.Method; +import org.junit.Before; +import org.junit.Test; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import modules.IMovementModule; +import modules.UserControlledMover; +import util.ControlKeys; +import util.Coordinate; +import util.Key; +import util.TimeDuration; + +/** + * + * @author Dhrumil and Jeremy + * + * jes85 and drp18 + * + */ + +public class TestSprite { + + private ISprite sprite = new Sprite(); + + + @Before + public void setUp () { + + ControlKeys keys = new ControlKeys(new Key("Up"), new Key("Left"), new Key("Right"), new Key("Down")); + ObjectProperty mover = new SimpleObjectProperty<>(new UserControlledMover(10, keys, sprite)); + + try { + Method goRight = mover.get().getClass().getDeclaredMethod("goRight"); + goRight.setAccessible(true); + goRight.invoke(mover.get()); + } + catch (Exception e) { + assert(false); + return; + } + + TimeDuration time = new TimeDuration(100.0); + sprite.getMovementStrategyProperty().set(mover.get()); + mover.get().update(time); + + } + + @Test + public void test () { + Coordinate myCoordinate = new Coordinate(1000.0, 0.0); + + assertEquals("XPos of Sprite", myCoordinate.getX(), sprite.getLocation().get().getX(), 0); + assertEquals("YPos of Sprite", myCoordinate.getY(), sprite.getLocation().get().getY(), 0); + } + +}