Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
  • testfail
2 results

Target

Select target project
  • jludevid/assessment2-software-development-task
1 result
Select Git revision
  • main
  • testfail
2 results
Show changes

Commits on Source 4

......@@ -112,7 +112,8 @@ public class DotsAndBoxesGrid {
// A box is complete if the north and south horizontals and the east and west verticals have all been drawn.
// FIXME: You'll need to fix this code (after writing a test first).
return true;
return (this.horizontals[x][y] && this.horizontals[x][y+1] && this.verticals[x][y] && this.verticals[x+1][y]);
}
/** Tries to claim a box for a player. If the box is complete, sets the ownership and returns true. */
......@@ -140,7 +141,9 @@ public class DotsAndBoxesGrid {
}
// FIXME: You need to throw an exception if the line was already drawn.
if (this.horizontals[x][y]) {
throw new IllegalStateException(String.format("horizontal line at [%d][%d] has been drawn already", x, y));
}
this.horizontals[x][y] = true;
// Try to claim the north or south boxes
......@@ -171,7 +174,9 @@ public class DotsAndBoxesGrid {
}
// You need to throw an exception if the line was already drawn.
if (this.verticals[x][y]) {
throw new IllegalStateException(String.format("Vertical line at [%d][%d] has been drawn already", x, y));
}
this.verticals[x][y] = true;
// Try to claim the north or south boxes
boolean claimE = claimBox(x, y, player);
......
......@@ -28,4 +28,36 @@ public class DotsAndBoxesGridTest {
}
// FIXME: You need to write tests for the two known bugs in the code.
@Test
public void boxCompleteDetectsCompletedBoxes() {
// code to test that boxComplete returns true for boxes that *are complete* goes here
DotsAndBoxesGrid case1 = new DotsAndBoxesGrid(5, 5, 2);
case1.drawHorizontal(0, 0, 0);
case1.drawVertical(0, 0, 1);
case1.drawHorizontal(0, 1, 0);
case1.drawVertical(1, 0, 1);
assertTrue(case1.boxComplete(0, 0));
}
@Test
public void boxCompleteDetectsIncompleteBoxes() {
// code to test that boxComplete returns false for boxes that *are not complete* goes here
DotsAndBoxesGrid case2 = new DotsAndBoxesGrid(5, 5, 2);
case2.drawHorizontal(0, 0, 0);
case2.drawVertical(0, 0, 1);
case2.drawHorizontal(0, 1, 0);
assertFalse(case2.boxComplete(0, 0));
}
@Test
public void drawMethodsDetectRedrawnLines() {
// code to test that drawHorizontal throws an exception if the line was already drawn goes here
DotsAndBoxesGrid case3 = new DotsAndBoxesGrid(5, 5, 2);
case3.drawVertical(0, 0, 1);
case3.drawHorizontal(0, 0, 1);
assertAll(
()->assertThrows(IllegalStateException.class, ()-> case3.drawVertical(0, 0, 1), "No vertical line has been drawn"),
()->assertThrows(IllegalStateException.class, ()-> case3.drawHorizontal(0, 0, 1), "No horizonal line has been drawn")
);
}
}