package net.ciklum.icfpc11.controller.ai; import junit.framework.TestCase import net.ciklum.icfpc11.domain.Game import static net.ciklum.icfpc11.parser.Application.LEFT import static net.ciklum.icfpc11.parser.Application.RIGHT import static net.ciklum.icfpc11.domain.Card.* import net.ciklum.icfpc11.parser.Command import net.ciklum.icfpc11.controller.Controller import net.ciklum.icfpc11.domain.greenspoon10.ConstantFunction /** * blabla * * @author vic */ public class BuildConstantStrategyTest extends TestCase { Controller controller public void setUp() throws Exception { controller = new Controller(Game.push()) } public void tearDown() throws Exception { Game.pop() } void testGetNextCommand_ok_8() { BuildConstantStrategy strat = new BuildConstantStrategy(Game.instance, 7, 8) Command c = strat.getNextCommand() assertEquals new Command(RIGHT, 7, zero), c controller.applyCommand(c) assertFalse strat.complete c = strat.getNextCommand() assertEquals new Command(LEFT, 7, succ), c controller.applyCommand(c) c = strat.getNextCommand() assertTrue (c in [new Command(LEFT, 7, dbl), new Command(LEFT, 7, succ)] ) controller.applyCommand(c) c = strat.getNextCommand() assertEquals new Command(LEFT, 7, dbl), c controller.applyCommand(c) assertFalse strat.complete c = strat.getNextCommand() assertEquals new Command(LEFT, 7, dbl), c controller.applyCommand(c) assertTrue strat.complete } void testGetNextCommand_ok_255() { BuildConstantStrategy strat = new BuildConstantStrategy(Game.instance, 7, 8) Command c = strat.getNextCommand() assertEquals new Command(RIGHT, 7, zero), c controller.applyCommand(c) c = strat.getNextCommand() assertEquals new Command(LEFT, 7, succ), c controller.applyCommand(c) } void testGetNextCommand_dies() { BuildConstantStrategy strat = new BuildConstantStrategy(Game.instance, 7, 8) Command c = strat.getNextCommand() assertEquals new Command(RIGHT, 7, zero), c controller.applyCommand(c) Game.instance.currentProponent.getSlot(7).vitality = 0 assertTrue strat.complete } void testGetNextCommand_broke() { BuildConstantStrategy strat = new BuildConstantStrategy(Game.instance, 7, 8) Command c = strat.getNextCommand() assertEquals new Command(RIGHT, 7, zero), c controller.applyCommand(c) Game.instance.currentProponent.getSlot(7).value = ConstantFunction.valueOf(11) assertFalse strat.complete assertEquals 6, strat.stepsToComplete // put, zero, succ, succ, dbl, dbl } }