package org.mafagafogigante.dungeon.world;
import org.mafagafogigante.dungeon.entity.creatures.Observer;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
public class SimpleAstronomicalBodyTest {
VisibilityCriterion metCriterion = Mockito.mock(VisibilityCriterion.class);
VisibilityCriterion unmetCriterion = Mockito.mock(VisibilityCriterion.class);
@Before
public void initialize() {
Mockito.when(metCriterion.isMetBy(Mockito.any(Observer.class))).thenReturn(true);
Mockito.when(unmetCriterion.isMetBy(Mockito.any(Observer.class))).thenReturn(false);
}
@Test
public void testIsVisibleShouldReturnTrueWhenThereAreNoVisibilityCriteria() throws Exception {
SimpleAstronomicalBody astronomicalBody = new SimpleAstronomicalBody("");
Assert.assertTrue(astronomicalBody.isVisible(Mockito.mock(Observer.class)));
}
@Test
public void testIsVisibleShouldReturnTrueWhenThereIsASingleMetCriterion() throws Exception {
SimpleAstronomicalBody astronomicalBody = new SimpleAstronomicalBody("", metCriterion);
Assert.assertTrue(astronomicalBody.isVisible(Mockito.mock(Observer.class)));
}
@Test
public void testIsVisibleShouldReturnFalseWhenThereIsASingleUnmetCriterion() throws Exception {
SimpleAstronomicalBody astronomicalBody = new SimpleAstronomicalBody("", unmetCriterion);
Assert.assertFalse(astronomicalBody.isVisible(Mockito.mock(Observer.class)));
}
@Test
public void testIsVisibleShouldReturnTrueWhenAllCriteriaAreMet() throws Exception {
SimpleAstronomicalBody astronomicalBody = new SimpleAstronomicalBody("", metCriterion, metCriterion);
Assert.assertTrue(astronomicalBody.isVisible(Mockito.mock(Observer.class)));
}
@Test
public void testIsVisibleShouldReturnFalseWhenThereIsAtLeastOneUnmetCriterion() throws Exception {
SimpleAstronomicalBody astronomicalBody = new SimpleAstronomicalBody("", metCriterion, unmetCriterion);
Assert.assertFalse(astronomicalBody.isVisible(Mockito.mock(Observer.class)));
}
}