Search in sources :

Example 1 with GameWorld

use of de.gurkenlabs.litiengine.environment.GameWorld in project litiengine by gurkenlabs.

the class EntityTests method testRemoveTagEmpty.

@Test
void testRemoveTagEmpty() {
    // arrange
    String tag = "test tag";
    List<String> tagListSpy = spy(new ArrayList<>());
    tagListSpy.add(tag);
    TestEntity entitySpy = spy(new TestEntity());
    when(entitySpy.getTags()).thenReturn(tagListSpy);
    Environment environmentMock = mock(Environment.class);
    Map<String, Collection<IEntity>> entities = new HashMap<>();
    List<IEntity> entitiesContent = new ArrayList<>();
    entitiesContent.add(entitySpy);
    entities.put(tag, entitiesContent);
    when(environmentMock.getEntitiesByTag()).thenReturn(entities);
    when(entitySpy.getEnvironment()).thenReturn(environmentMock);
    MockedStatic<Game> gameMockedStatic = mockStatic(Game.class);
    GameWorld gameWorldMock = mock(GameWorld.class);
    when(gameWorldMock.environment()).thenReturn(mock(Environment.class));
    gameMockedStatic.when(Game::world).thenReturn(gameWorldMock);
    assertEquals(1, entities.size());
    // act
    entitySpy.removeTag(tag);
    // assert
    verify(tagListSpy, times(1)).remove(tag);
    assertEquals(0, entities.size());
    // cleanup
    gameMockedStatic.close();
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) GameWorld(de.gurkenlabs.litiengine.environment.GameWorld) Game(de.gurkenlabs.litiengine.Game) Environment(de.gurkenlabs.litiengine.environment.Environment) Collection(java.util.Collection) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 2 with GameWorld

use of de.gurkenlabs.litiengine.environment.GameWorld in project litiengine by gurkenlabs.

the class LightSourceTests method render_withDynamicShadows.

@Test
void render_withDynamicShadows() {
    // arrange
    GameConfiguration actualGameConfigSpy = spy(Game.config());
    GraphicConfiguration actualGraphicsConfigSpy = spy(actualGameConfigSpy.graphics());
    MockedStatic<Game> gameMockedStatic = mockStatic(Game.class);
    gameMockedStatic.when(Game::config).thenReturn(// otherwise it is null because of the mock
    actualGameConfigSpy);
    when(actualGameConfigSpy.graphics()).thenReturn(actualGraphicsConfigSpy);
    when(actualGraphicsConfigSpy.renderDynamicShadows()).thenReturn(true);
    Environment mockedEnv = mock(Environment.class);
    GameWorld mockedWorld = mock(GameWorld.class);
    when(mockedWorld.environment()).thenReturn(mockedEnv);
    gameMockedStatic.when(Game::world).thenReturn(mockedWorld);
    Graphics2D graphicMock = mock(Graphics2D.class);
    assertTrue(Game.config().graphics().renderDynamicShadows());
    // act
    lightSourceInactiveSpy.render(graphicMock);
    // assert
    verify(mockedWorld, times(1)).environment();
    // cleanup
    gameMockedStatic.close();
}
Also used : Game(de.gurkenlabs.litiengine.Game) GameConfiguration(de.gurkenlabs.litiengine.configuration.GameConfiguration) Environment(de.gurkenlabs.litiengine.environment.Environment) GameWorld(de.gurkenlabs.litiengine.environment.GameWorld) GraphicConfiguration(de.gurkenlabs.litiengine.configuration.GraphicConfiguration) Graphics2D(java.awt.Graphics2D) Test(org.junit.jupiter.api.Test)

Example 3 with GameWorld

use of de.gurkenlabs.litiengine.environment.GameWorld in project litiengine by gurkenlabs.

the class LightSourceTests method updateAmbientLayers_delegatesWhenLoaded.

@Test
void updateAmbientLayers_delegatesWhenLoaded() {
    // arrange
    when(lightSourceInactiveSpy.isLoaded()).thenReturn(true);
    GameWorld actualWorld = spy(Game.world());
    MockedStatic<Game> gameMockedStatic = mockStatic(Game.class);
    gameMockedStatic.when(Game::world).thenReturn(// otherwise it is null because of the mock
    actualWorld);
    Environment environmentMock = mock(Environment.class);
    when(actualWorld.environment()).thenReturn(environmentMock);
    AmbientLight ambientLightMock = mock(AmbientLight.class);
    when(environmentMock.getAmbientLight()).thenReturn(ambientLightMock);
    StaticShadowLayer staticShadowLayerMock = mock(StaticShadowLayer.class);
    when(environmentMock.getStaticShadowLayer()).thenReturn(staticShadowLayerMock);
    // act
    // means to trigger private method within
    lightSourceInactiveSpy.setColor(Color.GREEN);
    // assert
    verify(lightSourceInactiveSpy, times(1)).isLoaded();
    verify(ambientLightMock, times(1)).updateSection(any(Rectangle2D.class));
    verify(staticShadowLayerMock, times(1)).updateSection(any(Rectangle2D.class));
    // cleanup
    gameMockedStatic.close();
}
Also used : Game(de.gurkenlabs.litiengine.Game) Rectangle2D(java.awt.geom.Rectangle2D) Environment(de.gurkenlabs.litiengine.environment.Environment) GameWorld(de.gurkenlabs.litiengine.environment.GameWorld) StaticShadowLayer(de.gurkenlabs.litiengine.graphics.StaticShadowLayer) AmbientLight(de.gurkenlabs.litiengine.graphics.AmbientLight) Test(org.junit.jupiter.api.Test)

