Fine-tuned commands Mode, Join + added unit tests.

cefexperiments
Danny van Heumen 12 years ago
parent 35a0fe89b4
commit da53b1f810

@ -16,6 +16,11 @@
*/
public class Join implements Command
{
/**
* Index of end of command prefix.
*/
private static final int END_OF_COMMAND_PREFIX = 6;
/**
* Instance of the IRC connection.
*/
@ -47,7 +52,11 @@ public void init(final ProtocolProviderServiceIrcImpl provider,
@Override
public void execute(final String source, final String line)
{
final String part = line.substring(6);
if (line.length() < END_OF_COMMAND_PREFIX)
{
return;
}
final String part = line.substring(END_OF_COMMAND_PREFIX);
final String channel;
final String password;
int indexOfSep = part.indexOf(' ');
@ -61,9 +70,11 @@ public void execute(final String source, final String line)
channel = part.substring(0, indexOfSep);
password = part.substring(indexOfSep + 1);
}
if (channel.matches("[^,\\n\\r\\s\\a]+"))
if (!channel.matches("[^,\\n\\r\\s\\a]+"))
{
this.connection.getClient().joinChannel(channel, password);
throw new IllegalArgumentException(
"Invalid chat room name specified.");
}
this.connection.getClient().joinChannel(channel, password);
}
}

@ -58,8 +58,13 @@ public void execute(final String source, final String line)
// results.
return;
}
final String rawModeString = line.substring(END_OF_MODE_COMMAND_PREFIX);
this.connection.getClient().rawMessage(
"MODE " + source + " " + rawModeString);
final String rawModeString =
line.substring(END_OF_MODE_COMMAND_PREFIX);
if (rawModeString.trim().isEmpty())
{
throw new IllegalArgumentException(
"The mode command needs mode parameters to function.");
}
this.connection.getClient().changeMode(source + " " + rawModeString);
}
}

@ -0,0 +1,98 @@
package net.java.sip.communicator.impl.protocol.irc.command;
import junit.framework.*;
import net.java.sip.communicator.impl.protocol.irc.*;
import org.easymock.*;
import com.ircclouds.irc.api.*;
public class JoinTest
extends TestCase
{
public void testConstruction()
{
new Join();
}
public void testGoodInit()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
EasyMock.replay(connection);
Join join = new Join();
join.init(null, connection);
}
public void testBadInit()
{
ProtocolProviderServiceIrcImpl provider = EasyMock.createMock(ProtocolProviderServiceIrcImpl.class);
EasyMock.replay(provider);
Join join = new Join();
try
{
join.init(provider, null);
Assert.fail();
}
catch (IllegalArgumentException e)
{
}
}
public void testEmptyJoin()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
EasyMock.replay(connection);
Join join = new Join();
join.init(null, connection);
join.execute("#test", "/join");
}
public void testJoinEmptyChannelNoPassword()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
EasyMock.replay(connection);
Join join = new Join();
join.init(null, connection);
try
{
join.execute("#test", "/join ");
Assert.fail();
}
catch (IllegalArgumentException e)
{
}
}
public void testJoinWithChannelNoPassword()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
IRCApi client = EasyMock.createMock(IRCApi.class);
EasyMock.expect(connection.getClient()).andReturn(client);
client.joinChannel(EasyMock.eq("#test"), EasyMock.eq(""));
EasyMock.expectLastCall();
EasyMock.replay(connection, client);
Join join = new Join();
join.init(null, connection);
join.execute("#test", "/join #test");
}
public void testJoinWithChannelWithPassword()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
IRCApi client = EasyMock.createMock(IRCApi.class);
EasyMock.expect(connection.getClient()).andReturn(client);
client.joinChannel(EasyMock.eq("#test"), EasyMock.eq("top-secret"));
EasyMock.expectLastCall();
EasyMock.replay(connection, client);
Join join = new Join();
join.init(null, connection);
join.execute("#test", "/join #test top-secret");
}
}

@ -0,0 +1,94 @@
package net.java.sip.communicator.impl.protocol.irc.command;
import junit.framework.*;
import net.java.sip.communicator.impl.protocol.irc.*;
import org.easymock.*;
import com.ircclouds.irc.api.*;
public class ModeTest
extends TestCase
{
public void testConstruction()
{
new Mode();
}
public void testGoodInit()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
EasyMock.replay(connection);
Mode mode = new Mode();
mode.init(null, connection);
}
public void testBadInit()
{
ProtocolProviderServiceIrcImpl provider =
EasyMock.createMock(ProtocolProviderServiceIrcImpl.class);
EasyMock.replay(provider);
Mode mode = new Mode();
try
{
mode.init(provider, null);
Assert.fail();
}
catch (IllegalArgumentException e)
{
}
}
public void testEmptyCommand()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
EasyMock.replay(connection);
Mode mode = new Mode();
mode.init(null, connection);
mode.execute("#test", "/mode");
}
public void testEmptyModeLine()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
EasyMock.replay(connection);
Mode mode = new Mode();
mode.init(null, connection);
mode.execute("#test", "/mode ");
}
public void testSpacesModeLine()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
EasyMock.replay(connection);
Mode mode = new Mode();
mode.init(null, connection);
try
{
mode.execute("#test", "/mode ");
}
catch (IllegalArgumentException e)
{
}
}
public void testCorrectModeCommand()
{
IrcConnection connection = EasyMock.createMock(IrcConnection.class);
IRCApi client = EasyMock.createMock(IRCApi.class);
EasyMock.expect(connection.getClient()).andReturn(client);
client.changeMode(EasyMock.eq("#test +o ThaDud3"));
EasyMock.expectLastCall();
EasyMock.replay(connection, client);
Mode mode = new Mode();
mode.init(null, connection);
mode.execute("#test", "/mode +o ThaDud3");
}
}
Loading…
Cancel
Save