KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jacorb > test > notification > typed > TypedProxyPushConsumerImplTest


1 package org.jacorb.test.notification.typed;
2
3 /*
4  * JacORB - a free Java ORB
5  *
6  * Copyright (C) 1997-2003 Gerald Brose.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public
19  * License along with this library; if not, write to the Free
20  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21  */

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 JavaDoc;
37 import org.omg.CORBA.NO_IMPLEMENT JavaDoc;
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 /**
49  * @author Alphonse Bendt
50  * @version $Id: TypedProxyPushConsumerImplTest.java,v 1.7 2005/05/01 21:15:16 alphonse.bendt Exp $
51  */

52 public class TypedProxyPushConsumerImplTest extends NotificationTestCase
53 {
54     private TypedProxyPushConsumerImpl objectUnderTest_;
55
56     private TypedProxyPushConsumer proxyPushConsumer_;
57
58     private final static String JavaDoc 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 JavaDoc
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 JavaDoc name, NotificationTestCaseSetup setup)
97     {
98         super(name, setup);
99     }
100
101     public void testID()
102     {
103         assertEquals(new Integer JavaDoc(10), objectUnderTest_.getID());
104         assertTrue(objectUnderTest_.isIDPublic());
105     }
106
107     public void testGetTypedConsumer() throws Exception JavaDoc
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 JavaDoc
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 JavaDoc exp, Object JavaDoc 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 JavaDoc 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 JavaDoc coff = CoffeeHelper.narrow(proxyPushConsumer_.get_typed_consumer());
165
166         // some extra steps involved as local invocations are not
167
// supported on dsi servants.
168

169         String JavaDoc 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 JavaDoc
179     {
180         assertEquals(ProxyType.PUSH_TYPED, proxyPushConsumer_.MyType());
181     }
182
183     public void testPushAny() throws Exception JavaDoc
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 JavaDoc 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 JavaDoc e)
205         {
206             // expected
207
}
208         
209         controlPushSupplier.verify();
210     }
211
212     public static Test suite() throws Exception JavaDoc
213     {
214         return NotificationTestCase.suite("TypedProxyPushConsumer Tests",
215                 TypedProxyPushConsumerImplTest.class);
216     }
217 }
Popular Tags