package rabbitescape.render; import static rabbitescape.engine.textworld.TextWorldManip.createWorld; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.*; import org.junit.Test; import rabbitescape.engine.World; import rabbitescape.render.gameloop.WaterAnimation; public class TestWater { @Test public void Water_falls_from_pipe() { World world = createWorld( " P ", "# /", "###" ); WaterAnimation animation = new WaterAnimation( world ); waterStep( 1, world, animation ); WaterRegionRenderer pipeRR = animation.lookupRenderer.getItemAt( 1, 0 ); assertThat( pipeRR.isFalling(), equalTo( true ) ); } @Test public void Region_below_pipe_fills_in_5() { World world = createWorld( " P ", "# #", "###" ); WaterAnimation animation = new WaterAnimation( world ); waterStep( 4, world, animation ); WaterRegionRenderer poolRR = animation.lookupRenderer.getItemAt( 1, 1 ); assertThat( poolRR.isFull( 1, 1 ), equalTo( false ) ); waterStep( 1, world, animation ); assertThat( poolRR.isFull( 1, 1 ), equalTo( true ) ); } @Test public void Pipe_region_starts_filling_in_5() { World world = createWorld( " P ", "# #", "###" ); WaterAnimation animation = new WaterAnimation( world ); waterStep( 4, world, animation ); WaterRegionRenderer pipeRR = animation.lookupRenderer.getItemAt( 1, 0 ); assertThat( pipeRR.isFalling(), equalTo( true ) ); waterStep( 1, world, animation ); assertThat( pipeRR.isFalling(), equalTo( false ) ); } // ----------- private static void waterStep( int n, World w, WaterAnimation d ) { for ( int i = 0 ; i < n; i++ ) { w.step(); d.step( w ); for ( int j = 0 ; j < 10 ; j++ ) { d.update( j ); } } } }