ChatRoomMemberIrcImpl tweaked + tests.

fix-message-formatting
Danny van Heumen 12 years ago
parent 7c5e27f38d
commit 10e5d71782

@ -17,10 +17,6 @@
public class ChatRoomMemberIrcImpl public class ChatRoomMemberIrcImpl
implements ChatRoomMember implements ChatRoomMember
{ {
// TODO Since we instantiate new instances for every chat room, we should
// override equals() and hashCode() to make sure that we can compare users
// that are actually the same.
/** /**
* The ChatRoom. * The ChatRoom.
*/ */
@ -34,7 +30,7 @@ public class ChatRoomMemberIrcImpl
/** /**
* The provider that created us. * The provider that created us.
*/ */
private final ProtocolProviderServiceIrcImpl parentProvider; private final ProtocolProviderService parentProvider;
/** /**
* The role of this member. * The role of this member.
@ -54,14 +50,24 @@ public class ChatRoomMemberIrcImpl
* @param chatRoomMemberRole the role that this member has in the * @param chatRoomMemberRole the role that this member has in the
* corresponding chat room * corresponding chat room
*/ */
public ChatRoomMemberIrcImpl(ProtocolProviderServiceIrcImpl parentProvider, public ChatRoomMemberIrcImpl(ProtocolProviderService parentProvider,
ChatRoom chatRoom, ChatRoom chatRoom,
String contactID, String contactID,
ChatRoomMemberRole chatRoomMemberRole) ChatRoomMemberRole chatRoomMemberRole)
{ {
if (parentProvider == null)
throw new IllegalArgumentException(
"parent protocol provider cannot be null");
this.parentProvider = parentProvider; this.parentProvider = parentProvider;
if (chatRoom == null)
throw new IllegalArgumentException(
"chat room instance cannot be null");
this.chatRoom = chatRoom; this.chatRoom = chatRoom;
if (contactID == null)
throw new IllegalArgumentException("contact ID cannot be null");
this.contactID = contactID; this.contactID = contactID;
if (chatRoomMemberRole == null)
throw new IllegalArgumentException("member role cannot be null");
this.chatRoomMemberRole = chatRoomMemberRole; this.chatRoomMemberRole = chatRoomMemberRole;
} }
@ -92,7 +98,7 @@ public ProtocolProviderService getProtocolProvider()
* this method returns the same as getName(). * this method returns the same as getName().
* *
* @return a String (contact address), uniquely representing the contact * @return a String (contact address), uniquely representing the contact
* over the service being used by the associated protocol provider instance/ * over the service being used by the associated protocol provider instance
*/ */
public String getContactAddress() public String getContactAddress()
{ {
@ -143,6 +149,8 @@ public ChatRoomMemberRole getRole()
*/ */
public void setRole(ChatRoomMemberRole chatRoomMemberRole) public void setRole(ChatRoomMemberRole chatRoomMemberRole)
{ {
if (chatRoomMemberRole == null)
throw new IllegalArgumentException("role cannot be null");
this.chatRoomMemberRole = chatRoomMemberRole; this.chatRoomMemberRole = chatRoomMemberRole;
} }
@ -167,4 +175,46 @@ public Contact getContact()
{ {
return null; return null;
} }
/**
* {@inheritDoc}
*/
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result =
prime * result + ((contactID == null) ? 0 : contactID.hashCode());
result =
prime * result
+ ((parentProvider == null) ? 0 : parentProvider.hashCode());
return result;
}
/**
* equality by provider protocol instance and contact ID.
*
* Enables the possibility to check if chat room member is same member in
* different chat rooms. Values are only reliable for the same connection,
* so also check protocol provider instance.
*
* {@inheritDoc}
*/
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ChatRoomMemberIrcImpl other = (ChatRoomMemberIrcImpl) obj;
if (!contactID.equals(other.contactID))
return false;
if (!parentProvider.equals(other.parentProvider))
return false;
return true;
}
} }

