Some testing of helper classes.

fix-message-formatting
Danny van Heumen 12 years ago
parent 6a51e860ee
commit 7c275e8cb8

@ -19,7 +19,10 @@ public enum Mode
OWNER('O', ChatRoomMemberRole.OWNER), OWNER('O', ChatRoomMemberRole.OWNER),
OPERATOR('o', ChatRoomMemberRole.ADMINISTRATOR), OPERATOR('o', ChatRoomMemberRole.ADMINISTRATOR),
VOICE('v', ChatRoomMemberRole.MEMBER), VOICE('v', ChatRoomMemberRole.MEMBER),
LIMIT('l', null); LIMIT('l', null),
PRIVATE('p', null),
SECRET('s', null),
INVITE('i', null);
/** /**
* Find Mode instance by mode char. * Find Mode instance by mode char.

@ -67,20 +67,30 @@ protected ModeParser(String modestring)
*/ */
private void parse(String modestring) private void parse(String modestring)
{ {
boolean adding = true; Boolean addition = null;
for (char c : modestring.toCharArray()) for (char c : modestring.toCharArray())
{ {
switch (c) switch (c)
{ {
case '+': case '+':
adding = true; addition = true;
break; break;
case '-': case '-':
adding = false; addition = false;
break; break;
default: default:
ModeEntry entry = process(adding, c); if (addition == null)
modes.add(entry); throw new IllegalStateException(
"expect modifier (+ or -) first");
try
{
ModeEntry entry = process(addition, c);
modes.add(entry);
}
catch (ArrayIndexOutOfBoundsException e)
{
throw new IllegalArgumentException("invalid mode string provided: parameter missing", e);
}
break; break;
} }
} }
@ -108,6 +118,12 @@ private ModeEntry process(boolean add, char mode)
String[] params = (add ? new String[] String[] params = (add ? new String[]
{ this.params[this.index++] } : new String[] {}); { this.params[this.index++] } : new String[] {});
return new ModeEntry(add, Mode.LIMIT, params); return new ModeEntry(add, Mode.LIMIT, params);
case 'p':
return new ModeEntry(add, Mode.PRIVATE);
case 's':
return new ModeEntry(add, Mode.SECRET);
case 'i':
return new ModeEntry(add, Mode.INVITE);
default: default:
return new ModeEntry(add, Mode.UNKNOWN, ""+mode); return new ModeEntry(add, Mode.UNKNOWN, ""+mode);
} }

@ -0,0 +1,217 @@
package net.java.sip.communicator.impl.protocol.irc;
import java.util.*;
import net.java.sip.communicator.impl.protocol.irc.ModeParser.ModeEntry;
import com.ircclouds.irc.api.domain.messages.*;
import junit.framework.*;
public class ModeParserTest
extends TestCase
{
protected void setUp() throws Exception
{
super.setUp();
}
public void testConstructionModeMessageNull()
{
try
{
new ModeParser((ChannelModeMessage) null);
Assert.fail("Expected NPE");
}
catch (NullPointerException e)
{
}
}
public void testConstructionStringNull()
{
try
{
new ModeParser((String) null);
Assert.fail("Expected NPE");
}
catch (NullPointerException e)
{
}
}
public void testConstructionStringEmpty()
{
ModeParser parser = new ModeParser("");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(0, modes.size());
}
public void testConstructionStringSingleBad()
{
try
{
new ModeParser("p");
Assert.fail();
}
catch (IllegalStateException e)
{
}
}
public void testConstructionStringSingleGood()
{
ModeParser parser = new ModeParser("+p");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.PRIVATE, modes.get(0).getMode());
Assert.assertTrue(modes.get(0).isAdded());
Assert.assertEquals(0, modes.get(0).getParams().length);
}
public void testParseRemoval()
{
ModeParser parser = new ModeParser("-p");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.PRIVATE, modes.get(0).getMode());
Assert.assertFalse(modes.get(0).isAdded());
Assert.assertEquals(0, modes.get(0).getParams().length);
}
public void testParseUnknownMode()
{
ModeParser parser = new ModeParser("+?");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.UNKNOWN, modes.get(0).getMode());
Assert.assertEquals(1, modes.get(0).getParams().length);
Assert.assertEquals("?", modes.get(0).getParams()[0]);
}
public void testModeMissingExtraParameters()
{
try
{
new ModeParser("+l");
Assert.fail("this line should not be reached");
}
catch (IllegalArgumentException e)
{
// expect illegal argument exception
}
}
public void testModeExtraParameters()
{
ModeParser parser = new ModeParser("+l 123 141");
Assert.assertEquals(1, parser.getModes().size());
// Parse modes, expect 1 and ignore the extra parameter.
}
public void testModeOwner()
{
ModeParser parser = new ModeParser("+O dude");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.OWNER, modes.get(0).getMode());
Assert.assertEquals(1, modes.get(0).getParams().length);
Assert.assertEquals("dude", modes.get(0).getParams()[0]);
}
public void testModeOperator()
{
ModeParser parser = new ModeParser("+o dude");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.OPERATOR, modes.get(0).getMode());
Assert.assertEquals(1, modes.get(0).getParams().length);
Assert.assertEquals("dude", modes.get(0).getParams()[0]);
}
public void testModeVoice()
{
ModeParser parser = new ModeParser("+v dude");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.VOICE, modes.get(0).getMode());
Assert.assertEquals(1, modes.get(0).getParams().length);
Assert.assertEquals("dude", modes.get(0).getParams()[0]);
}
public void testModeLimitAddition()
{
ModeParser parser = new ModeParser("+l 13");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.LIMIT, modes.get(0).getMode());
Assert.assertEquals(1, modes.get(0).getParams().length);
Assert.assertEquals("13", modes.get(0).getParams()[0]);
}
public void testModeLimitRemoval()
{
ModeParser parser = new ModeParser("-l");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.LIMIT, modes.get(0).getMode());
Assert.assertEquals(0, modes.get(0).getParams().length);
}
public void testModePrivate()
{
ModeParser parser = new ModeParser("+p");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.PRIVATE, modes.get(0).getMode());
Assert.assertEquals(0, modes.get(0).getParams().length);
}
public void testModeSecret()
{
ModeParser parser = new ModeParser("+s");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.SECRET, modes.get(0).getMode());
Assert.assertEquals(0, modes.get(0).getParams().length);
}
public void testModeInvite()
{
ModeParser parser = new ModeParser("+i");
List<ModeEntry> modes = parser.getModes();
Assert.assertNotNull(modes);
Assert.assertEquals(1, modes.size());
Assert.assertTrue(modes.get(0) instanceof ModeEntry);
Assert.assertEquals(Mode.INVITE, modes.get(0).getMode());
Assert.assertEquals(0, modes.get(0).getParams().length);
}
protected void tearDown() throws Exception
{
super.tearDown();
}
}

