Added tests for Piece and added a valid move check.
This commit is contained in:
parent
6025d318ff
commit
a1e6bad176
11
.idea/libraries/junit.xml
Normal file
11
.idea/libraries/junit.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="junit" type="repository">
|
||||||
|
<properties maven-id="junit:junit:4.13.2" />
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13.2/junit-4.13.2.jar!/" />
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
68
src/Assignments/A1/models/Board.java
Normal file
68
src/Assignments/A1/models/Board.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
package Assignments.A1.models;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class keeps track of the current state (whether in permutation or not) of the board.
|
||||||
|
*
|
||||||
|
* @author Jonathan Turner
|
||||||
|
* @version Spring 2024
|
||||||
|
*/
|
||||||
|
public class Board {
|
||||||
|
|
||||||
|
private final Piece[] pieces;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor that generates the solved board.
|
||||||
|
*
|
||||||
|
* @precondition none
|
||||||
|
* @postcondition a solved board is created.
|
||||||
|
*/
|
||||||
|
public Board() {
|
||||||
|
this.pieces = new Piece[9];
|
||||||
|
for (int index = 1; index <= 9; index++) {
|
||||||
|
this.pieces[index-1] = new Piece(index-1, index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor used to create a board with a pre-provided board.
|
||||||
|
*
|
||||||
|
* @precondition board.length == 9
|
||||||
|
* @postcondition a board is created with given locations
|
||||||
|
*
|
||||||
|
* @param board the provided state of the board.
|
||||||
|
*/
|
||||||
|
public Board(Piece[] board) {
|
||||||
|
if (board.length != 9) {
|
||||||
|
throw new IllegalArgumentException("The board must be a array size of 9.");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.pieces = board;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isTaken(int loc) {
|
||||||
|
if (invalidLocation(loc)) {
|
||||||
|
throw new IllegalArgumentException("Invalid location specified. Valid Range: 0 <= Location <= 8");
|
||||||
|
}
|
||||||
|
return (this.pieces[loc].getValue() != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the array of pieces.
|
||||||
|
*
|
||||||
|
* @precondition none
|
||||||
|
* @postcondition none
|
||||||
|
* @return the array of pieces.
|
||||||
|
*/
|
||||||
|
public Piece[] getPieces() {
|
||||||
|
return this.pieces;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Private Methods Below. End of Java Docs. */
|
||||||
|
|
||||||
|
/* Checks if a given location is a valid location. */
|
||||||
|
private boolean invalidLocation(int loc) {
|
||||||
|
return (loc >= 0 && loc <= 8);
|
||||||
|
}
|
||||||
|
}
|
75
src/Assignments/A1/tests/Piece/TestConstructor.java
Normal file
75
src/Assignments/A1/tests/Piece/TestConstructor.java
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
package Assignments.A1.tests.Piece;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
import Assignments.A1.models.Piece;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the constructor for Piece.java.
|
||||||
|
*
|
||||||
|
* @author Jonathan Turner
|
||||||
|
* @version Spring 2024
|
||||||
|
*/
|
||||||
|
public class TestConstructor {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testZeroValue() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
new Piece(5, 0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOneValue() {
|
||||||
|
Piece test = new Piece(5, 1);
|
||||||
|
assertEquals(1, test.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEightValue() {
|
||||||
|
Piece test = new Piece(5, 8);
|
||||||
|
assertEquals(8, test.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNineValue() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
new Piece(5, 9);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNegativeLoc() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
new Piece(-1, 5);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testZeroLoc() {
|
||||||
|
Piece test = new Piece(0, 5);
|
||||||
|
assertEquals(0, test.getLoc());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEightLoc() {
|
||||||
|
Piece test = new Piece(8, 5);
|
||||||
|
assertEquals(8, test.getLoc());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNineLoc() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
new Piece(9, 5);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void validParams() {
|
||||||
|
Piece test = new Piece(3, 6);
|
||||||
|
assertEquals(3, test.getLoc());
|
||||||
|
assertEquals(6, test.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
60
src/Assignments/A1/tests/Piece/TestMoveTo.java
Normal file
60
src/Assignments/A1/tests/Piece/TestMoveTo.java
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
package Assignments.A1.tests.Piece;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
import Assignments.A1.models.Piece;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the moveTo() for Piece.java.
|
||||||
|
*
|
||||||
|
* @author Jonathan Turner
|
||||||
|
* @version Spring 2024
|
||||||
|
*/
|
||||||
|
public class TestMoveTo {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNegativeMove() {
|
||||||
|
Piece test = new Piece(3, 5);
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
test.moveTo(-1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testZeroMove() {
|
||||||
|
Piece test = new Piece(3, 5);
|
||||||
|
test.moveTo(0);
|
||||||
|
assertEquals(0, test.getLoc());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEightMove() {
|
||||||
|
Piece test = new Piece(5, 5);
|
||||||
|
test.moveTo(8);
|
||||||
|
assertEquals(8, test.getLoc());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNineMove() {
|
||||||
|
Piece test = new Piece(3, 5);
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
test.moveTo(9);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void MoveToSameLocation() {
|
||||||
|
Piece test = new Piece(3, 5);
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
test.moveTo(3);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ValidMove() {
|
||||||
|
Piece test = new Piece(3, 5);
|
||||||
|
test.moveTo(4);
|
||||||
|
assertEquals(4, test.getLoc());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user