package org.codecranachan.asteroidpush.base.workshop.tokenboard; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import java.util.HashSet; import java.util.Set; import org.codecranachan.asteroidpush.base.workshop.tokenboard.Shape; import org.codecranachan.asteroidpush.utils.OrthogonalCoordinate; import org.junit.Test; public class ShapeTest { @Test(expected = IllegalArgumentException.class) public void CreateEmptyShape_ThrowInvalidShapeException() { new Shape(""); } @Test public void CompareDefaultShapeWithSingleSqare_ThenAreEqual() { assertEquals(new Shape("X"), new Shape()); } @Test public void CompareRectangleShapeWithSingleSquare_ThenNotEqual() { assertNotEquals(new Shape("X"), new Shape("XX")); } @Test public void CreateDefaultShape_OnlyCenterIsOccupied() { Set<OrthogonalCoordinate> expectedCoordinates = new HashSet<OrthogonalCoordinate>(); expectedCoordinates.add(new OrthogonalCoordinate(0, 0)); Shape testShape = new Shape(); assertEquals(expectedCoordinates, testShape.getOccupiedCoordinates()); } @Test public void CreateStarShape_AllAdjacentFieldsAreOccupied() { Set<OrthogonalCoordinate> expectedCoordinates = new HashSet<OrthogonalCoordinate>(); expectedCoordinates.add(new OrthogonalCoordinate(1, 1)); expectedCoordinates.add(new OrthogonalCoordinate(0, 1)); expectedCoordinates.add(new OrthogonalCoordinate(2, 1)); expectedCoordinates.add(new OrthogonalCoordinate(1, 0)); expectedCoordinates.add(new OrthogonalCoordinate(1, 2)); Shape testShape = new Shape(".X.", "XXX", ".X."); assertEquals(expectedCoordinates, testShape.getOccupiedCoordinates()); } @Test public void CreateIrregularShape_AllCornersAreOccupied() { Set<OrthogonalCoordinate> expectedCoordinates = new HashSet<OrthogonalCoordinate>(); expectedCoordinates.add(new OrthogonalCoordinate(0, 0)); expectedCoordinates.add(new OrthogonalCoordinate(0, 2)); expectedCoordinates.add(new OrthogonalCoordinate(2, 0)); expectedCoordinates.add(new OrthogonalCoordinate(2, 2)); Shape testShape = new Shape("X.X", "", "X.X"); assertEquals(expectedCoordinates, testShape.getOccupiedCoordinates()); } }