package rabbitescape.engine.logic;
import static org.hamcrest.MatcherAssert.*;
import static rabbitescape.engine.Tools.*;
import static rabbitescape.engine.textworld.TextWorldManip.*;
import static rabbitescape.engine.util.Util.*;
import org.junit.Test;
import rabbitescape.engine.World;
public class TestEntrance
{
@Test
public void Rabbit_comes_out_of_entrance()
{
World world = createWorld(
":num_rabbits=1",
" Q ",
" ",
" ",
"#####"
);
world.step();
assertThat(
renderWorld( world, true, false ),
equalTo(
" Q ",
" r ",
" f ",
"#####"
)
);
}
@Test
public void Rabbits_come_out_every_other_step_when_delay_is_2()
{
World world = createWorld(
":num_rabbits=10",
":rabbit_delay=2",
" Q ",
" ",
"################"
);
fiveSteps( world );
assertThat(
renderWorld( world, false, false ),
equalTo(
" Q ",
" r r r ",
"################"
)
);
fiveSteps( world );
assertThat(
renderWorld( world, false, false ),
equalTo(
" Q ",
" r r r r r ",
"################"
)
);
}
@Test
public void Rabbits_come_out_every_5_when_delay_is_5()
{
World world = createWorld(
":num_rabbits=10",
":rabbit_delay=5",
" Q ",
" ",
"################"
);
fiveSteps( world );
assertThat(
renderWorld( world, false, false ),
equalTo(
" Q ",
" r ",
"################"
)
);
world.step();
assertThat(
renderWorld( world, false, false ),
equalTo(
" Q ",
" r r ",
"################"
)
);
}
@Test
public void Limit_to_1_rabbit_works()
{
World world = createWorld(
":num_rabbits=1",
":rabbit_delay=2",
" Q ",
" ",
"################"
);
fiveSteps( world );
assertThat(
renderWorld( world, false, false ),
equalTo(
" Q ",
" r ",
"################"
)
);
fiveSteps( world );
assertThat(
renderWorld( world, false, false ),
equalTo(
" Q ",
" r ",
"################"
)
);
}
@Test
public void Limit_to_4_rabbits_works()
{
World world = createWorld(
":num_rabbits=4",
":rabbit_delay=1",
" Q ",
" ",
"################"
);
fiveSteps( world );
assertThat(
renderWorld( world, false, false ),
equalTo(
" Q ",
" rrrr ",
"################"
)
);
fiveSteps( world );
assertThat(
renderWorld( world, false, false ),
equalTo(
" Q ",
" rrrr ",
"################"
)
);
}
// ---
private void fiveSteps( World world )
{
for( @SuppressWarnings( "unused" ) int t : range( 5 ) )
{
world.step();
}
}
}