Crossfire JXClient, Trunk
DefaultCrossfireServerConnectionTest.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff
19  * Copyright (C) 2006-2017,2019-2023 Andreas Kirschbaum
20  * Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21  */
22 
23 package com.realtime.crossfire.jxclient.server.crossfire;
24 
27 import java.io.IOException;
28 import org.junit.Assert;
29 import org.junit.Test;
30 
35 @SuppressWarnings({"OverlyBroadThrowsClause", "JavaDoc"})
37 
45  @Test(timeout = 30000)
46  public void testNegotiateNumLookObjects1() throws Exception {
47  final Model model = new Model(new TestGuiStateManager());
48  final DefaultCrossfireServerConnection connection = new DefaultCrossfireServerConnection(model, null, "version");
49  final TestCrossfireServer server = new TestCrossfireServer();
50  connection.start();
51  try {
52  server.start();
53  try {
54  connection.connect("localhost", server.getLocalPort());
55  connection.setPreferredNumLookObjects(10);
56  server.waitForCharacterLogin();
58  Assert.assertEquals(10, connection.getCurrentNumLookObjects());
59  connection.setPreferredNumLookObjects(11);
60  connection.setPreferredNumLookObjects(12);
61  connection.setPreferredNumLookObjects(13);
62  connection.setPreferredNumLookObjects(14);
64  Assert.assertEquals(14, connection.getCurrentNumLookObjects());
65  } finally {
66  //noinspection ThrowFromFinallyBlock
67  server.stop();
68  }
69  } finally {
70  //noinspection ThrowFromFinallyBlock
71  connection.stop();
72  }
73  }
74 
75  @Test(timeout = 30000)
76  public void test_statsMessage_callsPacketWatcherCallback() throws Exception {
77  final Model model = new Model(new TestGuiStateManager());
78  final DefaultCrossfireServerConnection connection = new DefaultCrossfireServerConnection(model, null, "version");
79  final TestCrossfireServer server = new TestCrossfireServer();
80  connection.start();
81  try {
82  server.start();
83  try {
84  connection.connect("localhost", server.getLocalPort());
85  connection.setPreferredNumLookObjects(10);
86  server.waitForCharacterLogin();
87  Thread.sleep(1000);
88  final StringBuilder sb = new StringBuilder();
89  connection.addPacketWatcherListener((command, args) -> sb.append(command).append("/").append(args.getMonitorCommand()).append("\n"));
90  server.writeBytes(new byte[]{'s', 't', 'a', 't', 's', ' ', Stats.CS_STAT_HP, 1, 2,});
91  Thread.sleep(100);
92  Assert.assertEquals("stats/hp 258\n", sb.toString());
93  } finally {
94  //noinspection ThrowFromFinallyBlock
95  server.stop();
96  }
97  } finally {
98  //noinspection ThrowFromFinallyBlock
99  connection.stop();
100  }
101  }
102 
103  @Test(timeout = 30000)
104  public void test_mapUpdates_suppressInitialMapScroll() throws Exception {
105  final Model model = new Model(new TestGuiStateManager());
106  final DefaultCrossfireServerConnection connection = new DefaultCrossfireServerConnection(model, null, "version");
107  final TestCrossfireServer server = new TestCrossfireServer();
108  connection.start();
109  try {
110  server.start();
111  try {
112  connection.connect("localhost", server.getLocalPort());
113  server.waitForCharacterLogin();
114  Thread.sleep(1000);
115 
117  connection.setCrossfireUpdateMapListener(listener);
118  server.writeBytes(new byte[]{'n', 'e', 'w', 'm', 'a', 'p'});
119  server.writeBytes(new byte[]{'m', 'a', 'p', '2', ' ', 0x3C, (byte)0xE1,});
120  server.writeBytes(new byte[]{'m', 'a', 'p', '2', ' ', 0x3C, (byte)0xE1,});
121 
122  Thread.sleep(1000);
123  Assert.assertEquals(""+//
124  "new_map 17 13\n"+//
125  "map_begin\n"+//
126  "map_scroll 0 0\n"+// initial scroll after newmap has been suppressed
127  "map_end\n"+//
128  "map_begin\n"+//
129  "map_scroll 0 -1\n"+//
130  "map_end\n"+//
131  "", listener.toString());
132  } finally {
133  //noinspection ThrowFromFinallyBlock
134  server.stop();
135  }
136  } finally {
137  //noinspection ThrowFromFinallyBlock
138  connection.stop();
139  }
140  }
141 
142  @Test
144  final Model model = new Model(new TestGuiStateManager());
145  final DefaultCrossfireServerConnection connection = new DefaultCrossfireServerConnection(model, null, "version");
146  final TestCrossfireServer server = new TestCrossfireServer();
147  connection.start();
148  try {
149  server.start();
150  try {
151  connection.connect("localhost", server.getLocalPort());
152  server.waitForCharacterLogin();
153  Thread.sleep(1000);
154 
156  connection.addPacketWatcherListener(listener);
157  server.writeString("drawextinfo 1 2 3 message");
158 
159  Thread.sleep(1000);
160  Assert.assertEquals(""+//
161  "drawextinfo 1 2 3 message\n"+//
162  "", listener.toString());
163  } finally {
164  //noinspection ThrowFromFinallyBlock
165  server.stop();
166  }
167  } finally {
168  //noinspection ThrowFromFinallyBlock
169  connection.stop();
170  }
171  }
172 
173 }
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireUpdateMapListener.toString
String toString()
Definition: TestCrossfireUpdateMapListener.java:82
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.getLocalPort
int getLocalPort()
Definition: TestCrossfireServer.java:93
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnectionTest.scriptCallback_drawextinfoMessage_includesSubtypeParameter
void scriptCallback_drawextinfoMessage_includesSubtypeParameter()
Definition: DefaultCrossfireServerConnectionTest.java:143
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.start
void start()
Definition: DefaultCrossfireServerConnection.java:515
com.realtime.crossfire.jxclient.guistate.TestGuiStateManager
Definition: TestGuiStateManager.java:8
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.waitForCurrentNumLookObjectsValid
void waitForCurrentNumLookObjectsValid()
Definition: DefaultCrossfireServerConnection.java:4266
com.realtime.crossfire.jxclient.stats.Stats
Definition: Stats.java:44
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.stop
void stop()
Definition: DefaultCrossfireServerConnection.java:520
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.stop
void stop()
Definition: TestCrossfireServer.java:78
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnectionTest
Definition: DefaultCrossfireServerConnectionTest.java:36
com.realtime.crossfire.jxclient.guistate
Definition: ClientSocketState.java:23
com.realtime.crossfire.jxclient.server.crossfire.TestReceivedPacketListener.toString
String toString()
Definition: TestReceivedPacketListener.java:30
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.setCrossfireUpdateMapListener
void setCrossfireUpdateMapListener(@NotNull final CrossfireUpdateMapListener listener)
Definition: DefaultCrossfireServerConnection.java:510
com.realtime.crossfire.jxclient.server.crossfire.Model
Definition: Model.java:43
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.start
void start()
Definition: TestCrossfireServer.java:69
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireUpdateMapListener
Definition: TestCrossfireUpdateMapListener.java:9
com.realtime.crossfire.jxclient.server.crossfire.TestReceivedPacketListener
Definition: TestReceivedPacketListener.java:10
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.writeBytes
void writeBytes(final byte @NotNull[] b)
Definition: TestCrossfireServer.java:325
com.realtime.crossfire
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_HP
static final int CS_STAT_HP
Definition: Stats.java:49
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.getCurrentNumLookObjects
int getCurrentNumLookObjects()
Definition: DefaultCrossfireServerConnection.java:4256
com.realtime
com
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.waitForCharacterLogin
void waitForCharacterLogin()
Definition: TestCrossfireServer.java:101
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.setPreferredNumLookObjects
void setPreferredNumLookObjects(final int preferredNumLookObjects)
Definition: DefaultCrossfireServerConnection.java:3980
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.connect
void connect(@NotNull final String hostname, final int port)
Definition: DefaultCrossfireServerConnection.java:3991
com.realtime.crossfire.jxclient.server.crossfire.AbstractCrossfireServerConnection.addPacketWatcherListener
void addPacketWatcherListener(@NotNull final ReceivedPacketListener listener)
Definition: AbstractCrossfireServerConnection.java:229
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.writeString
void writeString(@NotNull final String s)
Definition: TestCrossfireServer.java:316
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer
Definition: TestCrossfireServer.java:20
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection
Definition: DefaultCrossfireServerConnection.java:69
com.realtime.crossfire.jxclient.stats
Definition: ActiveSkillWatcher.java:23