/*
* Copyright 2004-2006 Stefan Reuter
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.asteriskjava.live.internal;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import junit.framework.TestCase;
import org.asteriskjava.live.QueueMemberState;
import org.junit.Before;
import org.junit.Test;
/**
* @author <a href="mailto:patrick.breucking{@nospam}gonicus.de">Patrick Breucking</a>
* @version $Id: AsteriskQueueMemberImplTest.java 1070 2008-06-10 22:44:55Z srt $
* @since 0.1
*/
public class AsteriskQueueMemberImplTest extends TestCase
{
private AsteriskQueueMemberImpl queueMember;
private int numberOfChanges;
private AsteriskServerImpl server;
private QueueManager qManager;
private AsteriskQueueImpl queue;
@Override
@Before
public void setUp() throws Exception
{
server = new AsteriskServerImpl();
// ChannelManager channelManager = new ChannelManager(server);
// qManager = new QueueManager(server, channelManager);
queue = new AsteriskQueueImpl(server, "test", 25, "RoundRobin", 15, 5);
queueMember = new AsteriskQueueMemberImpl(server, queue, "Agent/777",
QueueMemberState.DEVICE_UNKNOWN, false, 10, "dynamic");
numberOfChanges = 0;
}
@Test
public void testQueueMemberEvents() throws Exception
{
/*
* Test should generate a new member like queueMember = new
*/
// queueMember = new AsteriskQueueMemberImpl(server, queue, "Agent/777",
// QueueMemberState.DEVICE_UNKNOWN);
// QueueParamsEvent qpe = new QueueParamsEvent(new Object());
// qpe.setQueue("test");
// server.onManagerEvent(qpe);
// qManager.handleQueueParamsEvent(qpe);
// QueueMemberEvent qme = new QueueMemberEvent(new Object());
// qme.setLocation("Agent/777");
// qme.setQueue("test");
// qme.setStatus(0);
// server.onManagerEvent(qme);
// qManager.handleQueueMemberEvent(qme);
// Collection<AsteriskQueue> queues = server.getQueues();
// assertEquals(1, queues.size());
// AsteriskQueue queue = queues.iterator().next();
//
// Collection<AsteriskQueueMember> members = queue.getMembers();
// assertEquals(1, members.size());
// AsteriskQueueMember member = members.iterator().next();
// assertEquals("Agent/777", member.getLocation());
assertEquals(QueueMemberState.DEVICE_UNKNOWN, queueMember.getState());
queueMember.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent evt)
{
assertEquals("wrong propertyName", "state", evt
.getPropertyName());
assertEquals("wrong oldValue", QueueMemberState.DEVICE_UNKNOWN,
evt.getOldValue());
assertEquals("wrong newValue", QueueMemberState.DEVICE_BUSY,
evt.getNewValue());
assertEquals("wrong queue member", queueMember, evt.getSource());
numberOfChanges++;
}
});
// queue.addAsteriskQueueListener(new AsteriskQueueListener()
// {
//
// public void onEntryLeave(AsteriskChannel channel)
// {
// // TODO Auto-generated method stub
//
// }
//
// public void onMemberStateChange(AsteriskQueueMember member)
// {
// assertEquals("wrong newValue", QueueMemberState.DEVICE_BUSY,
// member.getState());
// assertEquals("wrong queue member", queueMember, member);
// System.err.println("foo");
// numberOfChanges++;
//
// }
//
// public void onNewEntry(AsteriskChannel channel)
// {
// // TODO Auto-generated method stub
//
// }
//
// });
// queueMember.stateChanged(QueueMemberState.DEVICE_BUSY);
// QueueMemberStatusEvent qmse = new QueueMemberStatusEvent(new
// Object());
// qmse.setLocation(queueMember.getLocation());
// qmse.setStatus(3);
// server.onManagerEvent(qmse);
queueMember.stateChanged(QueueMemberState.DEVICE_BUSY);
assertEquals("wrong number of propagated changes", 1, numberOfChanges);
}
}