package rabbitescape.engine;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.*;
import static rabbitescape.engine.Tools.equalTo;
import static rabbitescape.engine.textworld.TextWorldManip.createWorld;
import static rabbitescape.engine.textworld.TextWorldManip.renderCompleteWorld;
public class TestRabbitIndexing
{
@Test
public void Rabbit_index_round_trips()
{
String[] lines = {
":name=Rabbit indexing test",
":description=",
":author_name=Ronny",
":author_url=http://rabbit.com",
":num_rabbits=25",
":num_to_save=4",
":rabbit_delay=2",
":num_saved=5",
":num_killed=4",
":num_waiting=16",
":rabbit_index_count=7",
":paused=false",
"Q ",
" k",
"##"
};
assertThat(
renderCompleteWorld( createWorld( lines ), true ),
equalTo( lines )
);
}
@Test
public void Index_counter_increments_on_rabbit_entrance()
{
String[] lines = {
":name=Rabbit indexing test",
":description=",
":author_name=Ronny",
":author_url=http://rabbit.com",
":num_rabbits=25",
":num_to_save=4",
":rabbit_delay=1",
":num_saved=5",
":num_killed=4",
":num_waiting=16",
":rabbit_index_count=7",
":paused=false",
"Q ",
" k",
"##"
};
String[] expected = {
":name=Rabbit indexing test",
":description=",
":author_name=Ronny",
":author_url=http://rabbit.com",
":num_rabbits=25",
":num_to_save=4",
":rabbit_delay=1",
":num_saved=5",
":num_killed=4",
":num_waiting=15",
":rabbit_index_count=8",
":paused=false",
"Q ",
"*k",
"##",
":*=r{index:8}"
};
World w = createWorld( lines );
w.step();
assertThat(
renderCompleteWorld( w , true ),
equalTo( expected )
);
}
@Test
public void Counted_if_counter_not_given()
{
String[] lines = {
":name=Rabbit indexing test",
":description=",
":author_name=Ronny",
":author_url=http://rabbit.com",
":num_rabbits=25",
":num_to_save=4",
":rabbit_delay=5",
":num_saved=5",
":num_killed=4",
":num_waiting=4",
":paused=false",
"Qr",
"jk",
"##"
};
String[] expected = {
":name=Rabbit indexing test",
":description=",
":author_name=Ronny",
":author_url=http://rabbit.com",
":num_rabbits=25",
":num_to_save=4",
":rabbit_delay=5",
":num_saved=5",
":num_killed=4",
":num_waiting=4",
":rabbit_index_count=2",
":paused=false",
"Q*",
"*k",
"##",
":*=r{index:1}",
":*=j{index:2}"
};
assertThat(
renderCompleteWorld( createWorld( lines ), true ),
equalTo( expected )
);
}
}