package rabbitescape.engine.logic; import static org.hamcrest.MatcherAssert.*; import static org.hamcrest.CoreMatchers.*; import static rabbitescape.engine.textworld.TextWorldManip.*; import static rabbitescape.engine.util.WorldAssertions.*; import org.junit.Test; import rabbitescape.engine.World; public class TestBrollychuting { @Test public void Brollychute_on_flat() { assertWorldEvolvesLike( "r r " + "\n" + "l " + "\n" + "# l " + "\n" + " # " + "\n" + " " + "\n" + " " + "\n" + " " + "\n" + " #" + "\n" + "#####", " " + "\n" + "r> " + "\n" + "# r> " + "\n" + " # " + "\n" + " " + "\n" + " " + "\n" + " " + "\n" + " #" + "\n" + "#####", " " + "\n" + " r " + "\n" + "#: r " + "\n" + " #: " + "\n" + " " + "\n" + " " + "\n" + " " + "\n" + " #" + "\n" + "#####", " " + "\n" + " " + "\n" + "#r " + "\n" + " :#r " + "\n" + " : " + "\n" + " " + "\n" + " " + "\n" + " #" + "\n" + "#####", " " + "\n" + " " + "\n" + "# " + "\n" + " r# " + "\n" + " : r " + "\n" + " : " + "\n" + " " + "\n" + " #" + "\n" + "#####", " " + "\n" + " " + "\n" + "# " + "\n" + " # " + "\n" + " r " + "\n" + " : r " + "\n" + " : " + "\n" + " #" + "\n" + "#####", " " + "\n" + " " + "\n" + "# " + "\n" + " # " + "\n" + " " + "\n" + " r " + "\n" + " : r " + "\n" + " :#" + "\n" + "#####", " " + "\n" + " " + "\n" + "# " + "\n" + " # " + "\n" + " " + "\n" + " " + "\n" + " r " + "\n" + " : ?#" + "\n" + "#####", " " + "\n" + " " + "\n" + "# " + "\n" + " # " + "\n" + " " + "\n" + " " + "\n" + " " + "\n" + " r<j#" + "\n" + "#####", " " + "\n" + " " + "\n" + "# " + "\n" + " # " + "\n" + " " + "\n" + " " + "\n" + " " + "\n" + " <j>#" + "\n" + "#####" ); } @Test public void Brollychute_on_slope() { assertWorldEvolvesLike( "r r r r " + "\n" + "l l l l " + "\n" + "# # # # " + "\n" + " ( \\ " + "\n" + " / )#" + "\n" + "#########", " " + "\n" + "r>r>r>r> " + "\n" + "# # # # " + "\n" + " ( \\ " + "\n" + " / )#" + "\n" + "#########", " " + "\n" + " r r r r " + "\n" + "#:#:#:#: " + "\n" + " ( \\ " + "\n" + " / )#" + "\n" + "#########", " " + "\n" + " " + "\n" + "#r#r#r#r " + "\n" + " : h e : " + "\n" + " / )#" + "\n" + "#########", " " + "\n" + " " + "\n" + "# # # # " + "\n" + " r ? r_r " + "\n" + " h e#" + "\n" + "#########", " " + "\n" + " " + "\n" + "# # # # " + "\n" + " +j \\r " + "\n" + " r :]#" + "\n" + "#########", " " + "\n" + " " + "\n" + "# # # # " + "\n" + " j( \\! " + "\n" + " /: r>#" + "\n" + "#########", " " + "\n" + " " + "\n" + "# # # # " + "\n" + " ( \\j " + "\n" + " /|> :?#" + "\n" + "#########" ); } @Test public void Rabbit_keeps_brolly_during_roundtrip() { World world = createWorld( "r " , "l " , "### " , " " , " " , " " , " " , " " , " O" , " #" ); for ( int i = 0 ; i < 2 ; i++ ) { world.step(); } world = createWorld( renderCompleteWorld( world, true, true ) ); for ( int i = 0 ; i < 10 ; i++ ) { world.step(); } assertThat( world.num_saved, equalTo( 1 ) ); } }