Skip to content
Snippets Groups Projects
Commit 7e8aca82 authored by Juan Ludevid's avatar Juan Ludevid
Browse files

Merge branch '1-fixing-errors' into 'main'

Issue has been fixed through commit 378c7bf3

Closes #1

See merge request !1
parents 157773a3 378c7bf3
No related branches found
No related tags found
1 merge request!1Issue has been fixed through commit 378c7bf3
......@@ -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);
......
......@@ -27,5 +27,37 @@ public class DotsAndBoxesGridTest {
assertTrue(true);
}
// FIXME: You need to write tests for the two known bugs in the code.
// 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")
);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment