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  //noinspection TextBlockMigration
124  Assert.assertEquals(""+//
125  "new_map 17 13\n"+//
126  "map_begin\n"+//
127  "map_scroll 0 0\n"+// initial scroll after newmap has been suppressed
128  "map_end\n"+//
129  "map_begin\n"+//
130  "map_scroll 0 -1\n"+//
131  "map_end\n"+//
132  "", listener.toString());
133  } finally {
134  //noinspection ThrowFromFinallyBlock
135  server.stop();
136  }
137  } finally {
138  //noinspection ThrowFromFinallyBlock
139  connection.stop();
140  }
141  }
142 
143  @Test
145  final Model model = new Model(new TestGuiStateManager());
146  final DefaultCrossfireServerConnection connection = new DefaultCrossfireServerConnection(model, null, "version");
147  final TestCrossfireServer server = new TestCrossfireServer();
148  connection.start();
149  try {
150  server.start();
151  try {
152  connection.connect("localhost", server.getLocalPort());
153  server.waitForCharacterLogin();
154  Thread.sleep(1000);
155 
157  connection.addPacketWatcherListener(listener);
158  server.writeString("drawextinfo 1 2 3 message");
159 
160  Thread.sleep(1000);
161  Assert.assertEquals(""+//
162  "drawextinfo 1 2 3 message\n"+//
163  "", listener.toString());
164  } finally {
165  //noinspection ThrowFromFinallyBlock
166  server.stop();
167  }
168  } finally {
169  //noinspection ThrowFromFinallyBlock
170  connection.stop();
171  }
172  }
173 
174 }
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireUpdateMapListener.toString
String toString()
Definition: TestCrossfireUpdateMapListener.java:82
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.getLocalPort
int getLocalPort()
Returns the port the server is listening on.
Definition: TestCrossfireServer.java:93
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.connect
void connect(@NotNull final String hostname, final int port)
Attempts to connect the client to a server.
Definition: DefaultCrossfireServerConnection.java:3991
com.realtime.crossfire.jxclient.server.crossfire.TestReceivedPacketListener.toString
String toString()
Definition: TestReceivedPacketListener.java:30
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.stop
void stop()
Stops operation.
Definition: DefaultCrossfireServerConnection.java:520
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnectionTest.scriptCallback_drawextinfoMessage_includesSubtypeParameter
void scriptCallback_drawextinfoMessage_includesSubtypeParameter()
Definition: DefaultCrossfireServerConnectionTest.java:144
com.realtime.crossfire.jxclient.server.crossfire.AbstractCrossfireServerConnection.addPacketWatcherListener
void addPacketWatcherListener(@NotNull final ReceivedPacketListener listener)
Adds a listener to be notified about received packets.
Definition: AbstractCrossfireServerConnection.java:229
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.waitForCurrentNumLookObjectsValid
void waitForCurrentNumLookObjectsValid()
Waits until getCurrentNumLookObjects() is stable.
Definition: DefaultCrossfireServerConnection.java:4266
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.writeString
void writeString(@NotNull final String s)
Write a Crossfire message to the client.
Definition: TestCrossfireServer.java:316
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.waitForCharacterLogin
void waitForCharacterLogin()
Blocks until the character login has finished.
Definition: TestCrossfireServer.java:101
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.getCurrentNumLookObjects
int getCurrentNumLookObjects()
Returns the currently negotiated setup value of "num_look_objects".
Definition: DefaultCrossfireServerConnection.java:4256
com.realtime.crossfire.jxclient.stats.Stats.CS_STAT_HP
static final int CS_STAT_HP
The Hit Points stat.
Definition: Stats.java:49
com.realtime.crossfire.jxclient.guistate
Definition: ClientSocketState.java:23
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireUpdateMapListener
Records all callback functions.
Definition: TestCrossfireUpdateMapListener.java:9
com.realtime.crossfire.jxclient.server.crossfire.TestReceivedPacketListener
Records all callback functions.
Definition: TestReceivedPacketListener.java:10
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.start
void start()
Starts operation.
Definition: DefaultCrossfireServerConnection.java:515
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.start
void start()
Starts the server.
Definition: TestCrossfireServer.java:69
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.setPreferredNumLookObjects
void setPreferredNumLookObjects(final int preferredNumLookObjects)
Sets the maximum number of objects in the ground view.
Definition: DefaultCrossfireServerConnection.java:3980
com.realtime.crossfire.jxclient.stats.Stats
This is the representation of all the statistics of a player, like its speed or its experience.
Definition: Stats.java:44
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection
Default implementation of CrossfireServerConnection.
Definition: DefaultCrossfireServerConnection.java:69
com.realtime.crossfire.jxclient.guistate.TestGuiStateManager
Runs the action directly.
Definition: TestGuiStateManager.java:8
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnection.setCrossfireUpdateMapListener
void setCrossfireUpdateMapListener(@NotNull final CrossfireUpdateMapListener listener)
Sets a listener to be notified about map changes.
Definition: DefaultCrossfireServerConnection.java:510
com.realtime.crossfire
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.stop
void stop()
Stops the server.
Definition: TestCrossfireServer.java:78
com.realtime
com
com.realtime.crossfire.jxclient.server.crossfire.DefaultCrossfireServerConnectionTest
Regression tests for DefaultCrossfireServerConnection.
Definition: DefaultCrossfireServerConnectionTest.java:36
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer.writeBytes
void writeBytes(final byte @NotNull[] b)
Write a Crossfire message to the client.
Definition: TestCrossfireServer.java:325
com.realtime.crossfire.jxclient.server.crossfire.TestCrossfireServer
A dummy Crossfire server for tests.
Definition: TestCrossfireServer.java:20
com.realtime.crossfire.jxclient.server.crossfire.Model
Combines all model classes that are updated.
Definition: Model.java:43
com.realtime.crossfire.jxclient.stats
Definition: ActiveSkillWatcher.java:23