Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/objectweb/jtests/jms/conform/message/properties/MessagePropertyTest.java


1   /*
2    * JORAM: Java(TM) Open Reliable Asynchronous Messaging
3    * Copyright (C) 2002 INRIA
4    * Contact: joram-team@objectweb.org
5    * 
6    * This library is free software; you can redistribute it and/or
7    * modify it under the terms of the GNU Lesser General Public
8    * License as published by the Free Software Foundation; either
9    * version 2.1 of the License, or any later version.
10   * 
11   * This library is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   * Lesser General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Lesser General Public
17   * License along with this library; if not, write to the Free Software
18   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
19   * USA
20   * 
21   * Initial developer(s): Jeff Mesnil (jmesnil@inrialpes.fr)
22   * Contributor(s): ______________________________________.
23   */
24  
25  package org.objectweb.jtests.jms.conform.message.properties;
26  
27  import org.objectweb.jtests.jms.framework.*;
28  import javax.jms.*;
29  import junit.framework.*;
30  import java.util.Vector;
31  import java.util.Enumeration;
32  
33  /**
34   * Test the <code>javax.jms.Message</code> properties.
35   * <br />
36   *  See JMS Specification, §3.5 Message Properties (p.32-37)
37   *
38   * @author Jeff Mesnil (jmesnil@inrialpes.fr)
39   * @version $Id: MessagePropertyTest.java,v 1.1 2002/04/21 21:15:18 chirino Exp $
40   */
41  public class MessagePropertyTest extends PTPTestCase {
42    
43    /**
44     * Test that any other class than <code>Boolean, Byte, Short, Integer, Long,
45     * Float, Double</code> and <code>String</code> used in the <code>Message.setObjectProperty()</code>
46     * method throws a <code>javax.jms.MessageFormatException</code>.
47     */
48    public void testSetObjectProperty_2() {
49      try {
50        Message message = senderSession.createMessage();
51        message.setObjectProperty("prop", new Vector());
52        fail("§3.5.5 An attempt to use any other class [than Boolean, Byte,...,String] must throw " +
53       "a JMS MessageFormatException.\n");
54      } catch (MessageFormatException e) {
55      } catch (JMSException e) {
56        fail("Should throw a javax.jms.MessageFormatException, not a "+ e);
57      }
58    }
59  
60    /**
61     * if a property is set as a <code>Float</code> with the <code>Message.setObjectProperty()</code>
62     * method, it can be retrieve directly as a <code>double</code> by <code>Message.getFloatProperty()</code>
63     */
64    public void testSetObjectProperty_1() {
65      try {
66        Message message = senderSession.createMessage();
67        message.setObjectProperty("pi", new Float(3.14159f));
68        assertEquals(3.14159f, message.getFloatProperty("pi"),0);
69      } catch (JMSException e) {
70        fail(e);
71      }
72    }
73  
74    /**
75     * Test that a <code>null</code> value is returned by the <code>Message.getObjectProperty()</code> method
76     * if a property by the specified name does not exits.
77     */
78    public void testGetObjectProperty() {
79      try {
80        Message message = senderSession.createMessage();
81        assertEquals("§3.5.5 A null value is returned [by the getObjectProperty method] if a property by the specified " +
82         "name does not exits.\n",
83         null,message.getObjectProperty("prop"));
84      } catch (JMSException e) {
85        fail(e);
86      }
87    }
88  
89    /**
90     * Test that a <code>null</code> value is returned by the <code>Message.getStringProperty()</code> method
91     * if a property by the specified name does not exits.
92     */  
93    public void testGetStringProperty() {
94     try {
95       Message message = senderSession.createMessage();
96       assertEquals("§3.5.5 A null value is returned [by the getStringProperty method] if a property by the specified " +
97        "name does not exits.\n",
98        null,message.getStringProperty("prop"));
99     } catch (JMSException e) {
100      fail(e);
101    } 
102   } 
103 
104   /** 
105    * Test that an attempt to get a <code>double</code> property which does not exist throw
106    * a <code>java.lang.NullPointerException</code>
107    */
108   public void testGetDoubleProperty() {
109     try {
110       Message message = senderSession.createMessage();
111       message.getDoubleProperty("prop");
112       fail("Should raise a NullPointerException.\n");
113     } catch (NullPointerException e) {
114     } catch (JMSException e) {
115       fail(e);
116     } 
117   } 
118   
119   /** 
120    * Test that an attempt to get a <code>float</code> property which does not exist throw
121    * a <code>java.lang.NullPointerException</code>
122    */
123   public void testGetFloatProperty() {
124    try {
125      Message message = senderSession.createMessage();
126      message.getFloatProperty("prop");
127      fail("Should raise a NullPointerException.\n");
128    } catch (NullPointerException e) {
129    } catch (JMSException e) {
130      fail(e);
131    } 
132   } 
133 
134   /** 
135    * Test that an attempt to get a <code>long</code> property which does not exist throw
136    * a <code>java.lang.NumberFormatException</code>
137    */
138   public void testGetLongProperty() {
139    try {
140      Message message = senderSession.createMessage();
141      message.getLongProperty("prop");
142      fail("Should raise a NumberFormatException.\n");
143    } catch (NumberFormatException e) {
144    } catch (JMSException e) {
145      fail(e);
146    } 
147   } 
148 
149   /** 
150    * Test that an attempt to get a <code>int</code> property which does not exist throw
151    * a <code>java.lang.NumberFormatException</code>
152    */
153   public void testGetIntProperty() {
154    try {
155      Message message = senderSession.createMessage();
156      message.getIntProperty("prop");
157      fail("Should raise a NumberFormatException.\n");
158    } catch (NumberFormatException e) {
159    } catch (JMSException e) {
160      fail(e);
161    } 
162   } 
163 
164   /** 
165    * Test that an attempt to get a <code>short</code> property which does not exist throw
166    * a <code>java.lang.NumberFormatException</code>
167    */
168   public void testGetShortProperty() {
169    try {
170      Message message = senderSession.createMessage();
171      message.getShortProperty("prop");
172      fail("Should raise a NumberFormatException.\n");
173    } catch (NumberFormatException e) {
174    } catch (JMSException e) {
175      fail(e);
176    } 
177   } 
178 
179   /** 
180    * Test that an attempt to get a <code>byte</code> property which does not exist throw
181    * a <code>java.lang.NumberFormatException</code>
182    */
183   public void testGetByteProperty() {
184    try {
185      Message message = senderSession.createMessage();
186      message.getByteProperty("prop");
187      fail("Should raise a NumberFormatException.\n");
188    } catch (NumberFormatException e) {
189    } catch (JMSException e) {
190      fail(e);
191    } 
192   } 
193   
194   /** 
195    * Test that an attempt to get a <code>boolean</code> property which does not exist 
196    * returns <code>false</code>
197    */
198   public void testGetBooleanProperty() {
199    try {
200      Message message = senderSession.createMessage();
201      assertEquals(false, message.getBooleanProperty("prop"));
202    } catch (JMSException e) {
203      fail(e);
204    } 
205   } 
206 
207   /**
208    * Test that the <code>Message.getPropertyNames()</code> method does not return
209    * the name of the JMS standard header fields (e.g. <code>JMSCorrelationID</code>.
210    */
211   public void testGetPropertyNames() {
212     try {
213       Message message = senderSession.createMessage();
214       message.setJMSCorrelationID("foo");
215       Enumeration enum = message.getPropertyNames();
216       assertTrue("§3.5.6 The getPropertyNames method does not return the names of " +
217      "the JMS standard header field [e.g. JMSCorrelationID].\n",
218      !enum.hasMoreElements()); 
219     } catch (JMSException e) {
220       fail(e);
221     }
222   }
223 
224   /**
225    * Test that the <code>Message.getPropertyNames()</code> method returns an empty
226    * <code>java.util.Enumeration</code> if there is no properties.
227    * <br />
228    * If there are some, test that it properly return their names.
229    */
230   public void testPropertyIteration() {
231     try {
232       Message message = senderSession.createMessage();
233       Enumeration enum = message.getPropertyNames();
234       assertTrue("No property yet defined.\n",
235      !enum.hasMoreElements());
236       message.setDoubleProperty("pi", 3.14159);
237       enum = message.getPropertyNames();
238       assertEquals("One property defined of name 'pi'.\n",
239        "pi", (String)enum.nextElement());
240     } catch (JMSException e) {
241       fail(e);
242     }
243   }
244 
245   /**
246    * Test that the <code>Message.clearProperties()</code> method does not clear the
247    * value of the Message's body.
248    */
249   public void testClearProperties_2() {
250     try {
251       TextMessage message = senderSession.createTextMessage();
252       message.setText("foo");
253       message.clearProperties();
254       assertEquals("§3.5.7 Clearing a message's  property entries does not clear the value of its body.\n",         
255        "foo", message.getText());
256     } catch (JMSException e) {
257       fail(e);
258     }
259   }
260 
261   /**
262    * Test that the <code>Message.clearProperties()</code> method deletes all the 
263    * properties of the Message.
264    */
265   public void testClearProperties_1() {
266     try {
267       TextMessage message = senderSession.createTextMessage();
268       message.setStringProperty("prop", "foo");
269       message.clearProperties();
270       assertEquals("§3.5.7 A message's properties are deleted by the clearProperties method.\n",
271        null, message.getStringProperty("prop"));
272     } catch (JMSException e) {
273       fail(e);
274     }
275   }
276     
277   /** 
278    * Method to use this class in a Test suite
279    */
280   public static Test suite() {
281     return new TestSuite(MessagePropertyTest.class);
282   }
283   
284   public MessagePropertyTest(String name) {
285     super(name);
286   }
287 }
288