@ -0,0 +1,253 @@
package net.java.sip.communicator.impl.protocol.irc;
import org.easymock.*;
import net.java.sip.communicator.service.protocol.*;
import junit.framework.*;
public class ChatRoomMemberIrcImplTest
extends TestCase
{
public void testConstructorNullProvider()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
try
{
new ChatRoomMemberIrcImpl(null, chatroom, "user",
ChatRoomMemberRole.SILENT_MEMBER);
Assert.fail("should throw IAE for parent provider instance");
}
catch (IllegalArgumentException e)
{
// this is good
}
}
public void testConstructorNullChatRoom()
{
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
try
{
new ChatRoomMemberIrcImpl(provider, null, "user",
ChatRoomMemberRole.SILENT_MEMBER);
Assert.fail("should throw IAE for ChatRoom instance");
}
catch (IllegalArgumentException e)
{
// this is good
}
}
public void testConstructorNullContactId()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
try
{
new ChatRoomMemberIrcImpl(provider, chatroom, null,
ChatRoomMemberRole.SILENT_MEMBER);
Assert.fail("should throw IAE for ChatRoom instance");
}
catch (IllegalArgumentException e)
{
// this is good
}
}
public void testConstructorNullRole()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
try
{
new ChatRoomMemberIrcImpl(provider, chatroom, "user", null);
Assert.fail("should throw IAE for ChatRoom instance");
}
catch (IllegalArgumentException e)
{
// this is good
}
}
public void testConstructorSuccessful()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
Assert.assertNotNull(new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER));
}
public void testCheckGetters()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertEquals(provider, member.getProtocolProvider());
Assert.assertEquals(chatroom, member.getChatRoom());
Assert.assertEquals("user", member.getContactAddress());
Assert.assertEquals("user", member.getName());
Assert.assertSame(ChatRoomMemberRole.SILENT_MEMBER, member.getRole());
}
public void testNameNull()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member =
new ChatRoomMemberIrcImpl(provider, chatroom, "user",
ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertEquals("user", member.getContactAddress());
Assert.assertEquals("user", member.getName());
try
{
member.setName(null);
Assert.fail("expected IAE to be thrown");
}
catch (IllegalArgumentException e)
{
// this is good
}
}
public void testNameChange()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertEquals("user", member.getContactAddress());
Assert.assertEquals("user", member.getName());
member.setName("myNewName");
Assert.assertEquals("myNewName", member.getContactAddress());
Assert.assertEquals("myNewName", member.getName());
}
public void testRoleNull()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member =
new ChatRoomMemberIrcImpl(provider, chatroom, "user",
ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertSame(ChatRoomMemberRole.SILENT_MEMBER, member.getRole());
try
{
member.setRole(null);
Assert.fail("expected IAE because of null role");
}
catch (IllegalArgumentException e)
{
// this is good
}
}
public void testRoleChange()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertSame(ChatRoomMemberRole.SILENT_MEMBER, member.getRole());
member.setRole(ChatRoomMemberRole.ADMINISTRATOR);
Assert.assertSame(ChatRoomMemberRole.ADMINISTRATOR, member.getRole());
}
public void testGetContact()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertNull(member.getContact());
}
public void testGetAvatar()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertNull(member.getAvatar());
}
public void testEqualsSame()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertTrue(member.equals(member));
}
public void testEqualsNull()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertFalse(member.equals(null));
}
public void testEqualsObject()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertFalse(member.equals(new Object()));
}
public void testEqualsSameUserDifferentProvider()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member1 = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
ProtocolProviderService provider2 =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member2 = new ChatRoomMemberIrcImpl(provider2, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertFalse(member1.equals(member2));
}
public void testEqualsSameProviderDifferentUser()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member1 = new ChatRoomMemberIrcImpl(provider, chatroom,
"user", ChatRoomMemberRole.SILENT_MEMBER);
ChatRoomMemberIrcImpl member2 = new ChatRoomMemberIrcImpl(provider, chatroom,
"susy", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertFalse(member1.equals(member2));
}
public void testEqualsTrue()
{
ChatRoom chatroom = EasyMock.createMock(ChatRoom.class);
ProtocolProviderService provider =
EasyMock.createMock(ProtocolProviderService.class);
ChatRoomMemberIrcImpl member1 = new ChatRoomMemberIrcImpl(provider, chatroom,
"susy", ChatRoomMemberRole.SILENT_MEMBER);
ChatRoomMemberIrcImpl member2 = new ChatRoomMemberIrcImpl(provider, chatroom,
"susy", ChatRoomMemberRole.SILENT_MEMBER);
Assert.assertTrue(member1.equals(member2));
}
}
Loading…
Cancel
Save