1 package org.jacorb.test.notification.typed; 2 3 22 23 import junit.framework.Test; 24 25 import org.easymock.AbstractMatcher; 26 import org.easymock.MockControl; 27 import org.jacorb.notification.OfferManager; 28 import org.jacorb.notification.SubscriptionManager; 29 import org.jacorb.notification.TypedEventMessage; 30 import org.jacorb.notification.engine.TaskProcessor; 31 import org.jacorb.notification.interfaces.Message; 32 import org.jacorb.notification.servant.ITypedAdmin; 33 import org.jacorb.notification.servant.TypedProxyPushConsumerImpl; 34 import org.jacorb.test.notification.NotificationTestCase; 35 import org.jacorb.test.notification.NotificationTestCaseSetup; 36 import org.omg.CORBA.Any ; 37 import org.omg.CORBA.NO_IMPLEMENT ; 38 import org.omg.CosNotification.EventType; 39 import org.omg.CosNotification.EventTypeHelper; 40 import org.omg.CosNotification.Property; 41 import org.omg.CosNotifyChannelAdmin.ProxyType; 42 import org.omg.CosNotifyChannelAdmin.SupplierAdmin; 43 import org.omg.CosNotifyComm.PushSupplierOperations; 44 import org.omg.CosNotifyComm.PushSupplierPOATie; 45 import org.omg.CosTypedNotifyChannelAdmin.TypedProxyPushConsumer; 46 import org.omg.CosTypedNotifyChannelAdmin.TypedProxyPushConsumerHelper; 47 48 52 public class TypedProxyPushConsumerImplTest extends NotificationTestCase 53 { 54 private TypedProxyPushConsumerImpl objectUnderTest_; 55 56 private TypedProxyPushConsumer proxyPushConsumer_; 57 58 private final static String DRINKING_COFFEE_ID = "::org::jacorb::test::notification::typed::Coffee::drinking_coffee"; 59 60 private MockControl controlAdmin_; 61 62 private ITypedAdmin mockAdmin_; 63 64 private MockControl controlSupplierAdmin_; 65 66 private SupplierAdmin mockSupplierAdmin_; 67 68 public void setUpTest() throws Exception 69 { 70 controlAdmin_ = MockControl.createNiceControl(ITypedAdmin.class); 71 mockAdmin_ = (ITypedAdmin) controlAdmin_.getMock(); 72 mockAdmin_.getProxyID(); 73 controlAdmin_.setReturnValue(10); 74 75 mockAdmin_.isIDPublic(); 76 controlAdmin_.setReturnValue(true); 77 78 mockAdmin_.getContainer(); 79 controlAdmin_.setReturnValue(getPicoContainer()); 80 81 mockAdmin_.getSupportedInterface(); 82 controlAdmin_.setDefaultReturnValue(CoffeeHelper.id()); 83 84 controlAdmin_.replay(); 85 86 controlSupplierAdmin_ = MockControl.createControl(SupplierAdmin.class); 87 mockSupplierAdmin_ = (SupplierAdmin) controlSupplierAdmin_.getMock(); 88 89 objectUnderTest_ = new TypedProxyPushConsumerImpl(mockAdmin_, mockSupplierAdmin_, getORB(), 90 getPOA(), getConfiguration(), getTaskProcessor(), getMessageFactory(), 91 new OfferManager(), new SubscriptionManager(), getRepository()); 92 93 proxyPushConsumer_ = TypedProxyPushConsumerHelper.narrow(objectUnderTest_.activate()); 94 } 95 96 public TypedProxyPushConsumerImplTest(String name, NotificationTestCaseSetup setup) 97 { 98 super(name, setup); 99 } 100 101 public void testID() 102 { 103 assertEquals(new Integer (10), objectUnderTest_.getID()); 104 assertTrue(objectUnderTest_.isIDPublic()); 105 } 106 107 public void testGetTypedConsumer() throws Exception 108 { 109 Coffee coffee = CoffeeHelper.narrow(proxyPushConsumer_.get_typed_consumer()); 110 111 assertNotNull(coffee); 112 113 assertTrue(coffee._is_a(CoffeeHelper.id())); 114 } 115 116 public void testInvokeDrinkingCoffee() throws Exception 117 { 118 MockControl controlTaskProcessor = MockControl.createControl(TaskProcessor.class); 119 TaskProcessor mockTaskProcessor = (TaskProcessor) controlTaskProcessor.getMock(); 120 121 TypedEventMessage message = new TypedEventMessage(); 122 Message handle = message.getHandle(); 123 124 mockTaskProcessor.processMessage(handle); 125 controlTaskProcessor.setMatcher(new AbstractMatcher() 126 { 127 protected boolean argumentMatches(Object exp, Object act) 128 { 129 Message mesg = (Message) exp; 130 131 assertEquals(Message.TYPE_TYPED, mesg.getType()); 132 133 try 134 { 135 Property[] _props = mesg.toTypedEvent(); 136 137 assertEquals("event_type", _props[0].name); 138 EventType et = EventTypeHelper.extract(_props[0].value); 139 140 assertEquals(CoffeeHelper.id(), et.domain_name); 141 assertEquals(DRINKING_COFFEE_ID, et.type_name); 142 143 assertEquals("name", _props[1].name); 144 assertEquals("jacorb", _props[1].value.extract_string()); 145 146 assertEquals("minutes", _props[2].name); 147 assertEquals(10, _props[2].value.extract_long()); 148 } catch (Exception e) 149 { 150 fail(); 151 } 152 return true; 153 } 154 }); 155 156 controlTaskProcessor.replay(); 157 158 objectUnderTest_ = new TypedProxyPushConsumerImpl(mockAdmin_, mockSupplierAdmin_, getORB(), 159 getPOA(), getConfiguration(), mockTaskProcessor, getMessageFactory(), 160 new OfferManager(), new SubscriptionManager(), getRepository()); 161 162 proxyPushConsumer_ = TypedProxyPushConsumerHelper.narrow(objectUnderTest_.activate()); 163 164 org.omg.CORBA.Object coff = CoffeeHelper.narrow(proxyPushConsumer_.get_typed_consumer()); 165 166 169 String coffString = coff.toString(); 170 171 Coffee coffee = CoffeeHelper.narrow(getClientORB().string_to_object(coffString)); 172 173 coffee.drinking_coffee("jacorb", 10); 174 175 controlTaskProcessor.verify(); 176 } 177 178 public void testMyType() throws Exception 179 { 180 assertEquals(ProxyType.PUSH_TYPED, proxyPushConsumer_.MyType()); 181 } 182 183 public void testPushAny() throws Exception 184 { 185 MockControl controlPushSupplier = MockControl.createControl(PushSupplierOperations.class); 186 PushSupplierOperations mockPushSupplier = (PushSupplierOperations) controlPushSupplier 187 .getMock(); 188 189 controlPushSupplier.replay(); 190 191 PushSupplierPOATie tie = new PushSupplierPOATie(mockPushSupplier); 192 193 proxyPushConsumer_.connect_typed_push_supplier(tie._this(getClientORB())); 194 195 Any any = getORB().create_any(); 196 197 any.insert_string("push"); 198 199 try 200 { 201 proxyPushConsumer_.push(any); 202 203 fail("TypedProxyPushConsumer shouldn't support untyped push"); 204 } catch (NO_IMPLEMENT e) 205 { 206 } 208 209 controlPushSupplier.verify(); 210 } 211 212 public static Test suite() throws Exception 213 { 214 return NotificationTestCase.suite("TypedProxyPushConsumer Tests", 215 TypedProxyPushConsumerImplTest.class); 216 } 217 } | Popular Tags |