package net.ciklum.icfpc11.controller.ai; import junit.framework.TestCase import net.ciklum.icfpc11.domain.Game import net.ciklum.icfpc11.controller.Controller import net.ciklum.icfpc11.domain.greenspoon10.CardBuilder import net.ciklum.icfpc11.parser.Command import net.ciklum.icfpc11.parser.Application import net.ciklum.icfpc11.domain.Card import net.ciklum.icfpc11.domain.greenspoon10.ConstantFunction /** * blabla * @author vic */ public class HitZeroAgainStrategyTest extends TestCase { Controller controller public void setUp() { controller = new Controller(Game.push()) } public void tearDown() { Game.pop() } public void testGetNextCommand_appendIdentity() { HitZeroAgainStrategy strat = new HitZeroAgainStrategy(18) Game.instance.currentProponent.getSlot(HitZeroAgainStrategy.GUN_SLOT).value = CardBuilder.S Command c = strat.getNextCommand() assertEquals new Command(Application.LEFT, HitZeroAgainStrategy.GUN_SLOT, Card.put), c controller.applyCommand(c) } public void testGetNextCommand_noConstantRecalc() { HitZeroAgainStrategy strat = new HitZeroAgainStrategy(18) Game.instance.currentProponent.getSlot(1).value = ConstantFunction.valueOf(18) Game.instance.currentProponent.getSlot(4).value = ConstantFunction.valueOf(8160) Game.instance.currentProponent.getSlot(0).value = ConstantFunction.valueOf(255) while (!strat.complete) { Command c = strat.getNextCommand() controller.applyCommand(c) } assertTrue strat.complete } public void testGetNextCommand_calculatesConstants() { HitZeroAgainStrategy strat = new HitZeroAgainStrategy(18) while (!strat.complete) { Command c = strat.getNextCommand() controller.applyCommand(c) } assertEquals 18, Game.instance.currentProponent.getSlot(1).value.value assertEquals 8160, Game.instance.currentProponent.getSlot(4).value.value assertEquals 255, Game.instance.currentProponent.getSlot(0).value.value } public void testGetNextCommand_boooom() { HitZeroAgainStrategy strat = new HitZeroAgainStrategy(18) while (!strat.complete) { Command c = strat.getNextCommand() controller.applyCommand(c) } Command trigger = new Command(Application.RIGHT, HitZeroAgainStrategy.GUN_SLOT, Card.zero) controller.applyCommand(trigger) assertEquals 10000-(8160*9).intdiv(10), Game.instance.currentOpponent.getSlot(0).vitality } }