[jetrix-cvs] SF.net SVN: jetrix:[836] jetrix/trunk/src
Brought to you by:
smanux
From: <sm...@us...> - 2010-04-11 21:25:41
|
Revision: 836 http://jetrix.svn.sourceforge.net/jetrix/?rev=836&view=rev Author: smanux Date: 2010-04-11 21:25:35 +0000 (Sun, 11 Apr 2010) Log Message: ----------- Fixed the failing test cases Modified Paths: -------------- jetrix/trunk/src/java/net/jetrix/Channel.java jetrix/trunk/src/java/net/jetrix/ChannelManager.java jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java jetrix/trunk/src/test/net/jetrix/ChannelManagerTest.java jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java Modified: jetrix/trunk/src/java/net/jetrix/Channel.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/Channel.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/java/net/jetrix/Channel.java 2010-04-11 21:25:35 UTC (rev 836) @@ -43,14 +43,17 @@ */ public class Channel extends Thread implements Destination { + /** The maximum number of players per channel. */ + public static final int MAX_PLAYERS = 6; + private ChannelConfig channelConfig; private ServerConfig serverConfig; private Logger log = Logger.getLogger("net.jetrix"); - private BlockingQueue<Message> queue; + private BlockingQueue<Message> queue = new LinkedBlockingQueue<Message>(); private boolean open; - private GameState gameState; + private GameState gameState = STOPPED; private boolean running = true; private GameResult result; @@ -58,13 +61,13 @@ private long startTime; /** set of clients connected to this channel */ - private Set<Client> clients; + private Set<Client> clients = new HashSet<Client>(); /** slot/player mapping */ - private List<Client> slots; - private Field[] fields = new Field[6]; + private List<Client> slots = Arrays.asList(new Client[MAX_PLAYERS]); + private Field[] fields = new Field[MAX_PLAYERS]; - private List<MessageFilter> filters; + private List<MessageFilter> filters = new ArrayList<MessageFilter>(); public Channel() { @@ -75,36 +78,25 @@ { this.channelConfig = channelConfig; this.serverConfig = Server.getInstance().getConfig(); - this.gameState = STOPPED; - this.clients = new HashSet<Client>(); - this.slots = new ArrayList<Client>(6); - - // initialize the slot mapping - for (int i = 0; i < 6; i++) - { - slots.add(null); - } - + // initialize the players' fields - for (int i = 0; i < 6; i++) + for (int i = 0; i < MAX_PLAYERS; i++) { fields[i] = new Field(); } - - // opening channel message queue - queue = new LinkedBlockingQueue<Message>(); - - filters = new ArrayList<MessageFilter>(); - + /** * Loading filters */ // global filters - Iterator<FilterConfig> globalFilters = serverConfig.getGlobalFilters(); - while (globalFilters.hasNext()) + if (serverConfig != null) { - addFilter(globalFilters.next()); + Iterator<FilterConfig> globalFilters = serverConfig.getGlobalFilters(); + while (globalFilters.hasNext()) + { + addFilter(globalFilters.next()); + } } // channel filters @@ -470,7 +462,7 @@ } // clear the players' fields - for (int i = 0; i < 6; i++) + for (int i = 0; i < MAX_PLAYERS; i++) { fields[i].clear(); } @@ -546,7 +538,7 @@ if (previousChannel != null && !client.supportsMultipleChannels()) { // clear the player list - for (int j = 1; j <= 6; j++) + for (int j = 1; j <= MAX_PLAYERS; j++) { if (previousChannel.getPlayer(j) != null) { @@ -592,7 +584,7 @@ int slot = 0; for (slot = 0; slot < slots.size() && slots.get(slot) != null; slot++) ; - if (slot >= 6) + if (slot >= MAX_PLAYERS) { log.warning("[" + getConfig().getName() + "] Panic, no slot available for " + client); client.getUser().setSpectator(); @@ -646,7 +638,7 @@ } // send the fields - for (int i = 0; i < 6; i++) + for (int i = 0; i < MAX_PLAYERS; i++) { if (!fields[i].isEmpty() || previousChannel != null) { Modified: jetrix/trunk/src/java/net/jetrix/ChannelManager.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/ChannelManager.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/java/net/jetrix/ChannelManager.java 2010-04-11 21:25:35 UTC (rev 836) @@ -83,7 +83,9 @@ { // get the channel Channel channel = getChannel(name); - + + removeChannel(channel); + // close it as soon as the last client leaves channel.getConfig().setPersistent(false); channel.send(new ShutdownMessage()); Modified: jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/java/net/jetrix/filter/DownstackPuzzleGenerator.java 2010-04-11 21:25:35 UTC (rev 836) @@ -64,35 +64,51 @@ public Puzzle getNextPuzzle() { - Puzzle puzzle = new Puzzle(); - try { // load the field File[] levels = getLevels(); File file = levels[level % levels.length]; level = level + 1; - Field field = new Field(); - field.load(file.getAbsolutePath()); - puzzle.setField(field); + + Puzzle puzzle = loadPuzzle(new File(path), file.getName().substring(0, file.getName().lastIndexOf("."))); puzzle.setKey(String.valueOf(level)); - - // load the settings - String name = file.getAbsolutePath().replace(".field", ".settings"); - readSettings(puzzle, name); + + return puzzle; } catch (IOException e) { log.log(Level.WARNING, e.getMessage(), e); } + + return null; + } + /** + * Load a puzzle from the filesystem. + * + * @param directory the directory containing the puzzle file + * @param name the name of the puzzle + */ + protected Puzzle loadPuzzle(File directory, String name) throws IOException + { + Puzzle puzzle = new Puzzle(); + + // load the field + Field field = new Field(); + field.load(new File(directory, name + ".field").getAbsolutePath()); + puzzle.setField(field); + + // load the settings + readSettings(puzzle, new File(directory, name + ".settings").getAbsolutePath()); + return puzzle; } /** * Find all levels in the puzzle directory. */ - private File[] getLevels() + protected File[] getLevels() { File directory = new File(path); File[] files = directory.listFiles(new FilenameFilter() @@ -209,8 +225,5 @@ } } } - } - - } Modified: jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java =================================================================== --- jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/java/net/jetrix/protocols/AbstractProtocol.java 2010-04-11 21:25:35 UTC (rev 836) @@ -55,6 +55,32 @@ return input.toString(); } + public boolean equals(Object o) + { + if (this == o) + { + return true; + } + if (o == null || getClass() != o.getClass()) + { + return false; + } + + Protocol that = (Protocol) o; + + if (!getName().equals(that.getName())) + { + return false; + } + + return true; + } + + public int hashCode() + { + return getName().hashCode(); + } + public String toString() { return "[Protocol name=" + getName() + "]"; Modified: jetrix/trunk/src/test/net/jetrix/ChannelManagerTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/ChannelManagerTest.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/test/net/jetrix/ChannelManagerTest.java 2010-04-11 21:25:35 UTC (rev 836) @@ -38,6 +38,7 @@ public void setUp() { manager = ChannelManager.getInstance(); + manager.clear(); config1 = new ChannelConfig(); config1.setName("test1"); Modified: jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/test/net/jetrix/filter/DownstackPuzzleGeneratorTest.java 2010-04-11 21:25:35 UTC (rev 836) @@ -19,6 +19,8 @@ package net.jetrix.filter; +import java.io.File; + import junit.framework.*; import net.jetrix.config.*; @@ -31,20 +33,32 @@ public void testGetNextPuzzle() { PuzzleGenerator generator = new DownstackPuzzleGenerator(); - Puzzle puzzle = generator.getNextPuzzle(); + + for (int i = 0; i < 100; i++) + { + Puzzle puzzle = generator.getNextPuzzle(); + assertNotNull("puzzle null", puzzle); + assertNotNull("null settings", puzzle.getSettings()); + } + } + public void testLoadPuzzle() throws Exception + { + DownstackPuzzleGenerator generator = new DownstackPuzzleGenerator(); + Puzzle puzzle = generator.loadPuzzle(new File("data/puzzle"), "game3"); + assertNotNull("puzzle null", puzzle); - assertEquals("author", "Kl\x80r", puzzle.getAuthor()); - assertEquals("name", "PUzzle BoBblE", puzzle.getName()); - assertEquals("comment", "none", puzzle.getComment()); + assertEquals("author", "NiLS", puzzle.getAuthor()); + assertEquals("name", "Left or Right", puzzle.getName()); + assertEquals("comment", "no comment", puzzle.getComment()); assertNotNull("null field", puzzle.getField()); assertFalse("empty field", puzzle.getField().isEmpty()); Settings settings = puzzle.getSettings(); assertNotNull("null settings", settings); - - int[] blocks = { 14, 14, 14, 14, 15, 15, 14 }; + + int[] blocks = { 14, 14, 15, 14, 14, 14, 15 }; for (int i = 0; i < DownstackPuzzleGenerator.BLOCKS.length; i++) { Block block = DownstackPuzzleGenerator.BLOCKS[i]; @@ -56,8 +70,8 @@ { assertEquals(special.getCode() + " occurancy", specials[special.ordinal()], settings.getOccurancy(special)); } - - assertEquals("sudden death message", "Time! It's SUDDEN DEATH MODE!", settings.getSuddenDeathMessage()); + + assertEquals("sudden death message", "Time's up! It's SUDDEN DEATH MODE!", settings.getSuddenDeathMessage()); assertEquals("sudden death delay", 30, settings.getSuddenDeathDelay()); assertEquals("sudden death time", 180, settings.getSuddenDeathTime()); assertEquals("sudden death lines", 1, settings.getSuddenDeathLinesAdded()); @@ -72,5 +86,4 @@ assertEquals("classic rules", true, settings.getClassicRules()); assertEquals("average levels", true, settings.getAverageLevels()); } - } Modified: jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/test/net/jetrix/protocols/TSpecProtocolTest.java 2010-04-11 21:25:35 UTC (rev 836) @@ -79,7 +79,7 @@ assertEquals("message class", SmsgMessage.class, message.getClass()); SmsgMessage smsg = (SmsgMessage) message; - assertEquals("slot", 0, smsg.getSlot()); + assertEquals("slot", 1, smsg.getSlot()); assertEquals("private", false, smsg.isPrivate()); assertEquals("text", "spectator message", smsg.getText()); } @@ -93,7 +93,7 @@ assertEquals("message class", SmsgMessage.class, message.getClass()); SmsgMessage smsg = (SmsgMessage) message; - assertEquals("slot", 0, smsg.getSlot()); + assertEquals("slot", 1, smsg.getSlot()); assertEquals("private", true, smsg.isPrivate()); assertEquals("text", "spectator message", smsg.getText()); } Modified: jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java =================================================================== --- jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2010-04-11 21:22:54 UTC (rev 835) +++ jetrix/trunk/src/test/net/jetrix/protocols/TetrinetProtocolTest.java 2010-04-11 21:25:35 UTC (rev 836) @@ -111,15 +111,15 @@ public void testGetMessageGmsg() { - String raw = "gmsg hello world!"; + String raw = "gmsg <Smanux> Hello world!"; Message message = protocol.getMessage(raw); assertNotNull("message not parsed", message); assertEquals("message class", GmsgMessage.class, message.getClass()); GmsgMessage gmsg = (GmsgMessage) message; - assertEquals("slot", 1, gmsg.getSlot()); - assertEquals("text", "hello world!", gmsg.getText(Locale.ENGLISH)); + assertEquals("slot", 0, gmsg.getSlot()); + assertEquals("text", "<Smanux> Hello world!", gmsg.getText(Locale.ENGLISH)); } public void testTranslatePlayerJoin() @@ -268,7 +268,7 @@ { byte[] ip = {127, 0, 0, 1}; String nickname = "Smanux"; - String version = "1.14"; + String version = "1.13"; assertEquals("80C210B3134A85CF71E46FD4C123A83D9E22A2F512769FE5", encode(nickname, version, ip, false)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |