package org.jacorb.test.notification;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Date;
import org.easymock.MockControl;
import org.jacorb.notification.impl.DefaultMessageFactory;
import org.jacorb.notification.interfaces.FilterStage;
import org.jacorb.notification.interfaces.Message;
import org.jacorb.notification.servant.IProxyConsumer;
import org.jacorb.test.notification.common.NotificationTestCase;
import org.jacorb.test.notification.common.NotificationTestUtils;
import org.jacorb.util.Time;
import org.junit.Before;
import org.junit.Test;
import org.omg.CORBA.Any;
import org.omg.CosNotification.EventHeader;
import org.omg.CosNotification.EventType;
import org.omg.CosNotification.FixedEventHeader;
import org.omg.CosNotification.Property;
import org.omg.CosNotification.StopTime;
import org.omg.CosNotification.StructuredEvent;
import org.omg.CosNotification.StructuredEventHelper;
import org.omg.TimeBase.UtcT;
import org.omg.TimeBase.UtcTHelper;
/**
* @author Alphonse Bendt
*/
public class MessageFactoryTest extends NotificationTestCase
{
DefaultMessageFactory messageFactory_;
NotificationTestUtils testUtils_;
Any testPerson_;
StructuredEvent testStructured_;
// //////////////////////////////////////
@Test
public void testStructuredEventWithStopTimeProperty() throws Exception
{
testStructured_.header.variable_header = new Property[1];
Date _now = new Date();
Any _any = getORB().create_any();
UtcT _utc = Time.corbaTime(_now);
UtcTHelper.insert(_any, _utc);
testStructured_.header.variable_header[0] = new Property(StopTime.value, _any);
MockControl proxyConsumerControl = MockControl.createNiceControl(IProxyConsumer.class);
IProxyConsumer proxyConsumerMock = (IProxyConsumer) proxyConsumerControl.getMock();
proxyConsumerControl.expectAndReturn(proxyConsumerMock.getStopTimeSupported(), true);
proxyConsumerControl.replay();
Message _event = messageFactory_.newMessage(testStructured_, proxyConsumerMock);
assertTrue(_event.hasStopTime());
assertEquals(_now.getTime(), _event.getStopTime());
proxyConsumerControl.verify();
}
@Test
public void testStructuredEventWithoutStopTimeProperty() throws Exception
{
Message _event = messageFactory_.newMessage(testStructured_);
assertTrue(!_event.hasStopTime());
}
@Test
public void testAnyEventHasNoStopTime() throws Exception
{
Message _event = messageFactory_.newMessage(getORB().create_any());
assertTrue(!_event.hasStopTime());
}
@Test
public void testNewEventStructured() throws Exception
{
assertNotNull(messageFactory_.newMessage(testStructured_));
}
@Test
public void testStructuredToAny() throws Exception
{
Message _notifyEvent = messageFactory_.newMessage(testStructured_);
assertNotNull(_notifyEvent);
Any _any = _notifyEvent.toAny();
StructuredEvent _event = StructuredEventHelper.extract(_any);
assertNotNull(_event);
assertEquals("domain", _event.header.fixed_header.event_type.domain_name);
assertEquals("type", _event.header.fixed_header.event_type.type_name);
}
@Test
public void testStructuredToStructured() throws Exception
{
Message _notifyEvent = messageFactory_.newMessage(testStructured_);
assertNotNull(_notifyEvent);
StructuredEvent _event = _notifyEvent.toStructuredEvent();
assertNotNull(_event);
assertEquals("domain", _event.header.fixed_header.event_type.domain_name);
assertEquals("type", _event.header.fixed_header.event_type.type_name);
}
@Test
public void testNewEventAny() throws Exception
{
Message _notifyEvent = messageFactory_.newMessage(testPerson_);
assertNotNull(_notifyEvent);
}
@Test
public void testAnyToStructured() throws Exception
{
Message _notifyEvent = messageFactory_.newMessage(testPerson_);
StructuredEvent _structured = _notifyEvent.toStructuredEvent();
assertNotNull(_structured);
assertEquals("%ANY", _structured.header.fixed_header.event_type.type_name);
assertEquals("", _structured.header.fixed_header.event_type.domain_name);
assertEquals("", _structured.header.fixed_header.event_name);
Person _p = PersonHelper.extract(_structured.remainder_of_body);
assertNotNull(_p);
assertEquals("firstname", _p.first_name);
assertEquals("lastname", _p.last_name);
}
@Test
public void testAnyToAny() throws Exception
{
Message _notifyEvent = messageFactory_.newMessage(testPerson_);
Any _anyEvent = _notifyEvent.toAny();
assertNotNull(_anyEvent);
Person _p = PersonHelper.extract(_anyEvent);
assertNotNull(_p);
assertEquals("firstname", _p.first_name);
assertEquals("lastname", _p.last_name);
}
@Test
public void testWrappedStructuredEventToStructuredEvent() throws Exception
{
Any _wrappedStructuredEvent = getORB().create_any();
StructuredEventHelper.insert(_wrappedStructuredEvent, testStructured_);
Message _mesg = messageFactory_.newMessage(_wrappedStructuredEvent,
new IProxyConsumer()
{
public boolean getStartTimeSupported()
{
return false;
}
public boolean getStopTimeSupported()
{
return false;
}
public FilterStage getFirstStage()
{
return null;
}
});
StructuredEvent _recvd = _mesg.toStructuredEvent();
assertEquals(testStructured_.header.fixed_header.event_name,
_recvd.header.fixed_header.event_name);
assertEquals(testStructured_.remainder_of_body, _recvd.remainder_of_body);
assertEquals(testStructured_.remainder_of_body, _recvd.remainder_of_body);
}
@Test
public void testWrappedAnyToAny() throws Exception
{
StructuredEvent _wrappedAny = new StructuredEvent();
EventHeader _header = new EventHeader();
FixedEventHeader _fixed = new FixedEventHeader();
_fixed.event_name = "";
_fixed.event_type = new EventType("", "%ANY");
_header.fixed_header = _fixed;
_header.variable_header = new Property[0];
_wrappedAny.header = _header;
_wrappedAny.filterable_data = new Property[0];
_wrappedAny.remainder_of_body = testPerson_;
Message _mesg = messageFactory_.newMessage(_wrappedAny, new IProxyConsumer()
{
public boolean getStartTimeSupported()
{
return false;
}
public boolean getStopTimeSupported()
{
return false;
}
public FilterStage getFirstStage()
{
return null;
}
});
assertEquals(testPerson_, _mesg.toAny());
}
@Before
public void setUp() throws Exception
{
testUtils_ = new NotificationTestUtils(getORB());
messageFactory_ = new DefaultMessageFactory(getORB(), getConfiguration());
testPerson_ = testUtils_.getTestPersonAny();
testStructured_ = new StructuredEvent();
EventHeader _header = new EventHeader();
FixedEventHeader _fixed = new FixedEventHeader();
_fixed.event_name = "eventname";
_fixed.event_type = new EventType("domain", "type");
_header.fixed_header = _fixed;
_header.variable_header = new Property[0];
testStructured_.header = _header;
testStructured_.filterable_data = new Property[0];
testStructured_.remainder_of_body = getORB().create_any();
}
}