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 VisibilityCriteriaTest { 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 testIsMetByShouldReturnTrueWhenThereAreNoVisibilityCriteria() throws Exception { VisibilityCriteria criteria = new VisibilityCriteria(); Assert.assertTrue(criteria.isMetBy(Mockito.mock(Observer.class))); } @Test public void testIsMetByShouldReturnTrueWhenThereIsASingleMetCriterion() throws Exception { VisibilityCriteria criteria = new VisibilityCriteria(metCriterion); Assert.assertTrue(criteria.isMetBy(Mockito.mock(Observer.class))); } @Test public void testIsMetByShouldReturnFalseWhenThereIsASingleUnmetCriterion() throws Exception { VisibilityCriteria criteria = new VisibilityCriteria(unmetCriterion); Assert.assertFalse(criteria.isMetBy(Mockito.mock(Observer.class))); } @Test public void testIsMetByShouldReturnTrueWhenAllCriteriaAreMet() throws Exception { VisibilityCriteria criteria = new VisibilityCriteria(metCriterion, metCriterion); Assert.assertTrue(criteria.isMetBy(Mockito.mock(Observer.class))); } @Test public void testIsMetByShouldReturnFalseWhenThereIsAtLeastOneUnmetCriterion() throws Exception { VisibilityCriteria criteria = new VisibilityCriteria(metCriterion, unmetCriterion); Assert.assertFalse(criteria.isMetBy(Mockito.mock(Observer.class))); } }