package net.ciklum.icfpc11.domain.greenspoon10; import junit.framework.TestCase import static net.ciklum.icfpc11.domain.greenspoon10.CardBuilder.* import net.ciklum.icfpc11.domain.GameError import net.ciklum.icfpc11.domain.Game /** * test various SSKK * @author mym */ class SSKKTest extends TestCase { @Override protected void setUp() { Game.push() } @Override protected void tearDown() { Game.pop() } void test_secondParam_1() { assert attack(zero)(n(1)) == S(K(attack(zero)))(succ)(zero) } void test_infinite_loop() { try { Game.instance.currentProponent.getSlot(0).value = S(get, I) Game.instance.currentProponent.getSlot(0).value.apply(zero) fail("Should have thrown GameError") } catch (e) { if (!(e instanceof GameError)) { fail("Should have thrown GameError, but got exception of type $e") } } } void test_attack_3() { assert attack(n(3)) == S(K(S(K(S(K(attack), succ)), succ)), succ) (zero) } void test_attack_3_5() { assert attack(n(3), n(5)) == S(K(S(K(S(K(S(K(S(K(attack(n(3))), succ)), succ)), succ)), succ)), succ) (zero) } void test_help_2_1() { assert help(n(2),n(1)) == S(K(help(n(2))), succ) (zero) } void test_SKSK() { Game.instance.currentProponent.getSlot(0).value = K(n(8196)) assert S(K(help(n(0), n(0))), K(n(8196))) == S(K(S(K(help(n(0), n(0))))), get)(zero) } void test_KillMePlease_SKSKSK() { Game.instance.currentProponent.getSlot(1).value = S(K(help(n(0), n(0))), K(n(8196))) assert S(K(zombie(n(0))), S(K(help(n(0), n(0))), K(n(8196)))) == S(K(S(K(S(K(zombie(n(0))))), get)), succ)(zero) Game.instance.currentOpponent.getSlot(255).vitality = 0 assert I == S(K(zombie(n(0))), S(K(S(K(help(n(0), n(0))), K(n(8196))))), zero) assert S(K(S(K(help(zero, zero)), K(n(8196)))), zero) == Game.instance.currentOpponent.getSlot(255).value assert -1 == Game.instance.currentOpponent.getSlot(255).vitality } }