Skip to content
Snippets Groups Projects
Commit 66724dae authored by Jonathan Tosio's avatar Jonathan Tosio
Browse files

wrote three failing tests: 1. box completeness, 2. redraw same line

parent ca21a9e7
No related branches found
No related tags found
No related merge requests found
......@@ -116,7 +116,6 @@ public class DotsAndBoxesUI {
}
}
public DABCanvas() {
// Size the canvas to just contain the elements
int width = corner(grid.width) + margin;
......@@ -145,7 +144,8 @@ public class DotsAndBoxesUI {
}
addMouseListener(new MouseInputAdapter() {
@Override public void mousePressed(MouseEvent e) {
@Override
public void mousePressed(MouseEvent e) {
for (Horizontal h : horizontals) {
if (h.contains(e.getX(), e.getY())) {
grid.drawHorizontal(h.col(), h.row(), grid.getPlayer());
......@@ -162,7 +162,8 @@ public class DotsAndBoxesUI {
}
@Override public void paint(Graphics g) {
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g.clearRect(0, 0, this.getWidth(), this.getHeight());
g2d.setColor(Color.WHITE);
......@@ -194,7 +195,4 @@ public class DotsAndBoxesUI {
}
}
......@@ -9,14 +9,17 @@ import org.apache.logging.log4j.Logger;
public class DotsAndBoxesGridTest {
/*
* Because Test classes are classes, they can have fields, and can have static fields.
* This field is a logger. Loggers are like a more advanced println, for writing messages out to the console or a log file.
* Because Test classes are classes, they can have fields, and can have static
* fields.
* This field is a logger. Loggers are like a more advanced println, for writing
* messages out to the console or a log file.
*/
private static final Logger logger = LogManager.getLogger(DotsAndBoxesGridTest.class);
/*
* Tests are functions that have an @Test annotation before them.
* The typical format of a test is that it contains some code that does something, and then one
* The typical format of a test is that it contains some code that does
* something, and then one
* or more assertions to check that a condition holds.
*
* This is a dummy test just to show that the test suite itself runs
......@@ -28,4 +31,51 @@ public class DotsAndBoxesGridTest {
}
// FIXME: You need to write tests for the two known bugs in the code.
@Test
public void testCompleteBox() {
logger.info("Testing whether the algorithm for testing whether a box is complete is wrong");
DotsAndBoxesGrid grid = new DotsAndBoxesGrid(1, 1, 2);
// draw three sides of a box, not four!
grid.drawVertical(0, 0, 1);
grid.drawVertical(1, 0, 1);
grid.drawHorizontal(0, 0, 1);
assertFalse(grid.boxComplete(1, 0));
}
@Test
public void testHorizontalAlreadyDrawn() {
logger.info("Testing whether an exception is thrown if a horizontal line is already drawn.");
DotsAndBoxesGrid grid = new DotsAndBoxesGrid(15, 8, 2);
grid.drawHorizontal(1, 1, 1);
Exception exeption = assertThrows(IllegalStateException.class, () -> {
grid.drawHorizontal(1, 1, 1);
});
String expectedMessage = "Horizontal line already drawn";
String actualMessage = exeption.getMessage();
assertTrue(actualMessage.contains(expectedMessage));
}
@Test
public void testVerticalAlreadyDrawn() {
logger.info("Testing whether an exception is thrown if a horizontal line is already drawn.");
DotsAndBoxesGrid grid = new DotsAndBoxesGrid(15, 8, 2);
grid.drawVertical(1, 1, 1);
Exception exeption = assertThrows(IllegalStateException.class, () -> {
grid.drawVertical(1, 1, 1);
});
String expectedMessage = "Vertical line already drawn";
String actualMessage = exeption.getMessage();
assertTrue(actualMessage.contains(expectedMessage));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment