1 package games.stendhal.server.core.rp.pvp;
2 
3 import static org.hamcrest.CoreMatchers.is;
4 import static org.hamcrest.CoreMatchers.notNullValue;
5 import static org.hamcrest.CoreMatchers.nullValue;
6 import static org.junit.Assert.assertThat;
7 
8 import org.junit.Before;
9 import org.junit.Test;
10 
11 import games.stendhal.server.entity.player.Player;
12 import games.stendhal.server.maps.MockStendlRPWorld;
13 import utilities.PlayerTestHelper;
14 
15 /**
16  * Tests for the challenge manager
17  *
18  * @author markus
19  */
20 public class PlayerVsPlayerChallengeManagerTest {
21 
22 	private PlayerVsPlayerChallengeManager manager;
23 	private Player challenger;
24 	private Player challenged;
25 
26 	@Before
before()27 	public void before() {
28 		MockStendlRPWorld.reset();
29 		manager = PlayerVsPlayerChallengeManager.create();
30 		challenger = PlayerTestHelper.createPlayer("challenger");
31 		challenged = PlayerTestHelper.createPlayer("challenged");
32 	}
33 
34 	@Test
testCreateChallenge()35 	public void testCreateChallenge() {
36 		manager.createChallenge(challenger, challenged, 0);
37 		PlayerVsPlayerChallenge challenge = manager.getOpenChallengeForPlayers(challenger, challenged);
38 		assertThat(challenge, notNullValue());
39 		assertThat(challenge.isAccepted(), is(Boolean.FALSE));
40 		assertThat(challenge.getOpened(), is(Long.valueOf(0)));
41 		assertThat(Boolean.valueOf(manager.playersHaveActiveChallenge(challenger, challenged)), is(Boolean.FALSE));
42 	}
43 
44 	@Test
testCreateChallengeAndAccept()45 	public void testCreateChallengeAndAccept() throws Exception {
46 		manager.createChallenge(challenger, challenged, 0);
47 		PlayerVsPlayerChallenge challenge = manager.getOpenChallengeForPlayers(challenger, challenged);
48 		assertThat(challenge, notNullValue());
49 		assertThat(challenge.isAccepted(), is(Boolean.FALSE));
50 		assertThat(challenge.getOpened(), is(Long.valueOf(0)));
51 		assertThat(Boolean.valueOf(manager.playersHaveActiveChallenge(challenger, challenged)), is(Boolean.FALSE));
52 		manager.accpetChallenge(challenger, challenged, 1);
53 		challenge = manager.getOpenChallengeForPlayers(challenger, challenged);
54 		assertThat(challenge, nullValue());
55 		assertThat(Boolean.valueOf(manager.playersHaveActiveChallenge(challenger, challenged)), is(Boolean.TRUE));
56 	}
57 
58 	@Test
testCreateChallengeAndTimeout()59 	public void testCreateChallengeAndTimeout() throws Exception {
60 		manager.createChallenge(challenger, challenged, 0);
61 		assertThat(Boolean.valueOf(manager.playersHaveActiveChallenge(challenger, challenged)), is(Boolean.FALSE));
62 
63 		PlayerVsPlayerChallenge challenge = manager.getOpenChallengeForPlayers(challenger, challenged);
64 		assertThat(challenge, notNullValue());
65 		assertThat(challenge.isAccepted(), is(Boolean.FALSE));
66 		assertThat(challenge.getOpened(), is(Long.valueOf(0)));
67 
68 		manager.timeOutCurrentChallenges(PlayerVsPlayerChallengeManager.TIMEOUT_FOR_ACCEPTANCE + 1);
69 		challenge = manager.getOpenChallengeForPlayers(challenger, challenged);
70 		assertThat(challenge, nullValue());
71 	}
72 
73 	@Test
testCreateChallengeAndLogout()74 	public void testCreateChallengeAndLogout() throws Exception {
75 		manager.createChallenge(challenger, challenged, 0);
76 
77 		PlayerVsPlayerChallenge challenge = manager.getOpenChallengeForPlayers(challenger, challenged);
78 		assertThat(challenge, notNullValue());
79 		assertThat(challenge.isAccepted(), is(Boolean.FALSE));
80 		assertThat(challenge.getOpened(), is(Long.valueOf(0)));
81 		assertThat(Boolean.valueOf(manager.playersHaveActiveChallenge(challenger, challenged)), is(Boolean.FALSE));
82 
83 		manager.onLoggedOut(challenger);
84 		challenge = manager.getOpenChallengeForPlayers(challenger, challenged);
85 		assertThat(challenge, nullValue());
86 		assertThat(Boolean.valueOf(manager.playersHaveActiveChallenge(challenger, challenged)), is(Boolean.FALSE));
87 	}
88 
89 }
90