/****************************************************************************
* Copyright (c) 2004 Composent, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Composent, Inc. - initial API and implementation
*****************************************************************************/
package org.eclipse.ecf.tests.presence;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDFactory;
import org.eclipse.ecf.presence.IIMMessageEvent;
import org.eclipse.ecf.presence.IIMMessageListener;
import org.eclipse.ecf.presence.im.IChatManager;
import org.eclipse.ecf.presence.im.IChatMessage;
import org.eclipse.ecf.presence.im.IChatMessageEvent;
/**
*
*/
public class ChatTest extends PresenceAbstractTestCase {
IChatManager chat0, chat1 = null;
public static final int WAITTIME = 3000;
List<IChatMessage> receivedChatMessages = new ArrayList<IChatMessage>();
IIMMessageListener listener = new IIMMessageListener() {
public void handleMessageEvent(IIMMessageEvent messageEvent) {
if (messageEvent instanceof IChatMessageEvent) {
IChatMessage chatmessage = ((IChatMessageEvent) messageEvent)
.getChatMessage();
System.out.println("received chat message=" + chatmessage);
receivedChatMessages.add(chatmessage);
}
}
};
/*
* (non-Javadoc)
*
* @see org.eclipse.ecf.tests.presence.PresenceAbstractTestCase#setUp()
*/
protected void setUp() throws Exception {
setClientCount(2);
clients = createClients();
chat0 = getPresenceAdapter(0).getChatManager();
chat1 = getPresenceAdapter(1).getChatManager();
chat1.addMessageListener(listener);
for (int i = 0; i < 2; i++) {
connectClient(i);
}
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
receivedChatMessages.clear();
disconnectClients();
}
public void testSendIM() throws Exception {
chat0.getChatMessageSender().sendChatMessage(getServerConnectID(1),
"abcdef");
sleep(WAITTIME);
assertHasEvent(receivedChatMessages, IChatMessage.class);
IChatMessage message = receivedChatMessages.get(0);
assertTrue(message.getBody().equals("abcdef"));
assertTrue(message.getType().equals(IChatMessage.Type.CHAT));
ID fromID = message.getFromID();
assertTrue(fromID.equals(getServerConnectID(0)));
assertNull(message.getSubject());
Map props = message.getProperties();
assertNotNull(props);
assertTrue(props.size() == 0);
}
public void testSendIM2() throws Exception {
Map sendprops = new HashMap();
sendprops.put("prop1", "this");
ID sendthreadid = IDFactory.getDefault().createStringID("thread1");
// Send the whole thing
chat0.getChatMessageSender().sendChatMessage(getServerConnectID(1),
sendthreadid, IChatMessage.Type.CHAT, "subject1", "uvwxyz",
sendprops);
sleep(WAITTIME);
assertHasEvent(receivedChatMessages, IChatMessage.class);
IChatMessage message = receivedChatMessages.get(0);
// For some reason, the smack library doesn't seem to get this right.
// assertTrue(message.getThreadID().equals(sendthreadid));
assertTrue(message.getSubject().equals("subject1"));
assertTrue(message.getBody().equals("uvwxyz"));
assertTrue(message.getType().equals(IChatMessage.Type.CHAT));
ID fromID = message.getFromID();
assertTrue(fromID.equals(getServerConnectID(0)));
Map props = message.getProperties();
assertNotNull(props);
assertTrue(props.size() == 1);
String val = (String) props.get("prop1");
assertNotNull(val);
assertEquals(val, "this");
}
public void testSendMessageProperties() throws Exception {
Map sendprops = new HashMap();
sendprops.put("prop2", "that");
// Send the whole thing
chat0.getChatMessageSender().sendChatMessage(getServerConnectID(1),
null, IChatMessage.Type.CHAT, null, null, sendprops);
sleep(WAITTIME);
assertHasEvent(receivedChatMessages, IChatMessage.class);
IChatMessage message = receivedChatMessages.get(0);
assertNull(message.getSubject());
assertTrue(message.getBody().equals(""));
assertTrue(message.getType().equals(IChatMessage.Type.CHAT));
ID fromID = message.getFromID();
assertTrue(fromID.equals(getServerConnectID(0)));
Map props = message.getProperties();
assertNotNull(props);
assertTrue(props.size() == 1);
String val = (String) props.get("prop2");
assertNotNull(val);
assertEquals(val, "that");
}
}