ChatRoomMemberIrcImpl tweaked + tests.

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

@ -17,10 +17,6 @@
public class ChatRoomMemberIrcImpl
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.
*/
@ -34,7 +30,7 @@ public class ChatRoomMemberIrcImpl
/**
* The provider that created us.
*/
private final ProtocolProviderServiceIrcImpl parentProvider;
private final ProtocolProviderService parentProvider;
/**
* The role of this member.
@ -54,14 +50,24 @@ public class ChatRoomMemberIrcImpl
* @param chatRoomMemberRole the role that this member has in the
* corresponding chat room
*/
public ChatRoomMemberIrcImpl(ProtocolProviderServiceIrcImpl parentProvider,
public ChatRoomMemberIrcImpl(ProtocolProviderService parentProvider,
ChatRoom chatRoom,
String contactID,
ChatRoomMemberRole chatRoomMemberRole)
{
if (parentProvider == null)
throw new IllegalArgumentException(
"parent protocol provider cannot be null");
this.parentProvider = parentProvider;
if (chatRoom == null)
throw new IllegalArgumentException(
"chat room instance cannot be null");
this.chatRoom = chatRoom;
if (contactID == null)
throw new IllegalArgumentException("contact ID cannot be null");
this.contactID = contactID;
if (chatRoomMemberRole == null)
throw new IllegalArgumentException("member role cannot be null");
this.chatRoomMemberRole = chatRoomMemberRole;
}
@ -92,7 +98,7 @@ public ProtocolProviderService getProtocolProvider()
* this method returns the same as getName().
*
* @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()
{
@ -103,7 +109,7 @@ public String getContactAddress()
* Returns the name of this member as it is known in its containing
* chat room (i.e. a nickname). The name returned by this method, may
* sometimes match the string returned by getContactID() which is actually
* the address of a contact in the realm of the corresponding protocol.
* the address of a contact in the realm of the corresponding protocol.
*
* @return the name of this member as it is known in the containing chat
* room (i.e. a nickname).
@ -112,7 +118,7 @@ public String getName()
{
return this.contactID;
}
/**
* Set a new name for this ChatRoomMember.
*
@ -143,6 +149,8 @@ public ChatRoomMemberRole getRole()
*/
public void setRole(ChatRoomMemberRole chatRoomMemberRole)
{
if (chatRoomMemberRole == null)
throw new IllegalArgumentException("role cannot be null");
this.chatRoomMemberRole = chatRoomMemberRole;
}
@ -152,19 +160,61 @@ public void setRole(ChatRoomMemberRole chatRoomMemberRole)
*
* @return null
*/
public byte[] getAvatar()
{
return null;
}
/**
* Returns null to indicate that there's no contact corresponding to the
* IRC member.
*
* @return null
*/
public Contact getContact()
{
return null;
}
public byte[] getAvatar()
{
return null;
}
/**
* Returns null to indicate that there's no contact corresponding to the
* IRC member.
*
* @return null
*/
public Contact getContact()
{
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