/*******************************************************************************
* 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:
* Pavel Savara
* - 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 org.junit.Test;
import robocode.BattleResults;
import robocode.control.events.BattleCompletedEvent;
import robocode.control.events.BattleFinishedEvent;
import robocode.control.events.RoundStartedEvent;
import robocode.control.events.TurnEndedEvent;
import robocode.control.snapshot.IRobotSnapshot;
/**
* @author Pavel Savara (original)
*/
public class TestDuplicatesAndScore extends RobocodeTestBed {
private IRobotSnapshot[] robots;
private BattleResults[] results;
private int lastTurn;
@Test
public void run() {
super.run();
}
@Override
public int getExpectedRobotCount(String list) {
return 8;
}
@Override
public String getRobotNames() {
return "sample.Fire,tested.robots.TestTeam,tested.robots.TestTeam,sample.Crazy";
}
@Override
public void onRoundStarted(final RoundStartedEvent event) {
super.onRoundStarted(event);
if (event.getRound() == 0) {
robots = event.getStartSnapshot().getRobots();
Assert.assertEquals(8, robots.length);
net.sf.robocode.test.helpers.Assert.assertNear(566.2968069, robots[0].getX());
net.sf.robocode.test.helpers.Assert.assertNear(436.3146436, robots[1].getX());
net.sf.robocode.test.helpers.Assert.assertNear(317.3362130, robots[2].getX());
net.sf.robocode.test.helpers.Assert.assertNear(717.6994092, robots[3].getX());
net.sf.robocode.test.helpers.Assert.assertNear(145.5531935, robots[4].getX());
net.sf.robocode.test.helpers.Assert.assertNear(734.4305396, robots[5].getX());
net.sf.robocode.test.helpers.Assert.assertNear(335.7732607, robots[6].getX());
net.sf.robocode.test.helpers.Assert.assertNear(390.8076498, robots[7].getX());
net.sf.robocode.test.helpers.Assert.assertNear(100.000, robots[0].getEnergy());
net.sf.robocode.test.helpers.Assert.assertNear(200.000, robots[1].getEnergy());
net.sf.robocode.test.helpers.Assert.assertNear(120.000, robots[2].getEnergy());
net.sf.robocode.test.helpers.Assert.assertNear(100.000, robots[3].getEnergy());
net.sf.robocode.test.helpers.Assert.assertNear(200.000, robots[4].getEnergy());
net.sf.robocode.test.helpers.Assert.assertNear(120.000, robots[5].getEnergy());
net.sf.robocode.test.helpers.Assert.assertNear(100.000, robots[6].getEnergy());
net.sf.robocode.test.helpers.Assert.assertNear(100.000, robots[7].getEnergy());
}
}
@Override
public void onTurnEnded(TurnEndedEvent event) {
super.onTurnEnded(event);
lastTurn = event.getTurnSnapshot().getTurn();
robots = event.getTurnSnapshot().getRobots();
if (lastTurn == 1) {
net.sf.robocode.test.helpers.Assert.assertNear(566.2968069, robots[0].getX());
net.sf.robocode.test.helpers.Assert.assertNear(437.1810299, robots[1].getX());
net.sf.robocode.test.helpers.Assert.assertNear(317.3362130, robots[2].getX());
net.sf.robocode.test.helpers.Assert.assertNear(717.6994092, robots[3].getX());
net.sf.robocode.test.helpers.Assert.assertNear(145.2637220, robots[4].getX());
net.sf.robocode.test.helpers.Assert.assertNear(734.4305396, robots[5].getX());
net.sf.robocode.test.helpers.Assert.assertNear(335.7732607, robots[6].getX());
net.sf.robocode.test.helpers.Assert.assertNear(389.8100070, robots[7].getX());
}
if (lastTurn == 1365) {
net.sf.robocode.test.helpers.Assert.assertNear(481.2038527, robots[0].getX());
net.sf.robocode.test.helpers.Assert.assertNear(415.4262123, robots[1].getX());
net.sf.robocode.test.helpers.Assert.assertNear(317.3362130, robots[2].getX());
net.sf.robocode.test.helpers.Assert.assertNear(671.1937618, robots[3].getX());
net.sf.robocode.test.helpers.Assert.assertNear(298.0813198, robots[4].getX());
net.sf.robocode.test.helpers.Assert.assertNear(734.4305396, robots[5].getX());
net.sf.robocode.test.helpers.Assert.assertNear(368.6778268, robots[6].getX());
net.sf.robocode.test.helpers.Assert.assertNear(352.1617815, robots[7].getX());
}
}
@Override
public void onBattleFinished(BattleFinishedEvent event) {
if (event.isAborted()) {
results = null;
}
}
@Override
public void onBattleCompleted(BattleCompletedEvent event) {
results = event.getSortedResults();
}
@Override
protected void runTeardown() {
Assert.assertNotNull(results);
Assert.assertNotNull(robots);
Assert.assertThat(robots[0].getName(), is("sample.Fire (1)"));
Assert.assertThat(robots[1].getName(), is("sampleteam.MyFirstLeader (1)"));
Assert.assertThat(robots[2].getName(), is("sampleteam.MyFirstDroid (1)"));
Assert.assertThat(robots[3].getName(), is("sample.Fire (2)"));
Assert.assertThat(robots[4].getName(), is("sampleteam.MyFirstLeader (2)"));
Assert.assertThat(robots[5].getName(), is("sampleteam.MyFirstDroid (2)"));
Assert.assertThat(robots[6].getName(), is("sample.Fire (3)"));
Assert.assertThat(robots[7].getName(), is("sample.Crazy"));
Assert.assertThat(results[0].getTeamLeaderName(), is("tested.robots.TestTeam (2)"));
Assert.assertThat(results[1].getTeamLeaderName(), is("sample.Fire (1)"));
Assert.assertThat(results[2].getTeamLeaderName(), is("tested.robots.TestTeam (1)"));
Assert.assertThat(results[3].getTeamLeaderName(), is("sample.Crazy"));
Assert.assertThat(results[0].getLastSurvivorBonus(), is(0));
Assert.assertThat(results[1].getLastSurvivorBonus(), is(70));
Assert.assertThat(results[2].getLastSurvivorBonus(), is(0));
Assert.assertThat(results[3].getLastSurvivorBonus(), is(0));
Assert.assertThat(results[0].getRamDamage(), is(2));
Assert.assertThat(results[1].getRamDamage(), is(0));
Assert.assertThat(results[2].getRamDamage(), is(2));
Assert.assertThat(results[3].getRamDamage(), is(20));
Assert.assertThat(results[0].getBulletDamageBonus(), is(43));
Assert.assertThat(results[1].getBulletDamageBonus(), is(33));
Assert.assertThat(results[2].getBulletDamageBonus(), is(40));
Assert.assertThat(results[3].getBulletDamageBonus(), is(0));
Assert.assertThat(results[0].getBulletDamage(), is(384));
Assert.assertThat(results[1].getBulletDamage(), is(266));
Assert.assertThat(results[2].getBulletDamage(), is(316));
Assert.assertThat(results[3].getBulletDamage(), is(168));
Assert.assertThat(results[0].getScore(), is(730));
Assert.assertThat(results[1].getScore(), is(719));
Assert.assertThat(results[2].getScore(), is(559));
Assert.assertThat(results[3].getScore(), is(438));
Assert.assertThat(lastTurn, is(2201));
}
}