package ge.edu.freeuni.sdp.snake.model; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.junit.Test; public class ObservableSnakeAdapterTest { @Test public void testConstructor(){ Point pointMock = mock(Point.class); Direction dirMock = mock(Direction.class); ObservableSnakeAdapter target = new ObservableSnakeAdapter(pointMock); Point head = target.getHead(); assertEquals(pointMock.X, head.X); assertEquals(pointMock.Y, head.Y); target = new ObservableSnakeAdapter(new Point(0, 0),dirMock); Direction targetDir = target.getDirection(); assertEquals(dirMock, targetDir); } @Test public void testSetDirection() { ObservableMouseBeing mockObserver = mock(ObservableMouseBeing.class); ObservableSnakeAdapter target = new ObservableSnakeAdapter(new Point(2, 2)); target.setDirection(Direction.LEFT); assertNotEquals(Direction.LEFT, target.getDirection()); target.setDirectionObserver(mockObserver); target.setDirection(Direction.LEFT); verify(mockObserver).notifyDirectionSet(Direction.LEFT); } @Test public void testNotifyMoveTo_Direction_Change() { Point point = new Point(2, 2); ObservableSnakeAdapter target = new ObservableSnakeAdapter(point); target.notifyMoveTo(new Point(1, 2)); assertEquals(target.getDirection(), Direction.LEFT); } @Test public void testNotifyMoveTo_No_Direction_Change() { Point point = new Point(2, 2); ObservableSnakeAdapter target = new ObservableSnakeAdapter(point); target.notifyMoveTo(new Point(3, 2)); assertEquals(target.getDirection(), Direction.RIGHT); } }