package ge.edu.freeuni.sdp.snake.model;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.junit.Test;
public class ObservableMouseBeingTest {
@Test
public void testConstructor(){
Point pointMock = mock(Point.class);
Direction dirMock = mock(Direction.class);
ObservableMouseBeing target = new ObservableMouseBeing(pointMock);
Point head = target.getHead();
assertEquals(pointMock.X, head.X);
assertEquals(pointMock.Y, head.Y);
target = new ObservableMouseBeing(new Point(0, 0),dirMock);
Direction targetDir = target.getDirection();
assertEquals(dirMock, targetDir);
}
@Test
public void testMoveTo() {
Point mockHead = mock(Point.class);
Point targetHead = mock(Point.class);
Point targetNext1 = mock(Point.class);
Point targetNext2 = mock(Point.class);
ObservableSnakeAdapter mock = new ObservableSnakeAdapter(mockHead);
ObservableMouseBeing target = new ObservableMouseBeing(targetHead);
target.moveTo(targetNext1);
Point actualHead = target.getHead();
assertEquals(targetHead.X,actualHead.X);
assertEquals(targetHead.Y,actualHead.Y);
target.setPositionObserver(mock);
try{
target.moveTo(targetNext2);
}catch (IllegalStateException e) {
}
assertEquals(Direction.RIGHT,mock.getDirection());
}
@Test
public void testNotifyDirectionSet(){
ObservableMouseBeing target = new ObservableMouseBeing(new Point(0, 0));
target.notifyDirectionSet(Direction.LEFT);
assertEquals(Direction.LEFT, target.getDirection());
}
}