package rabbitescape.engine.logic; import static rabbitescape.engine.util.WorldAssertions.*; import org.junit.Test; public class TestBlocking { @Test public void Blocker_stands_still() { assertWorldEvolvesLike( " rk " + "\n" + "####", " H " + "\n" + "####", " H " + "\n" + "####", " H " + "\n" + "####" ); } @Test public void Blocker_prevents_others_passing() { assertWorldEvolvesLike( "r rk " + "\n" + "#####", " r>H " + "\n" + "#####", " ?H " + "\n" + "#####", " <jH " + "\n" + "#####" ); } @Test public void Blocker_prevents_others_passing_on_slope_up_start() { assertWorldEvolvesLike( "r r* " + "\n" + "#####" + "\n" + ":*=k/", " r>H " + "\n" + "#####", " ?H " + "\n" + "#####", " <jH " + "\n" + "#####" ); } @Test public void Blocker_prevents_others_passing_on_slope_up_mid() { assertWorldEvolvesLike( " /" + "\n" + " *#" + "\n" + "r r/##" + "\n" + "######" + "\n" + ":*=k/", " /" + "\n" + " $#" + "\n" + " r>r##" + "\n" + "######", " /" + "\n" + " H#" + "\n" + " r~##" + "\n" + "######", " /" + "\n" + " H#" + "\n" + " ?##" + "\n" + "######", " /" + "\n" + " H#" + "\n" + " +j##" + "\n" + "######" ); } @Test public void Blocker_prevents_others_passing_on_slope_up_end() { assertWorldEvolvesLike( " k" + "\n" + " /#" + "\n" + "r r/##" + "\n" + "######", " k" + "\n" + " $#" + "\n" + " r>r##" + "\n" + "######", " '" + "\n" + " r#" + "\n" + " r~##" + "\n" + "######", " H" + "\n" + " $#" + "\n" + " r##" + "\n" + "######", " H" + "\n" + " ?#" + "\n" + " /##" + "\n" + "######", " H" + "\n" + " j#" + "\n" + " %##" + "\n" + "######" ); } @Test public void Blocker_prevents_others_passing_on_slope_down_start() { assertWorldEvolvesLike( "r r " + "\n" + "###* " + "\n" + "#####" + "\n" + ":*=k\\", " r> " + "\n" + "###H " + "\n" + "#####", " ? " + "\n" + "###H " + "\n" + "#####", " <j " + "\n" + "###H " + "\n" + "#####" ); } @Test public void Blocker_prevents_others_passing_on_slope_down_mid() { assertWorldEvolvesLike( "r r " + "\n" + "###\\ " + "\n" + "####*" + "\n" + ":*=k\\", " r> " + "\n" + "###r " + "\n" + "####@", " r " + "\n" + "###- " + "\n" + "####H", " " + "\n" + "###] " + "\n" + "####H", " ! " + "\n" + "###j " + "\n" + "####H" ); } @Test public void Blocker_prevents_others_passing_on_slope_down_end() { assertWorldEvolvesLike( " j j" + "\n" + "k/###" + "\n" + "#####", " <j " + "\n" + "+j###" + "\n" + "#####", " j " + "\n" + "H=###" + "\n" + "#####", " " + "\n" + "H[###" + "\n" + "#####", " ' " + "\n" + "Hr###" + "\n" + "#####" ); } @Test public void Blocker_on_bridge_and_slope() { assertWorldEvolvesLike( " j" + "\n" + " " + "\n" + " jr #" + "\n" + "k # #" + "\n" + ")j k(j" + "\n" + " ) rr( " + "\n" + "k ) ( " + "\n" + "\\jj k #" + "\n" + "#\\ r/##" + "\n" + "##\\(/###" + "\n" + "###O####" + "\n" + "########", " " + "\n" + " <j" + "\n" + " r #" + "\n" + " #f #" + "\n" + "^ j f ( " + "\n" + " jf $ " + "\n" + " a r <j" + "\n" + "^ r #" + "\n" + "#^ f $##" + "\n" + "##jhr###" + "\n" + "###O####" + "\n" + "########", " " + "\n" + " j " + "\n" + " f#" + "\n" + " # f#" + "\n" + "H r ( " + "\n" + " ^ fH " + "\n" + " j h j " + "\n" + "H f#" + "\n" + "#| 'H##" + "\n" + "##\\r/###" + "\n" + "###O####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # j#" + "\n" + "H s " + "\n" + " | H " + "\n" + " ) ? " + "\n" + "H |#" + "\n" + "#r rH##" + "\n" + "##@(h###" + "\n" + "###O####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H [ " + "\n" + " r H " + "\n" + " @+j " + "\n" + "H ?#" + "\n" + "#\\ H##" + "\n" + "##r,?###" + "\n" + "###O####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H ? " + "\n" + " ) H " + "\n" + " r_( " + "\n" + "H f |#" + "\n" + "#\\ f'H##" + "\n" + "##\\+j###" + "\n" + "###O####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H [ " + "\n" + " ) H " + "\n" + " )r( " + "\n" + "H f ?#" + "\n" + "#\\ frH##" + "\n" + "##\\sh###" + "\n" + "###f####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H ? " + "\n" + " ) H " + "\n" + " ) ( " + "\n" + "H |#" + "\n" + "#\\ r H##" + "\n" + "##.h?###" + "\n" + "###R####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H [ " + "\n" + " ) H " + "\n" + " ) ( " + "\n" + "H ?#" + "\n" + "#^ 'H##" + "\n" + "##j+j###" + "\n" + "###O####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H ? " + "\n" + " ) H " + "\n" + " ) ( " + "\n" + "H |#" + "\n" + "#| rH##" + "\n" + "##\\jh###" + "\n" + "###f####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H [ " + "\n" + " ) H " + "\n" + " ) ( " + "\n" + "H ?#" + "\n" + "#r H##" + "\n" + "##@(?###" + "\n" + "###R####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H ? " + "\n" + " ) H " + "\n" + " ) ( " + "\n" + "H |#" + "\n" + "#\\ H##" + "\n" + "##r,j###" + "\n" + "###O####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H [ " + "\n" + " ) H " + "\n" + " ) ( " + "\n" + "H ?#" + "\n" + "#\\ 'H##" + "\n" + "##\\r/###" + "\n" + "###f####" + "\n" + "########", " " + "\n" + " " + "\n" + " #" + "\n" + " # #" + "\n" + "H ? " + "\n" + " ) H " + "\n" + " ) ( " + "\n" + "H |#" + "\n" + "#\\ rH##" + "\n" + "##\\(h###" + "\n" + "###R####" + "\n" + "########" ); } @Test public void Cresting_rabbits_are_blocked() { assertWorldEvolvesLike( "r r" + "\n" + " (*" + "\n" + "( " + "\n" + ":*=)k" + "\n" + "r r" + "\n" + " /*" + "\n" + "/##" + "\n" + ":*=\\k", " " + "\n" + " $H" + "\n" + "r " + "\n" + " " + "\n" + " $H" + "\n" + "r##", " " + "\n" + " ?H" + "\n" + "( " + "\n" + " " + "\n" + " ?H" + "\n" + "/##", " " + "\n" + " jH" + "\n" + "% " + "\n" + " " + "\n" + " jH" + "\n" + "%##", " " + "\n" + " (H" + "\n" + "j " + "\n" + " " + "\n" + " /H" + "\n" + "j##" ); } @Test public void Valleying_rabbits_are_blocked() { assertWorldEvolvesLike( "r " + "\n" + " " + "\n" + ") r" + "\n" + " )*" + "\n" + ":*=(k" + "\n" + "r " + "\n" + "\\ r" + "\n" + "#\\*" + "\n" + ":*=/k", " " + "\n" + " " + "\n" + "r " + "\n" + " @H" + "\n" + " " + "\n" + "r " + "\n" + "#@H", " " + "\n" + " " + "\n" + ") " + "\n" + " ]H" + "\n" + " " + "\n" + "\\ " + "\n" + "#]H", " " + "\n" + " " + "\n" + "^ " + "\n" + " jH" + "\n" + " " + "\n" + "^ " + "\n" + "#jH", " " + "\n" + " " + "\n" + "j " + "\n" + " )H" + "\n" + " " + "\n" + "j " + "\n" + "#\\H", " " + "\n" + " " + "\n" + ") " + "\n" + " )H" + "\n" + " " + "\n" + "\\ " + "\n" + "#\\H" ); } }