@ -0,0 +1,48 @@
package net.java.sip.communicator.impl.protocol.irc;
import net.java.sip.communicator.service.protocol.*;
import junit.framework.*;
public class ModeTest
extends TestCase
{
protected void setUp() throws Exception
{
super.setUp();
}
public void testGetSymbol()
{
Assert.assertEquals('o', Mode.OPERATOR.getSymbol());
}
public void testGetRole()
{
Assert
.assertTrue(Mode.OPERATOR.getRole() instanceof ChatRoomMemberRole);
}
public void testGetBySymbol()
{
Assert.assertSame(Mode.OPERATOR, Mode.bySymbol('o'));
}
public void testGetBySymbolNonExisting()
{
try
{
Mode.bySymbol('&');
Assert.fail("Expected IllegalArgumentException");
}
catch (IllegalArgumentException e)
{
}
}
protected void tearDown() throws Exception
{
super.tearDown();
}
}

@ -13,7 +13,7 @@ public void testConstruction()
Assert.assertNull(result.getValue()); Assert.assertNull(result.getValue());
Assert.assertNull(result.getException()); Assert.assertNull(result.getException());
} }
public void testSetDone() public void testSetDone()
{ {
Result<Object, Exception> result = new Result<Object, Exception>(); Result<Object, Exception> result = new Result<Object, Exception>();
@ -22,7 +22,7 @@ public void testSetDone()
Assert.assertNull(result.getValue()); Assert.assertNull(result.getValue());
Assert.assertNull(result.getException()); Assert.assertNull(result.getException());
} }
public void testSetDoneWithValue() public void testSetDoneWithValue()
{ {
Object v = new Object(); Object v = new Object();
@ -32,21 +32,23 @@ public void testSetDoneWithValue()
Assert.assertSame(v, result.getValue()); Assert.assertSame(v, result.getValue());
Assert.assertNull(result.getException()); Assert.assertNull(result.getException());
} }
public void testSetDoneWithException() public void testSetDoneWithException()
{ {
Exception e = new IllegalStateException("the world is going to explode"); Exception e =
new IllegalStateException("the world is going to explode");
Result<Object, Exception> result = new Result<Object, Exception>(); Result<Object, Exception> result = new Result<Object, Exception>();
result.setDone(e); result.setDone(e);
Assert.assertTrue(result.isDone()); Assert.assertTrue(result.isDone());
Assert.assertNull(result.getValue()); Assert.assertNull(result.getValue());
Assert.assertSame(e, result.getException()); Assert.assertSame(e, result.getException());
} }
public void testSetDoneWithBoth() public void testSetDoneWithBoth()
{ {
Object v = new Object(); Object v = new Object();
Exception e = new IllegalStateException("the world is going to explode"); Exception e =
new IllegalStateException("the world is going to explode");
Result<Object, Exception> result = new Result<Object, Exception>(); Result<Object, Exception> result = new Result<Object, Exception>();
result.setDone(v, e); result.setDone(v, e);
Assert.assertTrue(result.isDone()); Assert.assertTrue(result.isDone());

Loading…
Cancel
Save