package ge.edu.freeuni.sdp.snake.presenter;
import ge.edu.freeuni.sdp.snake.model.Configuration;
import java.util.Arrays;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import static org.mockito.Mockito.*;
public class LevelPresenterTest {
private Configuration conf;
private LevelPresenter presenter;
private String[] names = { "level 1",
"level 2", "level 3",
"level 4" };
@Before
public void setUpClass(){
conf = mock(Configuration.class);
presenter = new LevelPresenter(conf);
}
@Test
public void testMethodGetLevelNames(){
when(conf.getLevelNames()).thenReturn(names);
String[] result = presenter.getLevelNames();
Assert.assertEquals(true, Arrays.deepEquals(names, result));
}
@Test
public void testSetSelectionInvalidIndex(){
LevelPresenter presenterSpy = spy(presenter);
when(presenterSpy.getLevelNames()).thenReturn(names);
boolean result = presenter.setSelection(-1);
Assert.assertEquals(false, result);
result = presenter.setSelection(1);
Assert.assertEquals(true, result);
result = presenter.setSelection(4);
Assert.assertEquals(false, result);
result = presenter.setSelection(9);
Assert.assertEquals(false, result);
}
@Test
public void testSetSelectionNotifyLevelSelectionOnNull(){
LevelPresenter presenterSpy = spy(presenter);
when(presenterSpy.getLevelNames()).thenReturn(names);
LevelSelectionListener listen = mock(LevelSelectionListener.class);
presenter.setLevelSelectionListener(listen);
when(conf.getSelectedLevelDescription()).thenReturn("level 3");
boolean result = presenter.setSelection(2);
verify(conf).selectLevel(2);
verify(listen).updateDescription("level 3");
Assert.assertEquals(true, result);
}
}