import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public final class QueenAttackCalculatorTest { /* * See https://github.com/junit-team/junit4/wiki/Rules for information on JUnit Rules in general and * ExpectedExceptions in particular. */ @Rule public ExpectedException expectedException = ExpectedException.none(); @Test public void testQueensThatDoNotShareRankFileOrDiagonalCannotAttack() { final QueenAttackCalculator calculator = new QueenAttackCalculator(new BoardCoordinate(2, 4), new BoardCoordinate(6, 6)); assertFalse(calculator.canQueensAttackOneAnother()); } @Ignore("Remove to run test") @Test public void testQueensCanAttackOnTheSameRank() { final QueenAttackCalculator calculator = new QueenAttackCalculator(new BoardCoordinate(2, 4), new BoardCoordinate(2, 6)); assertTrue(calculator.canQueensAttackOneAnother()); } @Ignore("Remove to run test") @Test public void testQueensCanAttackOnTheSameFile() { final QueenAttackCalculator calculator = new QueenAttackCalculator(new BoardCoordinate(4, 5), new BoardCoordinate(2, 5)); assertTrue(calculator.canQueensAttackOneAnother()); } @Ignore("Remove to run test") @Test public void testQueensCanAttackOnFirstDiagonal() { final QueenAttackCalculator calculator = new QueenAttackCalculator(new BoardCoordinate(2, 2), new BoardCoordinate(0, 4)); assertTrue(calculator.canQueensAttackOneAnother()); } @Ignore("Remove to run test") @Test public void testQueensCanAttackOnSecondDiagonal() { final QueenAttackCalculator calculator = new QueenAttackCalculator(new BoardCoordinate(2, 2), new BoardCoordinate(3, 1)); assertTrue(calculator.canQueensAttackOneAnother()); } @Ignore("Remove to run test") @Test public void testQueensCanAttackOnThirdDiagonal() { final QueenAttackCalculator calculator = new QueenAttackCalculator(new BoardCoordinate(2, 2), new BoardCoordinate(1, 1)); assertTrue(calculator.canQueensAttackOneAnother()); } @Ignore("Remove to run test") @Test public void testQueensCanAttackOnFourthDiagonal() { final QueenAttackCalculator calculator = new QueenAttackCalculator(new BoardCoordinate(2, 2), new BoardCoordinate(5, 5)); assertTrue(calculator.canQueensAttackOneAnother()); } @Ignore("Remove to run test") @Test public void testCoordinateWithNegativeRankNotAllowed() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Coordinate must have positive rank."); new BoardCoordinate(-2, 2); } @Ignore("Remove to run test") @Test public void testCoordinateWithRankGreaterThan7NotAllowed() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Coordinate must have rank <= 7."); new BoardCoordinate(8, 4); } @Ignore("Remove to run test") @Test public void testCoordinateWithNegativeFileNotAllowed() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Coordinate must have positive file."); new BoardCoordinate(2, -2); } @Ignore("Remove to run test") @Test public void testCoordinateWithFileGreaterThan7NotAllowed() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Coordinate must have file <= 7."); new BoardCoordinate(4, 8); } @Ignore("Remove to run test") @Test public void testNullCoordinateNotAllowed() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("You must supply valid board coordinates for both Queens."); new QueenAttackCalculator(null, new BoardCoordinate(0, 7)); } @Ignore("Remove to run test") @Test public void testQueensMustNotOccupyTheSameSquare() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Queens may not occupy the same board coordinate."); new QueenAttackCalculator(new BoardCoordinate(2, 2), new BoardCoordinate(2, 2)); } }