Example 4 with GameWorld

use of de.gurkenlabs.litiengine.environment.GameWorld in project litiengine by gurkenlabs.

the class LightSourceTests method render_noDynamicShadows.

@Test
void render_noDynamicShadows() {
    // arrange
    GameWorld mockedWorld = mock(GameWorld.class);
    MockedStatic<Game> gameMockedStatic = mockStatic(Game.class);
    gameMockedStatic.when(Game::world).thenReturn(mockedWorld);
    gameMockedStatic.when(Game::config).thenCallRealMethod();
    Graphics2D graphicMock = mock(Graphics2D.class);
    // is default
    assertFalse(Game.config().graphics().renderDynamicShadows());
    // act
    lightSourceInactiveSpy.render(graphicMock);
    // assert
    verify(mockedWorld, times(0)).environment();
    // cleanup
    gameMockedStatic.close();
}
Also used : Game(de.gurkenlabs.litiengine.Game) GameWorld(de.gurkenlabs.litiengine.environment.GameWorld) Graphics2D(java.awt.Graphics2D) Test(org.junit.jupiter.api.Test)

Example 5 with GameWorld

use of de.gurkenlabs.litiengine.environment.GameWorld in project litiengine by gurkenlabs.

the class LightSourceTests method updateAmbientLayers_doesNothingWithoutLayers.

@Test
void updateAmbientLayers_doesNothingWithoutLayers() {
    // arrange
    when(lightSourceInactiveSpy.isLoaded()).thenReturn(true);
    GameWorld actualWorld = spy(Game.world());
    MockedStatic<Game> gameMockedStatic = mockStatic(Game.class);
    gameMockedStatic.when(Game::world).thenReturn(// otherwise it is null because of the mock
    actualWorld);
    Environment environmentMock = mock(Environment.class);
    when(actualWorld.environment()).thenReturn(environmentMock);
    AmbientLight ambientLightMock = mock(AmbientLight.class);
    when(environmentMock.getAmbientLight()).thenReturn(null);
    StaticShadowLayer staticShadowLayerMock = mock(StaticShadowLayer.class);
    when(environmentMock.getStaticShadowLayer()).thenReturn(null);
    // act
    // means to trigger private method within
    lightSourceInactiveSpy.setColor(Color.GREEN);
    // assert
    verify(lightSourceInactiveSpy, times(1)).isLoaded();
    verify(ambientLightMock, times(0)).updateSection(any(Rectangle2D.class));
    verify(staticShadowLayerMock, times(0)).updateSection(any(Rectangle2D.class));
    // cleanup
    gameMockedStatic.close();
}
Also used : Game(de.gurkenlabs.litiengine.Game) Rectangle2D(java.awt.geom.Rectangle2D) Environment(de.gurkenlabs.litiengine.environment.Environment) GameWorld(de.gurkenlabs.litiengine.environment.GameWorld) StaticShadowLayer(de.gurkenlabs.litiengine.graphics.StaticShadowLayer) AmbientLight(de.gurkenlabs.litiengine.graphics.AmbientLight) Test(org.junit.jupiter.api.Test)

Aggregations

Game (de.gurkenlabs.litiengine.Game)8 GameWorld (de.gurkenlabs.litiengine.environment.GameWorld)8 Test (org.junit.jupiter.api.Test)8 Environment (de.gurkenlabs.litiengine.environment.Environment)6 AmbientLight (de.gurkenlabs.litiengine.graphics.AmbientLight)4 StaticShadowLayer (de.gurkenlabs.litiengine.graphics.StaticShadowLayer)4 Rectangle2D (java.awt.geom.Rectangle2D)4 Graphics2D (java.awt.Graphics2D)2 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)2 GameConfiguration (de.gurkenlabs.litiengine.configuration.GameConfiguration)1 GraphicConfiguration (de.gurkenlabs.litiengine.configuration.GraphicConfiguration)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 HashMap (java.util.HashMap)1