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
7 changes: 7 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>
22 changes: 13 additions & 9 deletions src/debug/ContainerArray.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,37 @@
package debug;

import java.util.ArrayList;
import java.util.List;

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

public ContainerArray () {
this(10);
}

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

public void add (E element) {
internalArray[currentSize++] = element;
if(internalArray.size() == limit) {
throw new IndexOutOfBoundsException();
}
internalArray.add(element);
}

public int size () {
return currentSize;
return internalArray.size();
}

public void remove (E objectToRemove) {
currentSize--;
internalArray.remove(objectToRemove);
}

@SuppressWarnings("unchecked")
public E get (int index) {
return (E)internalArray[index];
return internalArray.get(index);
}
}
25 changes: 25 additions & 0 deletions src/debug/ContainerArrayTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,29 @@ public void testObjectIsRemoved () {
myContainer.remove("Bear");
assertEquals("Remove should be same reference", alligator, myContainer.get(0));
}

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

@Test(expected=IndexOutOfBoundsException.class)
public void testAddLimitDefault10 () {
for(int i =0; i<10; i++) {
myContainer.add("Alligator");
}
myContainer.add("Bear");

}

@Test(expected=IndexOutOfBoundsException.class)
public void testGetLimitDefault10 () {
myContainer.get(11);

}

}
32 changes: 32 additions & 0 deletions src/tdd/Sheet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package tdd;

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

public class Sheet {

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

public String get (String key) {
if (!myMap.containsKey(key)) {
return "";
}
String value = myMap.get(key);
if (!value.matches("[ ]+") && value.matches("[0-9 ]+")) {
value = value.trim();
}
return value;
}

public void put (String theCell, String value) {
myMap.put(theCell, value);
}

public Object getLiteral (String key) {
if (!myMap.containsKey(key)) {
return "";
}
return myMap.get(key);
}

}
84 changes: 84 additions & 0 deletions src/tdd/TestSheet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
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));
}


}
2 changes: 2 additions & 0 deletions src/voogasalad/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
Practice writing Unit Tests by choosing two classes from your VOOGASalad project to test.

We chose to test our path following mechanism for sprites, as well as our manager that handles interactions and updating sprites. We chose these classes because they were modular enough to be tested without having to construct an entire game, but have complex enough functionality to construct interesting tests.
54 changes: 54 additions & 0 deletions src/voogasalad/TestPathFollow.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package voogasalad;

import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import engine.modules.PathFollowMover;
import engine.sprite.Sprite;
import util.Coordinate;
import util.TimeDuration;


public class TestPathFollow {

private Sprite mySprite;

@Before
public void setUp () {
mySprite = new Sprite();
}

@Test
public void testDontMove () {

mySprite.getLocation().set(new Coordinate(10, 10));
List<Coordinate> path = new ArrayList<>();
PathFollowMover mover = new PathFollowMover(1, path, mySprite);
mySprite.getMovementStrategyProperty().set(mover);
Coordinate beforeMove = mySprite.getLocation().get();
mySprite.update(new TimeDuration(100));
Coordinate afterMove = mySprite.getLocation().get();
assertEquals("Should not has moved", beforeMove.getX(), afterMove.getX(), .001);
assertEquals("Should not has moved", beforeMove.getY(), afterMove.getY(), .001);

}

@Test
public void testInitialMovement () {

mySprite.getLocation().set(new Coordinate(10, 10));
List<Coordinate> path = new ArrayList<>();
path.add(new Coordinate(11, 11));
PathFollowMover mover = new PathFollowMover(1, path, mySprite);
mySprite.getMovementStrategyProperty().set(mover);
Coordinate beforeMove = mySprite.getLocation().get();
mySprite.update(new TimeDuration(100));
Coordinate afterMove = mySprite.getLocation().get();
assert(afterMove.getX() > beforeMove.getX());
assert(afterMove.getY() > beforeMove.getY());

}

}
49 changes: 49 additions & 0 deletions src/voogasalad/TestSpriteManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package voogasalad;

import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import engine.ISpriteManager;
import engine.SpriteManager;
import engine.modules.PathFollowMover;
import engine.sprite.ISprite;
import engine.sprite.Sprite;
import util.Coordinate;
import util.TimeDuration;


public class TestSpriteManager {

private ISpriteManager mySpriteManager;

@Before
public void setUp () {
mySpriteManager = new SpriteManager();
}

@Test
public void updateAllSprites () {
for (int i = 0; i < 10; i++) {
mySpriteManager.add(createMovementSprite(), new Coordinate(10, 10));
}
mySpriteManager.update(new TimeDuration(100));
mySpriteManager.getSprites().forEach(sprite -> testSprite(sprite.get()));
}

private void testSprite (ISprite sprite) {
assert (sprite.getLocation().get().getX() != 10 && sprite.getLocation().get().getY() != 10);
}

private ISprite createMovementSprite () {
ISprite mySprite = new Sprite();
mySprite.getLocation().set(new Coordinate(10, 10));
List<Coordinate> path = new ArrayList<>();
PathFollowMover mover = new PathFollowMover(1, path, mySprite);
mySprite.getMovementStrategyProperty().set(mover);
return mySprite;

}

}