/******************************************************************************* * Copyright (c) 2001, 2010 Mathew A. Nelson and Robocode contributors * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://robocode.sourceforge.net/license/epl-v10.html * * Contributors: * Flemming N. Larsen * - Initial implementation *******************************************************************************/ package net.sf.robocode.test.robots; import net.sf.robocode.test.helpers.RobocodeTestBed; import static org.hamcrest.CoreMatchers.is; import org.junit.Assert; import robocode.control.events.BattleFinishedEvent; import robocode.control.events.TurnEndedEvent; import robocode.control.snapshot.IScoreSnapshot; import robocode.control.snapshot.ITurnSnapshot; /** * This test is used for checking the rankings of two sample.Target robots, i.e. * robots that does not shot, but is just waiting for someone to shot them. As * two sample.Targets robots are not fighting each other, the battles are * expected to end fairly even, but not necessarily due to collisions between * the robots and the wall. * * @author Flemming N. Larsen (original) */ public class TestRankingsWithTargetRobots extends RobocodeTestBed { ITurnSnapshot lastTurnSnapshot; @Override public String getRobotNames() { return "sample.Target,sample.Target"; } @Override public int getNumRounds() { return 20; } @Override public void onTurnEnded(TurnEndedEvent event) { super.onTurnEnded(event); lastTurnSnapshot = event.getTurnSnapshot(); } @Override public void onBattleFinished(BattleFinishedEvent event) { final IScoreSnapshot[] scores = lastTurnSnapshot.getSortedTeamScores(); final IScoreSnapshot score1 = scores[0]; final IScoreSnapshot score2 = scores[1]; // 1sts + 2nds = number of rounds, e.g. 4 + 6 = 10 (where 4 is 1st places, and 6 is 2nd places) Assert.assertThat("1st ranked robot's total 1st and 2nd places must be equal to the number of rounds", score1.getTotalFirsts() + score1.getTotalSeconds(), is(getNumRounds())); Assert.assertThat("2nd ranked robot's total 1st and 2nd places must be equal to the number of rounds", score2.getTotalFirsts() + score2.getTotalSeconds(), is(getNumRounds())); // If 1st robot's 1sts = 6, 2nds = 4, then 2nd robot's 1sts = 4, 2nds = 6 /* Assert.assertThat( "1st ranked robot's number of 1st places must be equal to the 2nd ranked robot's number of 2nd places", score1.getTotalFirsts(), is(score2.getTotalSeconds())); Assert.assertThat( "2nd ranked robot's number of 1st places must be equal to the 1st ranked robot's number of 2nd places", score2.getTotalFirsts(), is(score1.getTotalSeconds()));*/ } }